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:15
    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/teslamate)执行以下命令即可安装:

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

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

在 docker-compose.yml 文件所在目录(比如是/etc/docker/teslamate)新建文件 bck-teslamate.sh,拷贝以下代码并修改相应路径,然后赋予此文件执行权限 # chmod 0755 bck-teslamate.sh 或 # chmod +x bck-teslamate.sh

#!/bin/bash

# 启用严格模式,当脚本遇到错误时将立即停止,并不会继续执行后续的命令,脚本会打印出相应的错误信息以方便排查
set -e

echo "------开始执行teslamate备份脚本------"

echo "1.进入docker-compose.yml文件所在目录..."
cd /etc/docker/teslamate

echo "2.开始执行官方备份命令..."
docker compose exec -T database pg_dump -U teslamate teslamate > ./teslamate.bck

echo "3.备份完成,开始拷贝备份文件到另外一个目录进行二次备份..."
cp ./teslamate.bck /home/xxx/teslamate/teslamate.bck

echo "4.备份文件拷贝完成,进行目录详细列表..."
ls -al /etc/docker/teslamate && ls -al /home/xxx/teslamate

echo "5.目录列表完成,请检查以上两个目录中备份文件的时间和数据是否正确..."

echo "------备份脚本执行完毕!不要忘记经常使用我进行备份哟!------"

ssh进入 bck-teslamate.sh 所在目录直接进行备份的命令

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

输入密码进行备份,备份完成后脚本会对备份文件所在目录的文件进行详细列表显示,可以检查备份文件的日期和大小是否有误。也可以把此脚本加入 contab 定期执行备份

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

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

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

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

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

 cd /etc/docker/teslamate

# 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

中文文档地址:docs.teslamate.com.cn/docs/introduction

注:2023.11.14更新完善 bck-teslamate.sh 备份脚本,另外 docker-compose 命令升级为 docker compose

docker compose V1版本的命令为:docker-compose xxx,

V2版本为:docker compose xxx,teslamate官方文档在v1.27.4版本发布时更新了此命令

以上 docker-compose.yml 文件及命令最好参照官方文档docker部分,以免本站更新不及时与新版官方版本冲突造成困扰