Installer Teslamate se fait en quelques commandes simples, à l’image d’un projet DIY accessible à tous. Teslamate, un datalogger open-source, récupère en local les données de votre Tesla (trajets, consommations, charge…) et les présente via une interface web riche en graphiques et statistiques.

L’ensemble tourne sur Docker, ce qui évite d’installer manuellement chaque composant, et reste sécurisé tant qu’il n’est pas exposé à l’extérieur par défaut. Le mode opératoire décrit ci-dessous est inspiré de celui déjà disponible à cette adresse.
- Etape 0 – Rappel des prérequis
- Etape I – Mise à jour de l’environnement
- Etape II – Installation de Teslamate
- Etape III – Création de certificats pour Tesla Proxy
- Etape IV – Démarrage des conteneurs Docker
- Etape V – Configuration de Teslamate
Etape 0 – Rappel des prérequis :
Pour installer Teslamate sur votre environnement (machine virtuelle Azure ou Raspberry Pi 5), il vous faudra disposer de :
- Une machine virtuelle Azure ou Raspberry Pi 5
- Un accès SSH à votre environnement
Avant d’installer Teslamate, commençons par mettre à jour notre environnement.
Etape I – Mise à jour de l’environnement :
Une fois connecté en SSH à votre environnement (Azure ou Raspberry Pi 5), effectuez les commandes suivantes, une par une, afin de préparer ce dernier
Téléchargez et exécutez automatiquement le script d’installation de Docker depuis le site officiel :
curl -sSL https://get.docker.com | sh
Ajoutez l’utilisateur spécifié au groupe « docker » pour permettre l’exécution des commandes Docker sans utiliser sudo :
sudo usermod -aG docker VOTRE_NOM_UTILISATEUR
Rechargez les paramètres de groupe de l’utilisateur dans la session en cours afin d’appliquer la nouvelle appartenance au groupe « docker » :
newgrp docker
Lancez un conteneur de test (hello-world) pour vérifier que Docker est correctement installé et opérationnel :
docker run hello-world
Installez les bibliothèques de développement libffi et libssl, nécessaires pour certaines compilations et dépendances, notamment pour des outils Python :
sudo apt-get install -y libffi-dev libssl-dev
Installez Python 3 ainsi que pip, le gestionnaire de paquets pour Python 3 :
sudo apt-get install -y python3 python3-pip
Désinstallez le paquet python-configparser, souvent redondant ou source de conflits avec la version intégrée dans Python 3 :
sudo apt-get remove python-configparser

Etape II – Installation de Teslamate :
Créez un nouveau répertoire nommé teslamate dans le répertoire courant, puis déplacez-vous dans celui-ci :
mkdir teslamate
cd teslamate/

Créez le fichier docker-compose.yml depuis l’éditeur de texte vi pour permettre son édition :
vi docker-compose.yml

Dans l’éditeur de texte vi, appuyez sur la touche i pour passer en mode édition, puis collez le manifeste ci-dessous. Avant de le copier, pensez à modifier les secrets suivants :
- Secretkey de ENCRYPTION_KEY par 12 caractères ou plus, pour sécuriser votre connexion. Utilisez si besoin Key Generator.
- Mot de passe de DATABASE_PASS (à 3 endroits) par le mot de passe de votre choix.
version: "3.8"
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- ENCRYPTION_KEY=secretkey #replace with a secure key to encrypt your Tesla API tokens
- DATABASE_USER=teslamate
- DATABASE_PASS=#insert your secure database password!
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
ports:
- "4000:4000"
volumes:
- ./import:/opt/app/import
cap_drop:
- all
tesla_http_proxy:
image: tesla/vehicle-command:latest
restart: always
ports:
- "4443:4443"
environment:
- TESLA_HTTP_PROXY_TLS_CERT=/config/tls-cert.pem
- TESLA_HTTP_PROXY_TLS_KEY=/config/tls-key.pem
- TESLA_HTTP_PROXY_HOST=0.0.0.0
- TESLA_HTTP_PROXY_PORT=4443
- TESLA_HTTP_PROXY_TIMEOUT=10s
- TESLA_KEY_FILE=/config/fleet-key.pem
- TESLA_VERBOSE=true
volumes:
- ./tesla_http_proxy/config:/config
database:
image: postgres:16
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD=#insert your secure database password!
- POSTGRES_DB=teslamate
volumes:
- teslamate-db:/var/lib/postgresql/data
grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=#insert your secure database password!
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
ports:
- "3000:3000"
volumes:
- teslamate-grafana-data:/var/lib/grafana
mosquitto:
image: eclipse-mosquitto:2
restart: always
command: mosquitto -c /mosquitto-no-auth.conf
ports:
- "1883:1883"
volumes:
- mosquitto-conf:/mosquitto/config
- mosquitto-data:/mosquitto/data
volumes:
teslamate-db:
teslamate-grafana-data:
mosquitto-conf:
mosquitto-data:
Une fois le manifeste collé, appuyez sur Echap pour quitter le mot édition de vi, puis sauvegardez votre fichier avec la commande suivante, suivie de la touche Entrée :
:wq

