完善开源交付文档与Docker部署安全配置
This commit is contained in:
@@ -1,25 +1,24 @@
|
||||
# ABOT Docker 部署说明
|
||||
|
||||
本文档面向希望通过 Docker / Docker Compose 快速启动 ABOT 的维护者。
|
||||
本文档面向希望通过 Docker / Docker Compose 快速部署 ABOT 的维护者,重点覆盖首次启动、`855 / 864` 配置差异、Dashboard 安全项以及常见上线注意点。
|
||||
|
||||
## 1. 部署架构
|
||||
|
||||
当前仓库提供的 Compose 方案拆分为三个服务:
|
||||
当前 Compose 方案拆分为三个服务:
|
||||
|
||||
- `abot`:应用主程序与管理后台
|
||||
- `abot`:主程序与管理后台
|
||||
- `mariadb`:MySQL 兼容数据库
|
||||
- `redis`:缓存与运行时状态存储
|
||||
|
||||
说明:
|
||||
|
||||
- `wechat_ipad server` 仍建议跑在宿主机或独立机器,不直接内置到应用容器中
|
||||
- `abot` 容器通过 `WECHAT_SERVER_URL` / `WECHAT_SERVER_IP` 连接该服务
|
||||
- `wechat_ipad server` 仍建议运行在宿主机或独立机器
|
||||
- `abot` 容器通过 `WECHAT_SERVER_URL / WECHAT_SERVER_IP / WECHAT_SERVER_PORT` 连接该服务
|
||||
- 宿主机上的 `./wechat_ipad/providers` 会映射到容器内,用于保留各 provider 的运行时登录态
|
||||
|
||||
## 2. 首次启动
|
||||
## 2. 首次部署
|
||||
|
||||
### 2.1 准备环境变量
|
||||
|
||||
复制示例文件:
|
||||
### 2.1 复制环境变量模板
|
||||
|
||||
```bash
|
||||
cp .env.docker.example .env
|
||||
@@ -31,14 +30,29 @@ Windows 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`
|
||||
- `DASHBOARD_PORT`
|
||||
|
||||
当你接的是 `864` 风格 server 时,额外必须配置:
|
||||
|
||||
- `WECHAT_SERVER_KEY`
|
||||
|
||||
若你需要启用 TrendRadar webhook,再额外配置:
|
||||
|
||||
- `ABOT_TRENDRADAR_WEBHOOK_TOKEN`
|
||||
|
||||
## 3. 启动命令
|
||||
|
||||
@@ -46,36 +60,13 @@ Copy-Item .env.docker.example .env
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
启动后:
|
||||
启动完成后:
|
||||
|
||||
- Dashboard 默认访问:`http://127.0.0.1:8888`
|
||||
- Dashboard 默认访问:`http://127.0.0.1:${DASHBOARD_PORT}`
|
||||
- 日志目录映射到宿主机:`./logs`
|
||||
- MariaDB / Redis 数据保存在 Docker volume 中
|
||||
|
||||
## 4. wechat_ipad 配置说明
|
||||
|
||||
现在 `wechat_ipad` 的静态连接参数统一走 `.env`:
|
||||
|
||||
- `WECHAT_SERVER_URL`
|
||||
- `WECHAT_SERVER_IP`
|
||||
- `WECHAT_SERVER_PORT`
|
||||
- `WECHAT_SERVER_TYPE`
|
||||
|
||||
登录后的 `wxid / device_id / device_name` 会自动写入本地状态缓存:
|
||||
|
||||
- 默认路径:`wechat_ipad/providers/<server_type>/runtime_state.toml`
|
||||
- Compose 已将宿主机的 `./wechat_ipad/providers` 目录映射进容器
|
||||
- 因此容器重建后,已有登录态仍会保留
|
||||
|
||||
兼容说明:
|
||||
|
||||
- 启动时仍会尝试兼容历史 `wechat_ipad/config.toml`
|
||||
- 但新的人工维护入口已经变成 `.env`
|
||||
- 后续不再建议继续手工编辑旧 TOML 文件
|
||||
|
||||
## 5. 常用命令
|
||||
|
||||
查看服务状态:
|
||||
查看状态:
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
@@ -87,6 +78,80 @@ docker compose ps
|
||||
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
|
||||
@@ -99,7 +164,20 @@ docker compose down
|
||||
docker compose down -v
|
||||
```
|
||||
|
||||
## 6. 升级建议
|
||||
进入应用容器:
|
||||
|
||||
```bash
|
||||
docker compose exec abot bash
|
||||
```
|
||||
|
||||
重建应用镜像:
|
||||
|
||||
```bash
|
||||
docker compose build --no-cache abot
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## 8. 升级建议
|
||||
|
||||
拉取新代码后建议执行:
|
||||
|
||||
@@ -108,13 +186,21 @@ docker compose down
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
若数据库结构发生变更,请先备份再升级。
|
||||
若数据库结构发生变更,请先备份数据库与关键挂载目录,再执行升级。
|
||||
|
||||
## 7. 公开仓库注意事项
|
||||
建议重点备份:
|
||||
|
||||
在公开仓库或分享部署示例前,请再次确认:
|
||||
- MariaDB 数据卷
|
||||
- `./logs`
|
||||
- `./wechat_ipad/providers`
|
||||
- 你自己的 `.env`
|
||||
|
||||
## 9. 开源仓库注意事项
|
||||
|
||||
在公开仓库、打包镜像或分享部署模板前,请再次确认:
|
||||
|
||||
1. `.env` 未提交
|
||||
2. `config.yaml` 未提交真实密钥
|
||||
3. `wechat_ipad/providers/*/runtime_state.toml` 未被误公开
|
||||
4. Dashboard 账号密码与 webhook token 已替换为你自己的值
|
||||
4. Dashboard 密码、Session Secret、Webhook Token 已替换为你自己的值
|
||||
5. 未确认授权来源的字体、二进制与业务素材没有被一起公开
|
||||
|
||||
Reference in New Issue
Block a user