您需要已经通过 Docker 成功部署了 TeslaMate。本服务的数据库将连接到您现有的 TeslaMate 数据库。
您可以通过以下任一方式安装 tmate-api 服务端:
docker-compose.yml)将以下服务配置添加到之前您部署 TeslaMate 时的 docker-compose.yml 文件中的 services 部分:
services:
# 您现有的服务配置
# 添加 tmate-api 服务
tmate-api:
image: gdzhujun933/tmate-api:latest
container_name: tmate-api
restart: unless-stopped
environment:
- DB_HOST=database
- DB_PORT=5432 # 与teslamate相同,默认5432
- DB_NAME=teslamate # 与teslamate相同
- DB_USER=teslamate # 与teslamate相同
- DB_PASS=your_teslamate_db_password # 必须与teslamate设置的完全相同
- API_KEY=your_secret_api_key_here # 自行设置,后续app中需要填入
ports:
- "9999:8080" # 可修改为其他端口
注意:
DB_HOST 指向的是您 Docker Compose 文件中定义的 TeslaMate
数据库服务的名称(通常是 database)。your_teslamate_db_password 替换为您的 TeslaMate 数据库密码。your_secret_api_key_here 替换为您自定义的 API 密钥。tmate-api 服务也通过 networks
指令连接到相同的网络。run 命令快速部署docker run -d \
--name tmate-api \
--network docker_default \ # 重要参数不能乱填,否则导致与teslamate不在一个网络内无法连上数据库
-p 9999:8080 \
--restart unless-stopped \
-e DB_HOST=database \
-e DB_PORT=5432 \
-e DB_NAME=teslamate \
-e DB_USER=teslamate \
-e DB_PASS=your_teslamate_db_password \
-e API_KEY=your_secret_api_key_here \
gdzhujun933/tmate-api:latest
network: 填之前用 docker network ls 命令查看当前的网络清单。以 Ubuntu 为例,查询结果可能是:
root@teslamate:/home/ubuntu# docker network ls
NETWORK ID NAME DRIVER SCOPE
acfe0f8b26af bridge bridge local
9097dde69d15 host host local
0b43f3509fc9 none null local
fa48b522c33c ubuntu_default bridge local
那么就应该改成 --network ubuntu_default。
DB_PASS: 必须与您部署 TeslaMate 时为数据库设置的
POSTGRES_PASSWORD 或 DATABASE_PASS 完全相同。API_KEY: 您自定义的 API 密钥(Token)。后续在 App 的设置中需要填入此值以进行验证。
注意:
--network docker_default: 确保此服务与您的 TeslaMate database 容器在同一个 Docker
网络中,以便能够通过服务名 database 访问数据库。如果您的 TeslaMate 使用了不同的网络名称,请替换
docker_default。-p 9999:8080: 将宿主机的 9999 端口映射到容器的 8080 端口。您可以根据需要修改宿主机端口
9999。your_teslamate_db_password 替换为您的 TeslaMate 数据库密码。your_secret_api_key_here 替换为您自定义的 API 密钥。安装完 App 后,您需要在 App 的设置中填写以下信息才能正常使用:
http://<您的服务器IP或域名>:<端口号>tmate-api 服务部署在 IP 地址为 10.0.0.234 的服务器上,并且您在 Docker
部署时将宿主机端口设置为 9999,则服务器地址应填写为:http://10.0.0.234:9999API_KEY 的值。