Etape III – Création de certificats pour Tesla Proxy :
Sous le dossier teslamate, créez arborescence suivante, puis déplacez-vous-y :
mkdir ./tesla_http_proxy
mkdir ./tesla_http_proxy/config
cd tesla_http_proxy/config/

Créez un certificat auto-signé à l’aide d’OpenSSL :
openssl req -x509 -nodes -newkey ec \
-pkeyopt ec_paramgen_curve:secp521r1 \
-pkeyopt ec_param_enc:named_curve \
-subj '/CN=localhost' \
-keyout tls-key.pem -out tls-cert.pem -sha256 -days 3650 \
-addext "extendedKeyUsage = serverAuth" \
-addext "keyUsage = digitalSignature, keyCertSign, keyAgreement"
Modifiez les permissions des fichiers PEM pour que le propriétaire et le groupe puissent le lire et l’écrire (6), tandis que les autres utilisateurs n’ont qu’un droit de lecture (4) :
sudo chmod 664 *.pem
Générez une clé privée, avec sa clef publique, pour assurer une authentification des commandes via API émises vers la Tesla :
openssl ecparam -name prime256v1 -genkey -noout -out fleet-key.pem
openssl ec -in fleet-key.pem -pubout -out com.tesla.3p.public-key.pem

Etape IV – Démarrage des conteneurs Docker
Depuis le dossier teslamate, démarrez en mode détaché (en arrière-plan) tous les services définis dans le fichier docker-compose.yml :
docker compose up -d

Docker commence par télécharger toutes les images nécessaires aux services définis dans votre fichier docker-compose.yml, afin de s’assurer qu’elles soient disponibles localement pour créer et démarrer les conteneurs :

Attendez et vérifiez le bon démarrage de tous les conteneurs :

Ouvrez le fichier de configuration du service Systemd, nommé teslamate.service, dans l’éditeur de texte vi avec des privilèges administrateur afin de définir comment lancer, arrêter et gérer le service Teslamate.
sudo vi /etc/systemd/system/teslamate.service
En mode édition, collez le code suivant afin d’automatiser la gestion de Teslamate en s’assurant que Docker est prêt avant de lancer l’ensemble des conteneurs en cas de problème, en n’oubliant pas de modifier USER par votre nom d’utilisateur :
[Unit]
Description=TeslaMate Docker Compose Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/home/USER/teslamate
ExecStart=/usr/local/bin/docker compose up -d
ExecStop=/usr/local/bin/docker compose down
Restart=always
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Appuyez sur Echap pour quitter le mot édition, puis sauvegardez votre fichier avec la commande suivante, suivie de la touche Entrée :
:wq

Demandez à systemd de recharger tous ses fichiers de configuration :
sudo systemctl daemon-reload
Configurez systemd pour démarrer automatiquement le service Teslamate au prochain démarrage du système, en créant les liens symboliques nécessaires dans les répertoires d’unités.
sudo systemctl enable teslamate.service

Démarrez et affichez l’état actuel du service Teslamate :
sudo systemctl start teslamate.service
sudo systemctl status teslamate.service

Listez l’ensemble des conteneurs Docker qui sont actuellement en cours d’exécution, en affichant des informations telles que l’ID du conteneur, l’image utilisée, l’état, les ports exposés et le nom du conteneur :
docker ps

Etape V – Configuration de Teslamate :
Dans votre navigateur internet, accédez à l’adresse http://ADRESSE_IP:4000 :

Pour générer les tokens, utilisez un outil comme tesla_auth, téléchargeable sur GitHub :

Lancez l’exécutable tesla_auth.exe, puis authentifiez-vous avec votre compte Tesla :

Entre le code de votre méthode 2FA, si cette dernière est configurée :

Copiez les deux tokens affichés dans l’application tesla_auth :
- Les access tokens servent à authentifier et autoriser directement l’accès aux API et ressources protégées (et sont généralement de courte durée).
- Les refresh tokens permettent d’obtenir de nouveaux access tokens lorsque ceux-ci expirent, assurant ainsi une continuité de session sans nécessiter une réauthentification manuelle.

Collez dans Teslamate les 2 tokens, puis cliquez-ici pour vous authentifier :

Si l’accès est confirmé, Teslamate devrait alors vous afficher la ou les voitures Tesla rattachées à votre compte Tesla :

Bonus : accédez à votre tableau de bord Teslamate via l’adresse http://ADRESSE_IP:3000, dont les identifiants par défaut sont admin/admin :

Une fois connecté pour la première fois, personnalisez le mot de passe de votre compte admin :

Une grande quantité de tableaux de bord y sont disponibles :

Teslamate est maintenant installé, vous pouvez passer à l’étape suivante, consistant à installer et configurer EnergyBoard. Ce dernier va nous permettre de :
- Remonter les informations liées à la production solaire Enphase
- Remonter les informations liées à la charge Tesla
- Envoyer des ordres Tesla via BLE grâce l’application Tesla-control
- Envoyer des ordres Tesla via API grâce au conteneur Tesla Proxy HTTP