本文记录 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: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_PASS
和 POSTGRES_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
