本文记录 TeslaMate 通过docker安装|备份|升级|还原 的步骤和相关内容, 为了避免产生不必要的权限问题,以下操作之前最好使用 sudo -i
命令进行提权后进行
安装:建立 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_PASS
和 POSTGRES_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部分,以免本站更新不及时与新版官方版本冲突造成困扰