Aller au contenu
bobjouy

[App Tierce] Teslamate : datalogger local et gratuit

Messages recommandés

Bonjour à tous, voici un tutoriel détaillé concernant Teslamate, et plus particulièrement son installation, configuration pas à pas et éventuellement restauration de données, totalement gratuit sur le cloud Oracle.

 

Une ancienne version de ce tutoriel avait déjà été faite par mes soins, et il y avait plusieurs problèmes et choses qui pouvaient être améliorées aisément.

 

Tout d'abord, sachez qu'il n'y a pas besoin de connaissances particulières pour pouvoir utiliser et configurer Teslamate, pour qu'il soit accessible depuis partout, et de manière sécurisée.

 

En suivant ce tutoriel pas à pas je vous garantie que si vous prenez 30 minutes de votre temps vous bénéficierez à ce jour du meilleur outil de suivi de votre Tesla sans aucun problème.

 

Notez que cela s'applique aussi pour ceux qui souhaitent améliorer leur environnement et migrer, peu importe d'où, vers le Cloud Oracle et restaurer leur données.

 

Voici les grands chapitres de ce tutoriel

  1. Prérequis : création de compte Oracle et déploiement d'une instance
  2. Réservation d'un nom de domaine personnalisé, génération du .htaccess pour l'accès sécurisé à Teslamate
  3. Installation de tous les outils nécessaires pour Teslamate sur la machine virtuelle Oracle
  4. Déploiement de Teslamate, et c'est fini
  5. Optionnel : restauration de données, utilisation de Portainer, sauvegarde périodique vers un serveur, utilisation de Watchtower pour les mises à jour automatiques

 

 

Création de compte Oracle et déploiement d'une instance

Pour ceux qui avaient suivi l'ancien tutoriel, vous aurez déjà un compte Oracle et pourrez passer à la suite.

Pour les nouveaux, voici la marche à suivre :

 

  1. Se créer un compte https://signup.cloud.oracle.com/
  2. Dans le mail de vérification, cliquer pour continuer à se créer un compte, rentrer les informations de paiement (vous ne serez pas débité)
  3. Une fois les informations saisies, bien se rappeler du "Nom de compte cloud" qui vous servira à vous connecter
  4. Connectez-vous avec votre compte sur https://cloud.oracle.com/, puis patientez environ 15 minutes
  5. Rendez-vous sur https://cloud.oracle.com/compute/instances/create (l'intérêt d'attendre 15 minutes à l'étape précédente est que parfois ceci n'est pas disponible immédiatement après la création du compte)

Pour la suite, je mets des captures et je commente quand ce n'est pas explicite.

 

1627511002_TeslamateOracle1.thumb.png.c718d95fa943d914b5ad43a26661d977.png

Donner un nom (name) puis vérifier "Always Free Eligible" et Linux 7.9

Descendre et cliquer sur "Save Private Key" puis sur "Create"

2117742719_TeslamateOracle2.thumb.png.8b495a0b4a43271a15d8458192aee0b5.png

 

Cette fenêtre ci-dessous apparait avec le statut "provisioning". Patienter.

238303053_TeslamateOracle3.thumb.png.001a183c8091fb1cdaf9b1789a77c37c.png

 

Une fois le statut passé à "Running", noter la "Public IP Address", puis cliquer sur "Edit" dans Network Security Groups

175759804_TeslamateOracle4.thumb.png.dc7cd35138b4c895f2848880f912dd86.png

 

La fenêtre ci-dessous s'affiche. Cliquer sur "Default Security List for vcn-XXXXXXXXXXXXX"

1992511866_TeslamateOracle5.thumb.png.4aea0f37380270b05720867857b0ae56.png

La fenêtre ci-dessous s'affiche. Cliquer sur "Add Ingress Rules"

67072250_TeslamateOracle6.thumb.png.5bd38b2b6d81b1968a99f040fba8e517.png

La fenêtre ci-dessous s'affiche. Saisir les informations suivantes : source CIDR 0.0.0.0/0. Cliquer sur "Add Ingress Rules". Notez qu'il y a sans doute moyen de n'ouvrir que certains ports et non pas tous, mais pour des raisons de simplification, utilisez cette règle, vous ne serez ainsi jamais embêtés.

image.thumb.png.314e08d6ccf118ee79ef1dcf7f34cdfc.png

Désormais, noter le chemin où vous avez sauvegardé les clés SSH plus haut. Ouvrez un Terminal (macOS/Linux) pour modifier les permissions du fichier 

1293756335_TeslamateOracle9.thumb.png.d8199e001393eb41a878f033f577952f.png

La commande est :

chmod 400 /Users/bob/Downloads/ssh-key-2021-07-22.key 

si le fichier est dans /Users/bob/Downloads/ssh-key-2021-07-22.key, sinon mettez votre chemin à la place.

Sous Windows, je n'ai pas encore testé mais j'ai vu ceci pour faire un chmod 400 : https://gist.github.com/jaskiratr/cfacb332bfdff2f63f535db7efb6df93

