Interactive Guide
应用部署向导
按照步骤顺序推进。您可以利用底部的『下一步』或是侧边栏进行步骤跳转与回溯。
这个工具能做什么
把 TeslaMate 收到的数据再加工一层,挑出你真正关心的事件,然后推送到手机。下面是它会替你盯的几件事:
停在收费停车场时,下一个计费周期开始前几分钟提醒你,免得超时多扣一段费用。
车停着不动也会持续盯电量。如果待机时段掉电幅度异常(哨兵长开、漏电之类),下次启动车辆时通知你。
每次熄火停好车,自动汇总这趟的里程、能耗、起点终点,发一条通知给你。
充电结束后通知你(充满或者中途断开都算),告诉这次充进了多少电、用了多久。
下车走开后,如果发现车没锁、窗户没关、前后备箱没盖,过几分钟提醒你回去处理。
有新固件可装时通知你;安装完成再发一次确认。胎压偏低也会报。
除了 iOS App,同一条事件可以同时发到飞书、Telegram、钉钉、Discord。开几个就发几路。
App 里能直接看车的实时状态:电量、位置、车内温度、有没有在充电、有没有进哨兵模式。
部署 TeslaMate (服务端前置)
在安装 notify 服务之前,你的服务器上必须已经稳定运行着 TeslaMate 本体,并且 Grafana 必须可以正常访问。Notify 的 App 侧连接依赖 Grafana 数据源代理,因此只有 TeslaMate 本体可用还不够。
建库与配表方案
创建一个文件夹,并编写你的核心 docker-compose.yml 文件:
mkdir teslamate && cd teslamate
nano docker-compose.yml
# ------------- yaml 内容 -------------
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- ENCRYPTION_KEY=secretkey #replace with a secure key to encrypt your Tesla API tokens
- DATABASE_USER=teslamate
- DATABASE_PASS=password #insert your secure database password!
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- all
database:
image: postgres:18-trixie
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD=password #insert your secure database password!
- POSTGRES_DB=teslamate
volumes:
- teslamate-db:/var/lib/postgresql
grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=password #insert your secure database password!
- 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
# ports:
# - 1883:1883
volumes:
- mosquitto-conf:/mosquitto/config
- mosquitto-data:/mosquitto/data
volumes:
teslamate-db:
teslamate-grafana-data:
mosquitto-conf:
mosquitto-data:
在存放 docker-compose.yml 的目录下执行拉取启动即可:docker compose up -d。
部署 Notify 服务
当你的 TeslaMate 正常连上爱车并拉起数据流后,下载脚手架并执行 install.sh 即可。
下载脚手架并安装
标准情况下只需要按顺序执行下面三行命令。
curl -fsSL https://install.cloakmere.cc/setup.sh | bash
cd teslamate-notify
./install.sh
# 如果你给前面的组合服务设定了特殊的 docker 项目名,再改用:
# ./install.sh --project teslamate
这两条脚本到底做了什么
不想黑箱执行?下面是两个脚本各自做的事,按顺序列出来。
setup.sh(脚手架下载)
- 在当前目录建一个
teslamate-notify/文件夹 - 从
install.cloakmere.cc拉两个文件:install.sh、uninstall.sh - 给它们加可执行权限
- 提示你
cd进去执行./install.sh
仅此而已。整个过程不动你机器上任何已经运行的服务。
install.sh(实际部署)
- 扫描机器上正在运行的 docker 容器,找到同时带
teslamate和mosquitto的那个 compose 项目(多套时可用--project指定) - 从 TeslaMate 容器的环境变量里直接读出 MQTT 用户名/密码、PostgreSQL 连接信息,自动写入 notify 的配置——你不需要复制粘贴
- 在 TeslaMate 同一个项目目录下生成
docker-compose.teslamate-notify.yml(伴生文件,不修改你原有的docker-compose.yml),让 notify 加入同一个 docker 网络 - 拉
ghcr.io/cloakmere/teslamate-notify:latest镜像,启动 notify 容器(不发布宿主机端口,只在 Docker 网络内开放 9431) - 自动连接到同项目的 Grafana 容器,注册一个名为
teslamate-notify的 datasource——这样 iOS App 可以通过 Grafana 代理访问 notify,你不用再单独开放公网端口或配置反代
./install.sh --upgrade。这个模式只拉新镜像 + 重建容器,不会动你手改过的 compose 文件(飞书 webhook、地图 key、自定义阈值都保留)。如果想完全用默认配置重置,用 ./install.sh --reset。
持久化数据存在 docker named volume teslamate-notify-data 里。任何 install.sh --upgrade / docker compose pull 都不会动这个卷,升级不丢数据。
卸载
不想用了,或者想重装一次,跑卸载脚本就行:
# 完全卸载(停容器 + 删数据卷 + 删伴生 compose 文件 + 删镜像)
./uninstall.sh
# 卸载但保留 notify 自己的状态数据卷(下次重装能接着用)
./uninstall.sh --keep-volume
# 不交互直接执行(脚本默认会让你确认一次)
./uninstall.sh -y
卸载脚本会做哪些事
- 找到 notify 所在的 docker compose 项目
- 停止并删除
teslamate-notify容器 - 删除
teslamate-notify-data数据卷(除非你加了--keep-volume) - 删除生成的
docker-compose.teslamate-notify.yml文件 - 从 Grafana 里清掉那个
teslamate-notifydatasource - 删除
ghcr.io/cloakmere/teslamate-notify镜像(除非你加了--keep-image)
docker-compose.yml 文件——卸载脚本只清 notify 自己创建的资源,不会碰你的车辆数据和 TeslaMate 部署。
常见维护操作
不需要卸载、只想换个状态时:
- 升级到新版:
./install.sh --upgrade—— 只拉新镜像,保留所有手改配置 - 重置 compose 配置:
./install.sh --reset—— 用默认值覆盖 compose(会丢失手改的 env) - 查看当前版本:
docker exec teslamate-teslamate-notify-1 /app/teslamate-notify version - 看运行日志:
docker logs -f teslamate-teslamate-notify-1 - 备份状态数据:
docker run --rm -v teslamate-notify-data:/data -v "$PWD":/backup alpine tar czf /backup/notify-state-$(date +%F).tar.gz -C /data .