TeslaMate 通过docker安装|备份|升级|还原

      TeslaMate 通过docker安装|备份|升级|还原已关闭评论

本文记录 TeslaMate 通过docker安装|备份|升级|还原 的步骤和相关内容, 为了避免产生不必要的权限问题,以下操作之前最好使用 sudo -i 命令进行提权后进行

使用我的引荐链接购买特斯拉Tesla产品可获得积分,用于兑换超级充电里程、服饰精品、车辆配件等奖品,点击此处前往官方了解详情。
TeslaMate-Grafana
TeslaMate-Grafana

安装:建立 docker-compose.yml 文件

version: "3"

services:
  teslamate:
    image: teslamate/teslamate:latest
    restart: always
    environment:
      - ENCRYPTION_KEY=**************
      - DATABASE_USER=teslamate
      - DATABASE_PASS=**************
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
    ports:
      - 4000:4000
    volumes:
      - ./import:/opt/app/import
    cap_drop:
      - all

  database:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=teslamate
      - POSTGRES_PASSWORD=**************
      - POSTGRES_DB=teslamate
    volumes:
      - teslamate-db:/var/lib/postgresql/data

  grafana:
    image: teslamate/grafana:latest
    restart: always
    environment:
      - DATABASE_USER=teslamate
      - DATABASE_PASS=**************
      - 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
    volumes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

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

在上述代码中替换掉 DATABASE_PASSPOSTGRES_PASSWORD 的值,在ENCRYPTION_KEY=插入加密密钥(1.27.0版本新加入,用来加密 Tesla API tokens ),然后进入 docker-compose.yml 文件所在目录(比如是/etc/docker)执行以下命令即可安装:

  cd /etc/docker
  docker-compose up -d

备份: 制作备份命令执行文件 bck-teslamate.sh

在 docker-compose.yml 文件所在目录(比如是/etc/docker)新建文件 bck-teslamate.sh,拷贝以下代码并修改相应路径,并且赋予执行权限 # chmod 0755 bck-teslamate.sh 或 # chmod +x bck-teslamate.sh , && 之后跟着的是另外一个命令,即备份后将备份文件拷贝一份到其他的目录,以防万一。

  #!/bin/bash
  docker-compose exec -T database pg_dump -U teslamate teslamate > /etc/docker/teslamate.bck && cp ./teslamate.bck /home/admin/下载/teslamate.bck

ssh进入后直接进行备份的命令

  cd /etc/docker && sudo ./bck-teslamate.sh && ls -al

输入密码进行备份,备份完成后对目录文件进行详细列表显示

升级:如果官方有更新,可以对已安装好的TeslaMate进行升级

使用 docker-compose.yml 文件创建的docker升级非常简单方便, 进入 docker-compose.yml 文件所在目录(比如是/etc/docker),执行以下代码即可对docker镜像进行升级

  cd /etc/docker
  docker-compose pull
  docker-compose up -d

还原:如果出现问题或者换地方重装,可根据官方文档将之前备份的数据进行还原

进入 docker-compose.yml 文件所在目录(比如是/etc/docker),执行以下命令

# Stop the teslamate container to avoid write conflicts(停止 teslamate 容器以避免写冲突)
docker-compose stop teslamate

# Drop existing data and reinitialize(删除现有数据并重新初始化,注意最后一行的有个点)
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';
.

# Restore(恢复备份的数据,注意此步要将teslamate.bck数据备份文件放入docker-compose.yml 文件所在目录)
docker-compose exec -T database psql -U teslamate -d teslamate < teslamate.bck

# Restart the teslamate container(重启 teslamate 容器)
docker-compose start teslamate

全新安装的要开一段时间、充过几次电、收集到足够的数据以后很多数据才会在Grafana中完整呈现。

更多内容可参考官方文档:docs.teslamate.org;项目开源地址:github.com/adriankumpf/teslamate