Files
crypto_monitor/manual_trading_hub/部署文档.md
T

8.0 KiB
Raw Blame History

多账户交易中控 — 部署文档(含 PM2)

本文档说明在 Ubuntu / Linux 上部署 manual_trading_hub(监控区、下单区、系统设置)的推荐步骤。功能与界面操作见 《使用说明.md》;环境变量说明见 .env.example 与各 crypto_monitor_*.env.example


一、部署目标

组件 作用 默认监听
hub.py 中控 Web + API 0.0.0.0:5100
agent.py × N 各账户持仓 / 紧急全平 127.0.0.1:1520015203
crypto_monitor_*.app 策略、关键位、下单逻辑 各目录 .envAPP_PORT
  • 账户列表与 URL 由 hub_settings.json(网页「系统设置」保存)或内置默认维护;不再使用 HUB_AGENTS
  • 四实例 Flask 无需为中控改业务代码(已注册 hub_bridge);与中控并行运行。

二、前置条件

  1. Python 3.10+python3-venvpip
  2. Node.js + npm(用于安装 PM2):sudo npm i -g pm2
  3. crypto_monitor_* 目录已 cp .env.example .env 并填好 API 密钥。
  4. 端口无冲突:51001520015203、各实例 APP_PORT5000/5001/5002/5004)。
  5. 建议代码路径:/opt/crypto_monitor/(下文用此示例,请按实际路径替换)。

三、安装中控依赖

cd /opt/crypto_monitor/manual_trading_hub
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env
# 编辑 .envHUB_PORT、HUB_DISABLED_IDS、公网时 HUB_BRIDGE_TOKEN 等
chmod +x scripts/run_hub.sh scripts/pm2_hub.sh scripts/pm2_agents.sh

子代理也使用 本目录 .venv 里的 Python(与各策略 Flask 的 venv 可分开)。


四、推荐启动顺序

1. 子代理 agent1520015203  ← PM2 或 screen
2. 各实例 FlaskAPP_PORT      ← 各目录 ecosystem.config.cjs
3. 中控 hub5100              ← 本目录 ecosystem.config.cjs

仅反代中控到公网时:Flask / agent 仍只监听 127.0.0.1;系统设置里 URL 填 http://127.0.0.1:端口


五、PM2 托管中控(推荐)

5.1 进程名与文件

文件 PM2 进程名 说明
ecosystem.config.cjs manual-trading-hub 仅中控
ecosystem.agents.config.cjs manual-agent-binance 等 4 个 可选,子代理

run_hub.sh 会加载 manual_trading_hub/.env 再执行 hub.py

5.2 启动中控

cd /opt/crypto_monitor/manual_trading_hub

# 方式 A:直接 PM2
pm2 start ecosystem.config.cjs
pm2 save

# 方式 B:快捷脚本
bash scripts/pm2_hub.sh start

5.3 常用运维命令

pm2 status
pm2 logs manual-trading-hub --lines 200
pm2 restart manual-trading-hub
pm2 stop manual-trading-hub

# 或
bash scripts/pm2_hub.sh status
bash scripts/pm2_hub.sh logs
bash scripts/pm2_hub.sh restart

5.4 开机自启

pm2 save
pm2 startup
# 按终端提示执行一行 sudo 命令后,再 pm2 save

5.5 可选:PM2 托管四路子代理

cd /opt/crypto_monitor/manual_trading_hub
pm2 start ecosystem.agents.config.cjs
# 仅币安:
# pm2 start ecosystem.agents.config.cjs --only manual-agent-binance

bash scripts/pm2_agents.sh start   # 等价启动全部
pm2 save
进程名 工作目录 PORT
manual-agent-binance crypto_monitor_binance 15200
manual-agent-okx crypto_monitor_okx 15201
manual-agent-gate crypto_monitor_gate 15202
manual-agent-gate-bot crypto_monitor_gate_bot 15203

OKX 默认被 HUB_DISABLED_IDS=1 关闭监控,但子代理仍可启动备用。

5.6 与各实例 Flask 一起查看

pm2 status
# 示例同时存在:
# manual-trading-hub
# manual-agent-binance
# crypto_binance          (各目录自有 ecosystem.config.cjs

六、手动启动(不用 PM2 时)

6.1 子代理(每账户一个终端或 screen)

