はじめに
Tesla車両の走行・充電・位置情報・温度・バッテリー状態などを詳細に記録し、時系列で分析できるツールが「TeslaMate」です。
本記事では、Oracle Cloud Infrastructure(OCI)上にTeslaMateを構築し、Tailscaleを使って安全にアクセスできる環境を作る方法を技術者向けに解説します。
TeslaMateとは
TeslaMateは、Tesla車両のログを収集・保存・可視化するためのオープンソースツールです。
以下のコンポーネントで構成されています。
- Mosquitto(MQTT):車両のリアルタイムデータを受信します。
- PostgreSQL:走行・充電・位置情報などのログを永続保存します。
- TeslaMate(Elixir):Tesla APIとMQTTを統合し、データを整理してDBに書き込みます。
- Grafana:保存されたデータをダッシュボードとして可視化します。
TeslaMateでできること
- 走行ログ(距離・速度・消費電力)
- 充電ログ(開始/終了、電力量、料金計算)
- 位置情報(GPS、移動履歴)
- 車両状態(オンライン/スリープ/ドライブ/充電)
- 温度情報(外気温・車内温度)
- バッテリー状態(SOC、推定航続距離)
Tesla車両の行動をすべて記録し、資産として残すことができます。
なぜOracle Cloudに構築するのか
TeslaMateは24時間稼働が前提のシステムです。
そのため、クラウド環境での運用が最適です。
OCIを選ぶ技術的理由
- 無料枠で常時稼働できる(A1.Flex / Ampere)
ARMインスタンスが無料枠で利用でき、運用コストがかかりません。 - 安定性が高い
ローカル環境は停電や故障のリスクがありますが、クラウドならログが安全に保存されます。 - ネットワークが強い
固定IPやセキュリティルールが扱いやすく、Tailscaleとの相性が良いです。 - 構成の再現性が高い
Docker Composeで構築するため、環境差異が少なく再構築が容易です。
Tailscaleを使用する理由
TeslaMateのWeb UIをインターネットに直接公開するのは危険です。
そこでTailscaleを利用します。
- ゼロトラストVPNで安全にアクセスできる
- 導入が簡単で、1コマンドでノード追加できる
- OCIと組み合わせることで外部公開不要の安全な環境が構築できる
構築手順(技術者向け)
1. OCIインスタンス作成
- OS:Ubuntu 22.04
- Shape:VM.Standard.A1.Flex(ARM)
- メモリ:4GB
- ストレージ:50GB
- 開放ポート:
- 3000(Grafana)
- 4000(TeslaMate)
- 1883(MQTT)
2. Tailscaleインストール
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
3. Docker / Docker Composeインストール
sudo apt update
sudo apt install docker.io docker-compose -y
4. docker-compose.yml配置
version: '3'
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- TZ=Asia/Tokyo
ports:
- 4000:4000
depends_on:
- db
- mosquitto
db:
image: postgres:18
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD=teslamate
- POSTGRES_DB=teslamate
- TZ=Asia/Tokyo
volumes:
- teslamate-db:/var/lib/postgresql/data
grafana:
image: grafana/grafana:latest
restart: always
ports:
- 3000:3000
mosquitto:
image: eclipse-mosquitto:2
restart: always
ports:
- 1883:1883
volumes:
teslamate-db:
5. 起動
docker compose up -d
6. PostgreSQL 18のタイムゾーンをJSTに変更
PostgreSQL 18は設定ファイルの場所が特殊です。
以下のパスに追記します。
docker exec -it teslamate-db-1 bash
echo "timezone = 'Asia/Tokyo'" >> /var/lib/postgresql/18/docker/postgresql.conf
exit
docker compose restart db
確認コマンド:
docker exec -it teslamate-db-1 psql -U teslamate -c "SHOW timezone;"
7. Grafanaのデータソース設定
Nameを必ず「TeslaMate」にします(重要)
- Host:db:5432
- Database:teslamate
- User:teslamate
- Password:teslamate
8. ダッシュボードインポート
次のURLからjsonファイルをダウンロードし、インポートしていきます。

teslamate/grafana/dashboards at main · teslamate-org/teslamate
A self-hosted data logger for your Tesla 🚘 – teslamate-org/teslamate
まとめ
Oracle Cloud上にTeslaMateを構築することで、
24時間安定稼働・安全なアクセス・美しい可視化・ログ資産化が可能になります。
特に以下のポイントは見落としやすいため注意が必要です。
- PostgreSQL 18の設定ファイルは
/var/lib/postgresql/18/docker/postgresql.confにある - Grafanaのデータソース名は必ず「TeslaMate」にする
- Tailscaleで外部公開せず安全にアクセスする
- OCIのARM無料枠で常時稼働できる
TeslaMateはTesla車両のログ管理を強力に支援するツールです。
OCIと組み合わせることで、安定したクラウド環境で運用できるようになります。



コメント