Files
crypto_monitor/manual_trading_hub/常见问题.md
T
2026-05-25 13:47:34 +08:00

12 KiB
Raw Blame History

中控与四实例 — 常见问题实录

本文档整理部署与运行 manual_trading_hub(复盘系统中控)及四所 crypto_monitor_*实际遇到过的问题与处理办法。操作步骤仍以 使用说明.md部署文档.md 为准。


一、中控进程与代码版本

1.1 PM2 日志仍出现 api_trade_keypython-multipart 断言

现象pm2 logs 里报错 File "hub.py", line 324, in api_trade_keyThe python-multipart library must be installed

原因

  • 服务器上的 hub.py 仍是旧版(含已移除的「下单区」接口),或 pull 后未重启 PM2,日志是历史残留。
  • 旧版「添加关键位」会 request.form(),未装 python-multipart 时直接 500。

处理

cd /opt/crypto_monitor
git pull

cd manual_trading_hub
bash scripts/fix_hub_deps.sh          # 安装 python-multipart 等
bash scripts/verify_hub_deploy.sh     # 应显示无 api_trade_key、含 HUB_BUILD

pm2 restart manual-trading-hub
curl -s http://127.0.0.1:5100/api/ping

正常 ping(无需登录)应含 "build":"20260521-no-trade-ui""trade_ui":false

说明:当前版本已移除中控下单区;添加关键位、人工下单、趋势回调请在监控卡片点 「实例」 进入各 Flask 网页。浏览器请 Ctrl+F5 强刷,避免旧前端缓存仍请求 /api/trade/key


1.2 curl /api/ping 返回 {"detail":"未登录"}

原因:早期版本未把 /api/ping 列入免登录白名单(已修复)。

处理git pullpm2 restart manual-trading-hub;再测应直接返回 JSON,无需 Cookie。


1.3 verify_hub_deploy.shExpecting value: line 1 column 1

原因:5100 端口无进程监听(hub 未启动或已崩溃),curl 拿到空响应。

处理

pm2 restart manual-trading-hub
sleep 2
pm2 logs manual-trading-hub --lines 30 --nostream
ss -ltn | grep 5100
bash scripts/verify_hub_deploy.sh

1.4 bash scripts/fix_hub_deps.sh 在仓库根目录找不到

原因:脚本在 manual_trading_hub/scripts/ 下,不在 /opt/crypto_monitor/scripts/

处理

cd /opt/crypto_monitor/manual_trading_hub
bash scripts/fix_hub_deps.sh

二、登录与 Cookie(反代 / 域名 / 内网 IP)

2.1 设了密码后,域名能登录,http://内网IP:5100 不能