cd /opt/crypto_monitor/crypto_monitor_binance
export EXCHANGE=binance PORT=15200 HOST=127.0.0.1
/opt/crypto_monitor/manual_trading_hub/.venv/bin/python \
  /opt/crypto_monitor/manual_trading_hub/agent.py

其余端口见上表;也可用 scripts/start_agents_3screen.sh(不含 OKX)。

6.2 中控

cd /opt/crypto_monitor/manual_trading_hub
bash scripts/run_hub.sh
# 或
bash scripts/start_hub_screen.sh   # screen 会话 mt-hub

七、浏览器验收

  1. 打开 http://127.0.0.1:5100/monitor(局域网用本机私网 IP)。
  2. 已启用账户应显示持仓;Flask 已起时有关键位/趋势信息。
  3. http://127.0.0.1:5100/settings 保存后生成 hub_settings.json
  4. http://127.0.0.1:5100/trade 选账户测试下单(实盘慎用)。

接口探测:

curl -s http://127.0.0.1:5100/api/settings | head
curl -s http://127.0.0.1:15200/health

八、仅反代中控到公网(实例不反代)

  1. Nginx/Caddy 反代到 127.0.0.1:5100,配置 HTTPS。
  2. hub_settings.json 中 Flask/Agent 保持 http://127.0.0.1:...
  3. 四实例 APP_AUTH_DISABLED=false + 与中控相同 HUB_BRIDGE_TOKEN(见 .env.example 注释)。
  4. 子代理 HOST=127.0.0.1,防火墙勿放行 1520015203、各 APP_PORT
  5. 监控页「复盘」链到本机 Flask,公网浏览器通常打不开,需 VPN/内网访问实例。

九、环境变量(中控 .env

变量 默认 说明
HUB_HOST 0.0.0.0 监听地址
HUB_PORT 5100 端口
HUB_DISABLED_IDS 1 强制关闭的账户 idOKX
HUB_TRUST_LAN true 私网可访问;仅本机可 false
HUB_BRIDGE_TOKEN 公网/开登录时建议配置

本地联调、实例 APP_AUTH_DISABLED=true 时可不配 HUB_BRIDGE_TOKEN


十、升级与回滚

cd /opt/crypto_monitor
git pull
cd manual_trading_hub
.venv/bin/pip install -r requirements.txt
pm2 restart manual-trading-hub
# 若改了 agent 依赖:
pm2 restart manual-agent-binance manual-agent-okx manual-agent-gate manual-agent-gate-bot
  • hub_settings.json.env 不在 Git 中,git pull 不会覆盖。
  • 升级前可备份:cp hub_settings.json hub_settings.json.bak

十一、故障排查

现象 处理
PM2 启动后立刻退出 pm2 logs manual-trading-hub;检查 .venv.envrun_hub.sh 可执行
监控无持仓 子代理未起或 Agent URL 错;curl http://127.0.0.1:15200/status
无关键位/下单 401 Flask 未起或 HUB_BRIDGE_TOKEN 不一致;或设 APP_AUTH_DISABLED=true
子代理 SOCKS 报错 manual_trading_hub/.venv 安装 PySockspm2 restart 子代理
公网访问中控 403 反代未指向本机、或客户端非私网且 HUB_TRUST_LAN=true;反代改 127.0.0.1:5100 或在反代层鉴权
.env 不生效 PM2 需 pm2 restart manual-trading-hubrun_hub.sh 每次启动会重读 .env

十二、其它常驻方式

  • screenscripts/start_hub_screen.sh / stop_hub_screen.sh
  • systemdscripts/example-systemd/manual-hub.service.example(复制并改路径)

与 PM2 二选一 即可,避免同一端口启动两份 hub。


十三、安全清单

  • 公网仅暴露反代端口,不暴露 Flask/agent 端口
  • 公网已配置 HUB_BRIDGE_TOKEN + 实例关闭 APP_AUTH_DISABLED
  • API Key 最小权限;交易所 IP 白名单
  • 已告知操作人员「全局全平」不可撤销

十四、文档索引

文档 内容
使用说明.md 三页功能、能力矩阵、鉴权说明
README.md 架构速览
.env.example 中控环境变量模板
scripts/后台运行-Ubuntu.md screen / systemd 补充