Sinon en Powershell ça se fait comme sur cette vidéo.

Une fois ceci fait, on va pouvoir se connecter en SSH à la VM Oracle. Reprenez l'IP (Public IP Address) de la VM que vous avez noté au départ, et connectez-vous à l'aide de la clé privée. La commande est : 

ssh -i /Users/bob/Downloads/ssh-key-2021-07-22.key [email protected]

Avec bien entendu le chemin où vous avez enregistré la clé.

Un message va vous être affiché comme quoi il faut valider la connexion en tapant "yes".

The authenticity of host '152.70.55.253 (152.70.55.253)' can't be established.
ECDSA key fingerprint is SHA256:aQKtHEld+qBwBXePEvY/YUD/sUsvLE2DNMW3JJVClDY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '152.70.55.253' (ECDSA) to the list of known hosts.
[opc@teslamatetest ~]$ 

Une fois validé, vous êtes connectés sur la VM. Bravo à vous.

 

Réservation d'un nom de domaine personnalisé, génération du .htaccess pour l'accès sécurisé à Teslamate

 

La seconde étape consiste à faire le nécessaire pour accéder à Teslamate et Grafana de manière sécurisée, en HTTPS, et avec un nom de domaine personnalisé pour ne pas avoir à retenir une adresse IP.

J'ai choisi pour ce guide d'utiliser les services de no-ip (gratuit et très facile).

Rendez-vous sur https://www.noip.com/sign-up et créez vous un compte, validez l'inscription via le mail reçu, puis connectez-vous et allez sur https://my.noip.com/dynamic-dns.

Ici, cliquez sur "Create Hostname", et remplissez les champs nécessaires comme ci-dessous :

image.thumb.png.d4f2c30261de4dd46c504b49e888b5cf.png

Dans "Hostname", saisissez l'adresse que vous souhaitez utiliser pour vous connecter à Teslamate et Grafana, dans mon exemple je choisis teslamate-autopropre, et en domain je laisse par défaut ddns.net. Ainsi mes adresses seront respectivement : https://teslamate-autopropre.ddns.net pour Teslamate et https://teslamate-autopropre.ddns.net/grafana pour Grafana.

 

Ensuite, rendez-vous sur https://hostingcanada.org/htpasswd-generator/ pour définir un nom d'utilisateur et mot de passe qui vous servira à vous connecter à Teslamate.

Saisissez le nom d'utilisateur de votre choix dans le champ "Username", et le mot de passe que vous utiliserez dans "Password".

Ensuite, dans "Mode", choisissez Bcrypt, et cliquez sur "Create .htpasswd file" :

image.thumb.png.447ece67c17f7c51b9e44c62781e4af6.png

Vous remarquerez alors qu'au-dessus de "Username" est apparu une chaîne de caractère, dans mon exemple il s'agit de : 

autopropre:$2y$10$RLV1ZbYX8N/oPENMhxYhse82jd7IasrV8YziHqF1Ct8Ikq8qhTUcq

Copiez cette chaîne de caractère quelque part où vous pourrez aisément la trouver, elle vous servira plus tard.

 

Installation de tous les outils nécessaires pour Teslamate sur la machine virtuelle Oracle

 

Revenez alors sur votre machine virtuelle Oracle, où vous êtes connectés à la fin de l'étape 1.

Saisissez les commandes suivantes (copier/coller focntionne) : 

sudo su -

sudo yum install -y yum-utils
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

 

Ensuite, il faut éditer un fichier pour y ajouter quelques lignes. Pour ce faire, saisissez : 

sudo vi /etc/yum.repos.d/docker-ce.repo

 

Pour passer en mode insertion taper sur la lettre "i".

Ceci s'affiche

image.thumb.png.bc6380fa6fcaeea0021bd611f1e5589b.png

Collez alors le texte ci-dessous en haut du fichier :

[centos-extras]
name=Centos extras - $basearch
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=1
gpgkey=http://centos.org/keys/RPM-GPG-KEY-CentOS-7

Vérifiez qu'il est bien affiché comme ceci (s'il est collé sans saut de ligne par exemple, vous pouvez en ajouter un en déplaçant votre curseur en fin d'une ligne et en appuyant sur entrée).


Appuyez sur la touche "échap" pour quitter le mode insertion, puis saisir ":wq" pour quitter et sauvegarder les changements (deux points, puis touche "w" puis touche "q", puis entrée)
 

Vous devriez être revenus ici : 

image.thumb.png.d6cf1e8fe3fc7da4ffd3f462c95efee4.png

 

Saisissez alors

sudo yum install docker-ce docker-ce-cli containerd.io

 

Et répondez "y" chaque fois que demandé, pour confirmer les installations diverses. Cela prend quelques minutes, et une fois que tout est fait, saisissez : 

sudo systemctl start docker

Pour installer enfin docker-compose, saisissez :

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

Ensuite, il va falloir créer deux fichiers : .env et .htaccess. Dans un premier temps, créeons le .env.