原因(最常见):

  • .envHUB_COOKIE_SECURE=true,且用 HTTP 访问 IP:5100 → 浏览器不保存Secure 的 Cookie,表现为登录成功后又跳回登录页。
  • 域名(HTTPSIP:5100HTTP 是不同站点,Cookie 不共用,需在 IP 上再登一次。

处理

  • 已支持:仅在实际 HTTPS 请求时发 Secure Cookie(读 X-Forwarded-Proto),HTTP 内网 IP 可正常登录。
  • 反代 Nginx 需传:proxy_set_header X-Forwarded-Proto $scheme;
  • 若仍异常:HTTPS 域名与 HTTP IP 分别登录;或内网仅用 IP 时可注释 HUB_COOKIE_SECURE

2.2 登录后接口仍 401

检查项 说明
用户名密码 .envHUB_USERNAME(未设默认为 admin)、HUB_PASSWORD
改密后 需重新登录;旧 Cookie 失效
混用地址 不要用 A 浏览器标签登域名、B 标签指望 IP 已登录

三、监控区无数据 / 子代理异常

3.1 卡片「子代理不可用」或余额为 —

原因 处理
agent 未启动 pm2 restart ecosystem.config.cjspm2 restart manual-agent-*
Agent URL 与端口不符 系统设置里应为 http://127.0.0.1:15200
PM2 未加载策略 .env 须用 run_agent.sh 启动(会 source 各目录 .env),勿裸跑 agent.py
.env 为 Windows CRLF 日志 $'\r': command not foundbash scripts/fix_env_crlf.sh 后重启

验证:

curl -s http://127.0.0.1:15202/status | head -c 300

ok: true 且有 balance_usdt

3.3 Gate 子代理「一会正常、一会连不上」(仅 Gate 两户)

现象 说明
中控 LINK 2/4,仅 Gate 红 本机 15202/15203 在 PM2 重启间隙连不上
日志 $'\r': command not found crypto_monitor_gate*.env 为 Windows CRLF
curl 有时通有时不通 与 Gate 外网无关,先修 CRLF 并重建 agent

修复(服务器):

cd /opt/crypto_monitor
sed -i 's/\r$//' crypto_monitor_gate/.env crypto_monitor_gate_bot/.env
bash manual_trading_hub/scripts/fix_env_crlf.sh
cd manual_trading_hub && pm2 restart manual-agent-gate manual-agent-gate-bot
# 仍反复重启时:pm2 delete 后按 ecosystem.config.cjs 重新 start(见部署文档 §5.6)

修好后 pm2 describe manual-agent-gaterestarts 应不再疯涨;pm2 flush manual-agent-gate 可清掉旧 CRLF 日志。

若子代理已绿但挂委托失败:再查 GATE_SOCKS_PROXY、API 权限、止损止盈价格是否合理(与各实例策略页相同 .env 参数)。

3.2 有持仓但无关键位 / 趋势,或提示 Flask 404

原因 处理
对应 crypto_* Flask 未启动 pm2 restart crypto_gate
未注册 hub_bridge 启动日志勿含 [hub_bridge] ImportError;仓库根需在 PYTHONPATH(各实例 ecosystem.config.cjs 已配 PYTHONPATH=..
中控 ModuleNotFoundError: hub_auth 确认仓库根存在 /opt/crypto_monitor/hub_auth.pygit pull);run_hub.sh / PM2 已设 PYTHONPATH=仓库根pm2 restart manual-trading-hub
HUB_BRIDGE_TOKEN 不一致 中控 .env 与四实例 .env 设相同令牌,或实例 APP_AUTH_DISABLED=true(仅建议本机)
curl -s -H "X-Hub-Token:你的令牌" http://127.0.0.1:5000/api/hub/ping

3.3 中控监控区打开慢、一直转圈

原因(常见)

  1. 首屏要等 /api/monitor/board:向 4 个子代理拉持仓/余额,并向 4 个 Flask 拉监控与(默认)关键位行情;任一实例慢或超时都会拖住整页。
  2. 旧版 hub 对每所 Flask 串行请求,4 所 × 3 接口容易累计到十几秒;新版已改为并行git pullpm2 restart manual-trading-hub)。
  3. 各实例 /api/price_snapshot 会调交易所接口(含全量持仓),最耗时;内网访问 Google 字体也会拖首屏渲染。
  4. 子代理 /statusfetch_balance / fetch_positions / 挂单列表走交易所 API,网络差时单次可达数秒。

加快办法

# manual_trading_hub/.env
HUB_BOARD_KEY_PRICES=false   # 不拉 price_snapshot,关键位门控显示为「-」,首屏明显更快
HUB_AGENT_TIMEOUT=6
HUB_FLASK_TIMEOUT=8

并确认四所 crypto_*manual-agent-* 均为 online,避免等满超时。浏览器 Ctrl+F5 强刷静态资源(版本号含 20260525-perf)。


四、云服务器 / 公网反代

云服务器完整配置(安全组、宝塔、环境变量、PM2、验收)云服务器部署说明.md


五、复盘链接与公网反代

4.1 监控里点「复盘」打开的是本机 127.0.0.1

原因:未设 HUB_PUBLIC_ORIGIN,浏览器拿到的链接仍是 Flask 本机地址。

处理manual_trading_hub/.env 增加(示例):

HUB_PUBLIC_ORIGIN=http://192.168.8.6

HUB_PUBLIC_HOST=192.168.8.6。改后 pm2 restart manual-trading-hub

说明:仅反代中控、四实例 Flask 仍只监听 127.0.0.1 时,其它电脑要能打开复盘,还须能访问各实例端口或单独反代。

4.2 只反代中控、不反代四实例

可以。中控聚合监控与全平;复盘、下单、关键位维护进各实例网页。实例 Flask/agent 建议 127.0.0.1 + 与中控相同的 HUB_BRIDGE_TOKEN

4.3 从中控「打开实例」仍要输密码

完整说明局域网与反代部署说明.md

