Files
abot/docs/Docker部署说明.md

207 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ABOT Docker 部署说明
本文档面向希望通过 Docker / Docker Compose 快速部署 ABOT 的维护者,重点覆盖首次启动、`855 / 864` 配置差异、Dashboard 安全项以及常见上线注意点。
## 1. 部署架构
当前 Compose 方案拆分为三个服务:
- `abot`:主程序与管理后台
- `mariadb`MySQL 兼容数据库
- `redis`:缓存与运行时状态存储
说明:
- `wechat_ipad server` 仍建议运行在宿主机或独立机器
- `abot` 容器通过 `WECHAT_SERVER_URL / WECHAT_SERVER_IP / WECHAT_SERVER_PORT` 连接该服务
- 宿主机上的 `./wechat_ipad/providers` 会映射到容器内,用于保留各 provider 的运行时登录态
## 2. 首次部署
### 2.1 复制环境变量模板
```bash
cp .env.docker.example .env
```
Windows PowerShell
```powershell
Copy-Item .env.docker.example .env
```
### 2.2 至少修改这些变量
基础项:
- `ABOT_DB_PASSWORD`
- `DASHBOARD_PORT`
- `ABOT_DASHBOARD_PASSWORD`
- `ABOT_DASHBOARD_SECRET_KEY`
微信接入项:
- `WECHAT_SERVER_URL`
- `WECHAT_SERVER_IP`
- `WECHAT_SERVER_PORT`
- `WECHAT_SERVER_TYPE`
当你接的是 `864` 风格 server 时,额外必须配置:
- `WECHAT_SERVER_KEY`
若你需要启用 TrendRadar webhook再额外配置
- `ABOT_TRENDRADAR_WEBHOOK_TOKEN`
## 3. 启动命令
```bash
docker compose up -d --build
```
启动完成后:
- Dashboard 默认访问:`http://127.0.0.1:${DASHBOARD_PORT}`
- 日志目录映射到宿主机:`./logs`
- MariaDB / Redis 数据保存在 Docker volume 中
查看状态:
```bash
docker compose ps
```
查看应用日志:
```bash
docker compose logs -f abot
```
## 4. 容器内配置生成逻辑
容器启动时会自动处理两类配置:
### 4.1 `config.yaml`
若容器内不存在 `config.yaml`,入口脚本会自动生成最小可运行模板,并注入:
- 数据库连接
- Redis 连接
- `wechat_ipad` 静态连接参数
- `WECHAT_SERVER_KEY`
### 4.2 `admin/dashboard/config.toml`
若容器内不存在该文件,入口脚本也会自动生成一份基础模板。
即使该文件存在,运行时仍支持通过环境变量覆盖以下敏感项:
- `ABOT_DASHBOARD_USERNAME`
- `ABOT_DASHBOARD_PASSWORD`
- `ABOT_DASHBOARD_SECRET_KEY`
- `ABOT_TRENDRADAR_WEBHOOK_TOKEN`
这样做的目标是:
- 公开仓库不再依赖固定弱口令
- Docker 环境只维护 `.env` 一处
- 非容器部署仍可继续使用本地 TOML 配置
## 5. wechat_ipad 配置说明
### 5.1 静态连接配置
统一通过 `.env` 注入:
- `WECHAT_SERVER_URL`
- `WECHAT_SERVER_IP`
- `WECHAT_SERVER_PORT`
- `WECHAT_SERVER_TYPE`
- `WECHAT_SERVER_KEY`
说明:
- `legacy_855 / 855 / 859` 可不填 `WECHAT_SERVER_KEY`
- `server_864 / 864` 必须提供 `WECHAT_SERVER_KEY`
### 5.2 运行时状态
登录后的 `wxid / device_id / device_name / login_time` 会自动写到 provider 自己的状态文件中:
- 默认路径:`wechat_ipad/providers/<server_type>/runtime_state.toml`
Compose 已将整个 `./wechat_ipad/providers` 目录映射到宿主机,因此:
- 容器重建后状态仍会保留
- `855``864` 的状态天然分离
- 不需要再人工维护历史 `wechat_ipad/config.toml`
## 6. Dashboard 安全建议
建议至少设置以下变量后再对外暴露:
- `ABOT_DASHBOARD_PASSWORD`
- `ABOT_DASHBOARD_SECRET_KEY`
- `ABOT_TRENDRADAR_WEBHOOK_TOKEN`
补充说明:
- 仓库默认密码已不再使用 `admin123`
- 若数据库里已存在管理员账号,登录以数据库中的真实密码为准
- 如果你把 Dashboard 暴露到公网建议再增加反向代理、HTTPS 和 IP / VPN 访问控制
## 7. 常用运维命令
停止服务:
```bash
docker compose down
```
停止并删除数据卷:
```bash
docker compose down -v
```
进入应用容器:
```bash
docker compose exec abot bash
```
重建应用镜像:
```bash
docker compose build --no-cache abot
docker compose up -d
```
## 8. 升级建议
拉取新代码后建议执行:
```bash
docker compose down
docker compose up -d --build
```
若数据库结构发生变更,请先备份数据库与关键挂载目录,再执行升级。
建议重点备份:
- MariaDB 数据卷
- `./logs`
- `./wechat_ipad/providers`
- 你自己的 `.env`
## 9. 开源仓库注意事项
在公开仓库、打包镜像或分享部署模板前,请再次确认:
1. `.env` 未提交
2. `config.yaml` 未提交真实密钥
3. `wechat_ipad/providers/*/runtime_state.toml` 未被误公开
4. Dashboard 密码、Session Secret、Webhook Token 已替换为你自己的值
5. 未确认授权来源的字体、二进制与业务素材没有被一起公开