Il se base sur cette forme

TM_DB_USER=teslamate
TM_DB_PASS=secret
TM_DB_NAME=teslamate
GRAFANA_USER=admin
GRAFANA_PW=admin
FQDN_TM=teslamate-autopropre.ddns.net
TM_TZ=Europe/Paris
[email protected]

La ligne que vous aurez à adapter selon votre configuration est celle qui commence par "FQDN_TM".

Copiez ces lignes dans un bloc-notes, et à la place de "teslamate-autopropre.ddns.net", vous mettrez votre nom de domaine personnalisé que vous avez obtenu à la première étape de ce tutoriel.

Vous pouvez également changer l'adresse e-mail pour en mettre une vous appartenant.

Dans votre terminal de la VM Oracle, saisissez : 

vi .env

Tapez sur "i" pour passer en mode insertion, et collez les lignes dont nous venons tout juste de parler.

Vous aurez alors quelque chose comme cela

image.png.5d0a857cdbfa1b7a28878b76dece9d4b.png

Appuyez sur la touche "échap" pour quitter le mode insertion, puis saisir ":wq" pour quitter et sauvegarder les changements (deux points, puis touche "w" puis touche "q", puis entrée)

 

Nous créons alors deux dossiers utiles pour la suite.

Saisissez

mkdir /etc/acme
mkdir /auth

Et ensuite, reprenez la chaîne de caractères mise de côté à la fin de la première étape à l'aide de https://hostingcanada.org/htpasswd-generator/, qui dans mon cas était : 

autopropre:$2y$10$RLV1ZbYX8N/oPENMhxYhse82jd7IasrV8YziHqF1Ct8Ikq8qhTUcq

Nous allons la coller dans un fichier .htaccess.

Pour ce faire, saisissez

vi /auth/.htpasswd

Et collez la chaîne de caractères, comme d'habitude, en tapant "i" pour passer en mode insertion avant de coller, puis appuyez sur la touche "échap" pour quitter le mode insertion, puis saisir ":wq" pour quitter et sauvegarder les changements (deux points, puis touche "w" puis touche "q", puis entrée)

Pour vérifier que votre fichier est correct, saisissez de nouveau : 

vi /auth/.htpasswd

Et vérifiez que ceci s'affiche (avec votre chaîne de caractères) : 

image.thumb.png.9e4112412b48f71155d291725f64fa45.png

 

Pour quitter, saisissez "q!" et entrée (lettre q, point d'exclamation, et touche entrée).
 

Ensuite, nous allons créer le fichier qui servira à déployer Teslamate, Grafana et tout ce qui est utile, et la bonne nouvelle c'est que pour cela, vous n'avez qu'à faire un copier-coller de ceci

version: "3"

services:
  teslamate:
    image: teslamate/teslamate:latest
    container_name: teslamate
    restart: always
    depends_on:
      - database
    environment:
      - DATABASE_USER=${TM_DB_USER}
      - DATABASE_PASS=${TM_DB_PASS}
      - DATABASE_NAME=${TM_DB_NAME}
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
      - VIRTUAL_HOST=${FQDN_TM}
      - CHECK_ORIGIN=true
      - TZ=${TM_TZ}
    volumes:
      - ./import:/opt/app/import
    labels:
      - "traefik.enable=true"
      - "traefik.port=4000"
      - "traefik.http.middlewares.redirect.redirectscheme.scheme=https"
      - "traefik.http.middlewares.teslamate-auth.basicauth.realm=teslamate"
      - "traefik.http.middlewares.teslamate-auth.basicauth.usersfile=/auth/.htpasswd"
      - "traefik.http.routers.teslamate-insecure.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.teslamate-insecure.middlewares=redirect"
      - "traefik.http.routers.teslamate-ws.rule=Host(`${FQDN_TM}`) && Path(`/live/websocket`)"
      - "traefik.http.routers.teslamate-ws.entrypoints=websecure"
      - "traefik.http.routers.teslamate-ws.tls"
      - "traefik.http.routers.teslamate.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.teslamate.middlewares=teslamate-auth"
      - "traefik.http.routers.teslamate.entrypoints=websecure"
      - "traefik.http.routers.teslamate.tls.certresolver=tmhttpchallenge"
    cap_drop:
      - all

  database:
    image: postgres:13
    container_name: database
    restart: always
    environment:
      - POSTGRES_USER=${TM_DB_USER}
      - POSTGRES_PASSWORD=${TM_DB_PASS}
      - POSTGRES_DB=${TM_DB_NAME}
    volumes:
      - teslamate-db:/var/lib/postgresql/data

  grafana:
    image: teslamate/grafana:latest
    container_name: grafana
    restart: always
    environment:
      - DATABASE_USER=${TM_DB_USER}
      - DATABASE_PASS=${TM_DB_PASS}
      - DATABASE_NAME=${TM_DB_NAME}
      - DATABASE_HOST=database
      - GRAFANA_PASSWD=${GRAFANA_PW}
      - GF_SECURITY_ADMIN_USER=${GRAFANA_USER}
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PW}
      - GF_AUTH_ANONYMOUS_ENABLED=false
      - GF_SERVER_DOMAIN=${FQDN_TM}
      - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s/grafana
      - GF_SERVER_SERVE_FROM_SUB_PATH=true

    volumes:
      - teslamate-grafana-data:/var/lib/grafana
    labels:
      - "traefik.enable=true"
      - "traefik.port=3000"
      - "traefik.http.middlewares.redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.grafana-insecure.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.grafana-insecure.middlewares=redirect"
      - "traefik.http.routers.grafana.rule=Host(`${FQDN_TM}`) && (Path(`/grafana`) || PathPrefix(`/grafana/`))"
      - "traefik.http.routers.grafana.entrypoints=websecure"
      - "traefik.http.routers.grafana.tls.certresolver=tmhttpchallenge"

  mosquitto:
    image: eclipse-mosquitto:2
    container_name: mosquitto
    restart: always
    command: mosquitto -c /mosquitto-no-auth.conf
    ports:
      - 127.0.0.1:1883:1883
    volumes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

  proxy:
    image: traefik:v2.4
    container_name: traefik
    restart: always
    command:
      - "--global.sendAnonymousUsage=false"
      - "--providers.docker"
      - "--providers.docker.exposedByDefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.tmhttpchallenge.acme.httpchallenge=true"
      - "--certificatesresolvers.tmhttpchallenge.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.tmhttpchallenge.acme.email=${LETSENCRYPT_EMAIL}"
      - "--certificatesresolvers.tmhttpchallenge.acme.storage=/etc/acme/acme.json"
    ports:
      - 80:80
      - 443:443
    volumes:
      - /auth/.htpasswd:/auth/.htpasswd
      - /etc/acme/:/etc/acme/
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  teslamate-db:
  teslamate-grafana-data:
  mosquitto-conf:
  mosquitto-data:

 

