🚗 Oracle CloudでTeslaMateを構築する方法

it-tech

はじめに

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と組み合わせることで、安定したクラウド環境で運用できるようになります。

コメント

タイトルとURLをコピーしました