常见原因

  1. 四实例未重启,/hub-sso 未加载(启动日志勿长期 [hub_bridge] ImportError)。
  2. HUB_BRIDGE_TOKEN 与四实例 .env 不一致。
  3. hub_settings 里该户 key 与实例 install_on_app(exchange=...) 不一致(如 okxgate_bot)。
  4. 浏览器仍用旧书签直链首页,未从中控点「实例」(直链本来就要登录)。

直链http://IP:端口https://实例域名 → 使用各实例 APP_USERNAME / APP_PASSWORD(四所建议统一)。


六、Gate 趋势 / 复盘相关(实例侧)

5.1 Gate 趋势 /records 或预览 500preview_created_at

原因:数据库缺列或查询未兼容旧库。

处理git pull 后重启 crypto_gate_bot;必要时在实例目录执行一次带 init_db 的启动或按该目录更新文档迁移。

5.2 中控监控区 Gate 趋势户「无关键位」

设计如此Gate 趋势户通常只勾 监控趋势计划,不勾关键位;关键位在 Gate 训练户。四所 策略交易 均在各实例 /strategy,与中控勾选无关。增加 Gate 子账户见 使用说明.md §4.3


七、环境与配置

6.1 OKX 默认不显示

HUB_DISABLED_IDS=1(默认关 OKX)。要用 OKX:清空或改掉该变量,并在系统设置启用 id=1。

6.2 公网 IP 直连中控 403

HUB_TRUST_LAN=true 时仅允许本机 + RFC1918 私网(10/172.16/192.168)。公网 IP 直连 5100 会被拒;应走 Nginx 反代到 127.0.0.1:5100

4.4 浏览器显示 {"detail":"forbidden"}

原因:中控 local_only 中间件认为访问来源 IP 不允许(常见于云上 HUB_TRUST_LAN=false 且反代未指向 127.0.0.1:5100)。

处理(二选一):

  1. manual_trading_hub/.env 增加 HUB_ALLOW_PUBLIC=true(已设 HUB_PASSWORD 时推荐),pm2 restart manual-trading-hub
  2. 宝塔反代目标改为 http://127.0.0.1:5100(不要用公网 IP:5100 作 upstream)。

改后强刷浏览器再开 /login

6.3 .env 修改不生效

PM2 须重启:pm2 restart manual-trading-hubrun_hub.sh 每次启动会重读 .env)。

6.4 hub_settings.json 与 Git

网页「系统设置」保存生成,一般不提交 Gitgit pull 不会覆盖 该文件与 .env


八、功能边界(避免误用)

项目 说明
中控下单区 已移除;勿再在中控添加关键位/人工单/趋势预览
中控能力 监控聚合、单户/全局紧急全平、系统设置、登录保护
下单与关键位 crypto_monitor_* 原网页
复盘 各实例 /records;中控仅「复盘」外链
全平 市价减仓,不可撤销,操作前确认

九、推荐排障顺序

  1. git pullmanual_trading_hubbash scripts/fix_hub_deps.shbash scripts/verify_hub_deploy.sh
  2. pm2 restart manual-trading-hub(及 ecosystem.config.cjs 若 agent/Flask 也有问题)
  3. curl http://127.0.0.1:5100/api/ping → 确认 buildtrade_ui:false
  4. 浏览器打开 /login 登录 → /monitor 强刷
  5. 逐项 curl 子代理 /status、Flask /api/hub/ping
  6. 仍不行则查 pm2 logs manual-trading-hubpm2 logs crypto_gate 最近 50 行

十、相关脚本

脚本 作用
scripts/fix_hub_deps.sh 安装/更新中控 venv 依赖(含 python-multipart
scripts/verify_hub_deploy.sh 检查代码版本、multipart、ping、PM2 状态
scripts/fix_env_crlf.sh 去除各目录 .env 的 Windows 换行
scripts/run_hub.sh PM2 启动 hub(加载 .env
scripts/run_agent.sh PM2 启动 agent(加载策略目录 .env
scripts/pm2_hub.sh 启停/日志 hub+agent 一体

十一、文档索引

文档 内容
使用说明.md 架构、页面、环境变量、API
部署文档.md Ubuntu/PM2 安装与运维
云服务器部署说明.md VPS 配置、安全组、宝塔、env、验收
局域网与反代部署说明.md 内网 IP:端口 / 域名反代、SSO
README.md 速览与快速启动
.env.example 中控环境变量模板