Copiez donc le contenu détaillé ci-dessus, et saisissez sur la VM Oracle

vi docker-compose.yml

Puis, comme vous en avez désormais l'habitude, tapez sur "i" pour passer en mode insertion, et collez le tout. 

Appuyez sur la touche "échap" pour quitter le mode insertion, puis saisir ":wq" pour quitter et sauvegarder les changements (deux points, puis touche "w" puis touche "q", puis entrée).

Pour vérifier que votre fichier est correct, saisissez de nouveau : 

vi docker-compose.yml

Vous devriez alors voir ceci : 

image.thumb.png.fd55aabf4a69c6748e47eaa2246f92d7.png

Saisissez alors :q! pour quitter.

 

Déploiement de Teslamate, et c'est fini

Il ne reste qu'à lancer Teslamate, à l'aide d'une seule commande à coller : 

sudo docker-compose up -d

Vous verrez alors tout ceci s'afficher : 

image.png.c326d475f84032063b06ec8009048623.png

 

Grafana sera accessible immédiatement à l'adresse https://[votre nom de domaine personnalisé]/grafana, avec comme nom d'utilisateur et comme mot de passe : admin. Ils seront à modifier suite à la première connexion.

 

Après quelques minutes tout au plus, Teslamate sera aussi accessible à l'adresse https://[votre nom de domaine personnalisé].

 

Vous aurez une fenêtre comme ceci qui s'affiche : 

image.png

 

Où il vous faudra saisir votre nom d'utilisateur et mot de passe renseignés au début de ce tutoriel lors de la création du .htaccess (via https://hostingcanada.org/htpasswd-generator/).

 

Une fois saisis, en cliquant sur "Connexion", Teslamate vous invitera à saisir vos identifiants Tesla (ou des jetons).

 

Pour ceux qui veulent utiliser des jetons, l'application Android de @denouche est parfaite pour ça.

 

Ainsi s'achève ce tutoriel pour l'immense majorité d'entre vous, vous aurez donc, au terme de ce qu'il vient de se passer : 

  • Teslamate opérationnel, gratuitement, accessible depuis l'internet
  • Accès sécurisé via nom d'utilisateur et mot de passe pour Teslamate et Grafana
  • Nom de domaine personnalisé pour accéder à Teslamate et Grafana
  • La fierté d'avoir réussi à faire tout ça par vous même alors que vous ne vous en croyiez pas capable

 

Pour ceux qui veulent aller un petit peu plus loin, la suite de ce tutoriel va vous proposer : 

  1. Ajouter des dashboards en français, et avec des détails et choses intéressantes
  2. Restaurer les données depuis un ancien Teslamate pour ne pas perdre votre historique
  3. Paramétrer une sauvegarde périodique vers un serveur FTP
  4. Mettre à jour automatiquement Teslamate avec Watchtower
  5. Gérer ces conteneurs via Portainer 

 

Ajouts de dashboards en français et customisés

