# 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//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. 未确认授权来源的字体、二进制与业务素材没有被一起公开