Cette étape est extrêmement simple et je recommande à tous de le faire, vous aurez ainsi des dashboards différents, utiles et, n'ayons pas peur des mots, indispensables (comme je les ai créé vous comprendrez que je les trouve super...).

 

Sur Grafana, en étant connecté en tant qu'admin, passez le curseur sur l'icône de gauche en forme de "+", et cliquez sur import. (ou bien, plus simple, https://(votre nom de domaine)/grafana/dashboard/import).

Ceci s'affiche

image.thumb.png.360a2ecc50b01f3f348f10c5a5b88018.png

 

Vous utiliserez l'option Upload JSON File.

Les dashboards sont disponibles dans le message épinglé en haut de la page.

cliquez sur "Upload JSON File", puis donnez votre fichier JSON (un à la fois).

Vérifiez que le dossier correspond à ce que vous souhaitez, et que la source (là où il y a le petit éléphant) est bien Teslamate. Cliquez alors sur "Import".

 

Et voilà, vous aurez par exemple ce dashboard "Résumé" : 

image.thumb.png.e302f46b30161f8a24944910b6c7a184.png

Ou encore le fameux "Trajets" qui permet de filtrer pour comparer des trajets similaires

image.thumb.png.5a35d92269b77abf484b30ed3381168a.png

 

Restaurer les données depuis un ancien Teslamate pour ne pas perdre votre historique

Nous allons maintenant voir comment récupérer les données d'une ancienne instance Teslamate, par exemple pour passer de l'ancien tutoriel à ce nouveau, et ainsi avoir tous les accès de manière sécurisée.

 

C'est relativement simple et rapide, et cela consiste en trois étapes

  1. Arrêt de l'ancien Teslamate, puis sauvegarde.
  2. Envoi de la sauvegarde sur un serveur où l'on peut la récupérer depuis la nouvelle instance de Teslamate.
  3. Restauration des données.

 

Connectez-vous à votre ancienne instance de Teslamate, qu'elle soit sur votre NAS, une VM Oracle, ou tout autre endroit.

Suivez alors le guide de Teslamate : https://docs.teslamate.org/docs/maintenance/backup_restore/ pour faire une sauvegarde.

Saisissez la commande suivante : 

sudo docker-compose exec -T database pg_dump -U teslamate teslamate > /backuplocation/teslamate.bck

En remplaçant "backuplocation" par le chemin où se trouvera votre sauvegarde.

Une fois ceci fait, vous pouvez arrêter Teslamate pour ne pas qu'il y ait de conflits

sudo docker-compose stop teslamate

 

Il faut alors pousser la sauvegarde vers un serveur FTP par exemple, depuis lequel vous pourrez la récupérer sur la nouvelle instance Teslamate.

Je pars du principe que vous avez déjà un serveur FTP accessible à l'adresse "votreserveur" et où vous disposez d'un utilisateur "user" avec le mot de passe "pass" ayant les droits d'accès à ce serveur.

Sur le Teslamate où vous venez de faire la sauvegarde, il faudra saisir : 

sudo curl -s --disable-epsv -v -T"/backuplocation/teslamate.bck" -u"user:pass" "ftp://votreserveur/chemin/"

En adaptant la commande à votre environnement

  • /backuplocation/teslamate.bck à remplacer avec le chemin là où vous avez fait la sauvegarde
  • user:pass à remplacer par l'utilisateur et le mot de passe pour votre serveur ftp
  • votreserveur/chemin/ à remplacer par l'IP ou l'URL de votre serveur FTP et le chemin où vous déposez la sauvegarde

Une fois ceci fait, il faut vous reconnecter sur le "nouveau" Teslamate, pour récupérer la sauvegarde et la restaurer.

 

Pour la récupérer, c'est assez simple, saisissez

sudo curl -u user:pass 'ftp://votreserveur/chemin/teslamate.bck' --output teslamate.bck

En adaptant la commande à votre environnement

  • user:pass à remplacer par l'utilisateur et le mot de passe pour votre serveur ftp
  • votreserveur/chemin/teslamate.bck à remplacer par l'IP ou l'URL de votre serveur FTP et le chemin où vous récupérez la sauvegarde déposée à l'étape précédente

Pour vérifier que vous avez bien le fichier, saisissez :

sudo ls -l

Et vous verrez par exemple : 

-rw-r--r--. 1 root root 447946900 Jan 14 12:48 teslamate.bck

Qui correspond à un fichier teslamate.bck de 447.9 Mo.

 

C'est parfait, vous êtes prêts pour restaurer.

 

Pour ce faire, commencez par arrêtez teslamate : 

sudo docker-compose stop teslamate

Puis saisissez tout ceci d'un seul coup : 

sudo docker-compose exec -T database psql -U teslamate << .
drop schema public cascade;
create schema public;
create extension cube;
create extension earthdistance;
CREATE OR REPLACE FUNCTION public.ll_to_earth(float8, float8)
    RETURNS public.earth
    LANGUAGE SQL
    IMMUTABLE STRICT
    PARALLEL SAFE
    AS 'SELECT public.cube(public.cube(public.cube(public.earth()*cos(radians(\$1))*cos(radians(\$2))),public.earth()*cos(radians(\$1))*sin(radians(\$2))),public.earth()*sin(radians(\$1)))::public.earth';
.

Avec le "." à la fin, et appuyez sur entrée. Une fois que vous avez de nouveau la main, il ne reste qu'à restaurer à l'aide de la commande

sudo docker-compose exec -T database psql -U teslamate -d teslamate < teslamate.bck

La restauration prend quelques minutes, et une fois que vous avez de nouveau la main, saisissez : 

sudo docker-compose start teslamate

Afin de redémarrer Teslamate.

Et voilà, c'est fini, vous avez récupéré toutes vos données.

 

Paramétrer une sauvegarde périodique vers un serveur FTP

 

Ceci est assez utile, simple et sécurisant si vous avez à disposition un serveur FTP chez vous. De cette manière, si un jour votre Teslamate ne fonctionne plus, ou bien que vous souhaitez migrer vers un autre environnement en toute simplicité et sans perte de données, vous aurez des sauvegardes régulières vous permettant de le faire.

 

L'idée est de créer un script s'exécutant de manière périodique, envoyant une sauvegarde de Teslamate compressée (taux de réduction de l'ordre de un pour huit d'après mes quelques tests) pour ne pas prendre trop de place.

 

Pour ce faire, copiez de côté dans un bloc note ce script : 

#!/bin/bash

SERVER="votreserveurftp"         
USERNAME="user"   
PASSWORD="pass"              

TIMESTAMP=`/bin/date +%Y-%m-%d-%H%M`
BACKUPFILEDIR="teslamate_backup_$TIMESTAMP.tar.gz"

cd /home/root/
sudo docker-compose exec -T database pg_dump -U teslamate teslamate > /home/root/teslamate.bck


    sudo tar -zcvf /tmp/$BACKUPFILEDIR /home/root/

    sudo curl -s --disable-epsv -v -T"/tmp/$BACKUPFILEDIR" -u"$USERNAME:$PASSWORD" "ftp://$SERVER/"

    /bin/rm /tmp/$BACKUPFILEDIR
    /bin/rm /home/root/teslamate.bck
          

Et modifiez les paramètres en fonction de votre installation : 

  • votreserveurftp : adresse ou URL de votre serveur FTP (avec le chemin, par exemple ce sera monserveurftp.com/teslamate/sauvegarde, si vous le stocker dans /teslamate/sauvegarde)
  • user : nom d'utilisateur du serveur FTP
  • pass : mot de passe pour l'utilisateur du serveur FTP

Une fois que tout est modifié pour coller à votre environnement, copiez tout ça et mettez le par exemple dans /home/backup.sh en saisissant : 

vi home/backup.sh

Puis en tapant "i" pour passer en mode insertion, et en collant le tout.

Appuyez sur échap pour quitter le mode insertion.

Quittez en sauvegardant en saisissant "!wq".

Pour tester que cela est bien fonctionnel, saisissez dans le terminal : 

sh /home/backup.sh

Après quelques instants, vous voyez que tout est correct : 

sh /home/backup.sh
tar: Removing leading `/' from member names
/home/opc/backup/
/home/opc/backup/teslamate.bck
* About to connect() to port 21 (#0)
*   Trying ...
* Connected to  port 21 (#0)
< 220 FTP server ready.
> USER user
< 331 Password required for user.
> PASS pass
< 230 User user logged in.
> PWD
< 257 "/" is current directory.
* Entry path is '/'
> CWD teslamate-backup
* ftp_perform ends with SECONDARY: 0
< 250 CWD command successful.
> CWD user
< 250 CWD command successful.
> PASV
* Connect data stream passively
< 227 Entering Passive Mode ()
*   Trying ...
* Connecting to  () port 
* Connected to 21 (#0)
> TYPE I
< 200 Type set to I.
> STOR teslamate_backup_2022-01-15-1253.tar.gz
< 150 Opening BINARY mode data connection for 'teslamate_backup_2022-01-15-1253.tar.gz'.
} [data not shown]
* We are completely uploaded and fine
* Remembering we are in dir "teslamate-backup/"
< 226 Transfer complete.
* Connection #0 to host thugerie.synology.me left intact
/home/backup.sh: line 27: /root: Is a directory

Tout est OK, nous pouvons alors ajouter ceci dans une tâche périodique.

Saisissez : 

crontab -e

pour ouvrir la crontab, et ajoutez par exemple cette ligne (tapez "i" pour passer en mode insertion) 

0 2 * * * sudo sh /home/backup.sh

Pour exécuter le script de sauvegarde tous les jours à 02:00.

 

C'est terminé.

 

 Mettre à jour automatiquement Teslamate avec Watchtower
 

Pour pouvoir mettre à jour automatiquement Teslamate, vous pouvez installer Watchtower, qui est un conteneur qui va surveiller périodiquement les autres conteneurs présents, et les mettre à jour quand une nouvelle version est disponible. Si cela est très pratique, quelques exemples récents montrent que l'on peut avoir une déconvenue, donc choisissez cela en connaissance de cause.

 

Pour installer watchtower, rien de plus simple.

Utilisez le contenu suivant

watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    restart: always
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
    environment:
      - TZ=Europe/Paris
      - WATCHTOWER_LIFECYCLE_HOOKS=1 # Enable pre/post-update scripts
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_SCHEDULE=0 30 3 * * *

Que vous pourrez coller dans un docker-compose.yml (soit un nouveau à créer dans un nouveau dossier, soit celui de Teslamate si vous souhaitez), comme toujours par exemple à l'aide de cette commande

sudo vi docker-compose.yml

Puis en appuyant sur "i" pour passer en mode insertion, et en collant ces lignes.

Une fois ceci fait, saisissez : 

sudo docker-compose up -d

Et voilà, tous les jours à 03:30:00 watchtower ira vérifier les conteneurs, et les mettra à jour au besoin. De cette manière vous aurez toujours Teslamate à jour. Pour modifier la périodicité à votre convenance, vous n'avez qu'à changer la dernière ligne 

      - WATCHTOWER_SCHEDULE=0 30 3 * * *

Avec le premier item qui est les secondes, le deuxième les minutes, le troisième les heures, le quatrième le jour, etc. * signifie "tous", donc par exemple 03:30:00 tous les jours.

Gérer ces conteneurs via Portainer 

 

Portainer est une interface graphique permettant de gérer des conteneurs aisément, et d'en voir notamment les logs très facilement, ce qui peut s'avérer utile dans bien des cas.

 

Pour déployer Portainer, il suffit de lancer cette commande

docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 \
    --name=portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    cr.portainer.io/portainer/portainer-ce:2.9.3

Vous aurez alors Portainer qui sera utilisable sur un navigateur web, en y accédant via https://(votre IP ou nom de domaine personnalisé):9443.

 

Depuis cette interface web, une fois que vous vous serez connecté, vous verrez l'ensemble des conteneurs actuellement en route : 

image.thumb.png.b4344d47404da1d4e4759f4843bac8de.png

 

L'avantage, est que par exemple s'il vous faut redémarrer un conteneur, ou consulter les logs, ceci se fait en un clic : 

image.thumb.png.10ee1f32eaabc07c758a1835ec9ef544.png

 

Notez que si vous avez déjà Portainer qui tourne ailleurs, et que vous souhaitez uniquement ajouter vos nouveaux conteneurs déployés sur le cloud Oracle à votre environnement existant, il vous suffit de déployer "portainer-agent" uniquement, via cette commande

docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes cr.portainer.io/portainer/agent:2.9.3

Et ensuite pour ajouter à votre Portainer déjà existant, il suffit d'aller dans "Environments", puis en ajouter un : 

image.thumb.png.c65b241725b38ddd12cd14271af8f1c9.png 

En lui donnant un nom et l'URL où il est joignable (IP ou adresse).

Modifié par bobjouy

Partager ce message


Lien à poster
Partager sur d’autres sites

Suite à un poste de @Valtrius, j'ai découvert Teslamate dont le github est ici :

 

https://github.com/adriankumpf/teslamate

 

Excellent petit outil qui permet de suivre et conserver ses données localement, sans les exporter sur un site on ne sait où.

Je l'ai installé sur un NAS QNAP, c'est absolument enfantin!

 

Récupérer le docker-compose.yml et l'adapter à ses besoins (IP du NAS, password ...) et lancer un "docker-compose up -d" dans le même dossier. Les différents docker vont être installés et il suffira d'entrer ses identifiants sur http://ip-du-nas:4000 qui présente un résumé de l'état du véhicule :

image.png.def032a616b62f158bbc7a0cb8fe14ef.png

 

Et ensuite suivre ses relevés en détail sur http://ip-du-nas:3000 :

 

Une fin de charge : (443.80km/90%)

 

image.thumb.png.df1eb0cd4b027ee4868a95c0ad5d52d4.png

 

image.thumb.png.ff94e76ac61d441ab772db8e75c288e2.png

 

A voir par la suite quand j'aurai plus de données, le suivi des trajets etc ... il y a pas mal d'écrans :

 

image.png.7ead6149da1d4aa6c8c8861660565a0a.png

 

Et un overview bien sympa :

 

image.thumb.png.b211375de43f3c11b678f1cd3fdf0f51.png

 

Modifié par bobjouy

Partager ce message


Lien à poster
Partager sur d’autres sites

Elle a bien dormi toute la nuit, les données de mon trajet ce matin ont bien été logguées (capture ce soir)

Ca fait le taf, un tableau de bord qui rassemble tous les affichages et la possibilité d'agir sur la voiture, et ça sera complet.

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y a 4 heures, Axolotl a dit :

peut être nouveau dans le v1.11.1 que j'ai mise hier

Teslamate m’intéresse mais sur mon QNAP je n’ai pas docker mais container station, pareil pour toi ?

 

Et tu passes les commandes dans le shell depuis quel répertoire le cas échéant ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

 

Pour ceux qui n'ont pas de Synology, qui ne veulent pas s'embêter avec une Raspberry Pi ou autre et qui ont la Freebox Delta (oui ça fait pas mal de conditions !), j'ai testé, fonctionne sans problèmes sur la Freebox Delta en générant une VM sur laquelle installer le docker de TeslaMate.

Effectivement on voit beaucoup de choses intéressantes sur les relevés fournis (notamment pour moi que l'essentiel de ma conso passe dans le mode sentinelle au parking, et que ma conso quotidienne pour les trajets maison<->bureau sont très efficients !).

 

Si besoin de plus d'infos faites-moi signe je pourrai tenter un petit tuto d'installation.

Partager ce message


Lien à poster
Partager sur d’autres sites

Installé cette après midi (docker dans une VM de mon lab@home). Juste le trajet retour boulot pour l'instant dans l'historique mais ça semble pas mal. Par contre faut que je sécurise l'accès à grafana qui se fait sans authentication par défaut ...

Modifié par Belokan

Partager ce message


Lien à poster
Partager sur d’autres sites

il y a une heure, Belokan a dit :

Installé cette après midi (docker dans une VM de mon lab@home). Juste le trajet retour boulot pour l'instant dans l'historique mais ça semble pas mal. Par contre faut que je sécurise l'accès à grafana qui se fait sans authentication par défaut ...

+1

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y a 4 heures, oxton a dit :

Bonjour à tous,

 

Pour ceux qui n'ont pas de Synology, qui ne veulent pas s'embêter avec une Raspberry Pi ou autre et qui ont la Freebox Delta (oui ça fait pas mal de conditions !), j'ai testé, fonctionne sans problèmes sur la Freebox Delta en générant une VM sur laquelle installer le docker de TeslaMate.

Bonsoir,

 

Et tu as installé quoi comme VM sur la Freebox ? On peut en choisir plusieurs ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Question "un peu" HS. Savez-vous si le browser embarqué supporte les certificats "auto signés" ? Éventuellement les certificats Let's encrypt ?

J'utilise de simple certificats auto signés pour me connecter sur mes différents site@home et j'ajoute une exception au besoin mais quand j'essaie de me connecter à l'URL de mon grafana je n'ai ... rien. Juste un page blanche, pas de message, pas de tentative de chargement ... juste rien ?

 

Merci !

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y a 19 heures, Logam a dit :

Bonsoir,

 

Et tu as installé quoi comme VM sur la Freebox ? On peut en choisir plusieurs ?

Bonjour,

 

J'ai installé l'image fournie par Free Ubuntu 19.10, mais ça doit fonctionner avec n'importe quelle Ubuntu ou Debian fournie par Free, ou n'importe quelle distribution Linux à installer depuis une ISO.

 

Petite note si vous choisissez l'image Free Ubuntu 19.10 (peut-être valable également pour les autres, pas testé), au premier démarrage, l'installation mets quelques minutes à se terminer. Pendant ce temps on ne peut pas se loguer avec mot de passe, il faut attendre quelques minutes avant de tenter de se loguer avec mot de passe.

 

Autre astuce, j'accède au portail Grafana en me connectant en VPN depuis l'extérieur de la maison. Ca ne fonctionne pas si on est en ADSL+4G sur la Freebox Delta, il faut désactiver la 4G pour que ça fonctionne.

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y a 20 heures, Belokan a dit :

Question "un peu" HS. Savez-vous si le browser embarqué supporte les certificats "auto signés" ? Éventuellement les certificats Let's encrypt ?

J'utilise de simple certificats auto signés pour me connecter sur mes différents site@home et j'ajoute une exception au besoin mais quand j'essaie de me connecter à l'URL de mon grafana je n'ai ... rien. Juste un page blanche, pas de message, pas de tentative de chargement ... juste rien ?

 

Merci !

Et surtout l’authentification, tu laisses l’accès ouvert sur ton Grafana à tout internet ? ?

Partager ce message


Lien à poster
Partager sur d’autres sites





×
×
  • Créer...
Automobile Propre

Automobile Propre est un site d'information communautaire qui est dédié à tout ce qui concerne l'automobile et l'environnement. Les thématiques les plus populaires de notre blog auto sont la voiture électrique et les hybrides, mais nous abordons également la voiture GNV / GPL, les auto à l'hydrogène, les apects politiques et environnementaux liés à l'automobile. Les internautes sont invités à réagir aux articles du blog dans les commentaires, mais également dans les différents forums qui sont mis à leur dispositon. Le plus populaire d'entre eux est certainement le forum voiture électrique qui centralise les discussions relatives à l'arrivée de ces nouveaux véhicules. Un lexique centralise les définitions des principaux mots techniques utilisés sur le blog, tandis qu'une base de données des voitures (commercialisées ou non) recense les voitures électriques et hybrides.