修复中控
This commit is contained in:
@@ -20,9 +20,12 @@ HUB_PORT=5100
|
|||||||
# 留空 = 不强制关闭;仅不想用 OKX 时可设 HUB_DISABLED_IDS=1
|
# 留空 = 不强制关闭;仅不想用 OKX 时可设 HUB_DISABLED_IDS=1
|
||||||
HUB_DISABLED_IDS=
|
HUB_DISABLED_IDS=
|
||||||
|
|
||||||
# true=允许 RFC1918 私网访问中控页面;false=仅 127.0.0.1
|
# true=允许 RFC1918 私网访问中控页面;false=仅 127.0.0.1(反代须指向 127.0.0.1:5100)
|
||||||
HUB_TRUST_LAN=true
|
HUB_TRUST_LAN=true
|
||||||
|
|
||||||
|
# 云服务器用域名/HTTPS 反代访问中控时设为 true(否则公网可能看到 {"detail":"forbidden"})
|
||||||
|
# HUB_ALLOW_PUBLIC=true
|
||||||
|
|
||||||
# 中控 Web 登录(密码非空即启用;反代到公网时务必设置用户名+密码)
|
# 中控 Web 登录(密码非空即启用;反代到公网时务必设置用户名+密码)
|
||||||
# HUB_USERNAME=admin
|
# HUB_USERNAME=admin
|
||||||
# HUB_PASSWORD=your-strong-password-here
|
# HUB_PASSWORD=your-strong-password-here
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ HUB_PORT = int(os.getenv("HUB_PORT", "5100"))
|
|||||||
HUB_BRIDGE_TOKEN = (os.getenv("HUB_BRIDGE_TOKEN") or os.getenv("CONTROL_TOKEN") or "").strip()
|
HUB_BRIDGE_TOKEN = (os.getenv("HUB_BRIDGE_TOKEN") or os.getenv("CONTROL_TOKEN") or "").strip()
|
||||||
_trust_raw = (os.getenv("HUB_TRUST_LAN", "true") or "").strip().lower()
|
_trust_raw = (os.getenv("HUB_TRUST_LAN", "true") or "").strip().lower()
|
||||||
HUB_TRUST_LAN = _trust_raw not in ("0", "false", "no", "off")
|
HUB_TRUST_LAN = _trust_raw not in ("0", "false", "no", "off")
|
||||||
|
_allow_pub_raw = (os.getenv("HUB_ALLOW_PUBLIC") or "").strip().lower()
|
||||||
|
# 云服务器 + 域名反代时设为 true:不做 IP 限制,仅靠 HUB_PASSWORD / 登录页保护
|
||||||
|
HUB_ALLOW_PUBLIC = _allow_pub_raw in ("1", "true", "yes", "on")
|
||||||
DIR = Path(__file__).resolve().parent
|
DIR = Path(__file__).resolve().parent
|
||||||
HUB_BUILD = "20260525-hub-sso"
|
HUB_BUILD = "20260525-hub-sso"
|
||||||
HUB_AGENT_TIMEOUT = float(os.getenv("HUB_AGENT_TIMEOUT", "8"))
|
HUB_AGENT_TIMEOUT = float(os.getenv("HUB_AGENT_TIMEOUT", "8"))
|
||||||
@@ -130,7 +133,10 @@ if STATIC_DIR.is_dir():
|
|||||||
|
|
||||||
@app.middleware("http")
|
@app.middleware("http")
|
||||||
async def local_only(request: Request, call_next):
|
async def local_only(request: Request, call_next):
|
||||||
if request.client and not _client_allowed(request.client.host):
|
if HUB_ALLOW_PUBLIC:
|
||||||
|
return await call_next(request)
|
||||||
|
peer = request.client.host if request.client else None
|
||||||
|
if not _client_allowed(peer):
|
||||||
return JSONResponse({"detail": "forbidden"}, status_code=403)
|
return JSONResponse({"detail": "forbidden"}, status_code=403)
|
||||||
return await call_next(request)
|
return await call_next(request)
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,10 @@ HUB_SESSION_SECRET=另一串随机字符
|
|||||||
# 中控为 HTTPS 时建议 true
|
# 中控为 HTTPS 时建议 true
|
||||||
HUB_COOKIE_SECURE=true
|
HUB_COOKIE_SECURE=true
|
||||||
|
|
||||||
# 仅本机访问中控进程时可 true;公网反代访问建议 false
|
# 公网用域名访问中控(宝塔反代)时必设其一:
|
||||||
|
# HUB_ALLOW_PUBLIC=true (推荐:反代 + 中控密码)
|
||||||
|
# 或反代目标必须是 http://127.0.0.1:5100 且可保持 HUB_TRUST_LAN=false
|
||||||
|
HUB_ALLOW_PUBLIC=true
|
||||||
HUB_TRUST_LAN=false
|
HUB_TRUST_LAN=false
|
||||||
|
|
||||||
# 从中控打开实例的 SSO 链接有效期(秒),默认 7200 = 2 小时
|
# 从中控打开实例的 SSO 链接有效期(秒),默认 7200 = 2 小时
|
||||||
|
|||||||
@@ -238,6 +238,17 @@ HUB_PUBLIC_ORIGIN=http://192.168.8.6
|
|||||||
|
|
||||||
`HUB_TRUST_LAN=true` 时仅允许本机 + RFC1918 私网(10/172.16/192.168)。公网 IP 直连 5100 会被拒;应走 **Nginx 反代到 127.0.0.1:5100**。
|
`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` 修改不生效
|
### 6.3 `.env` 修改不生效
|
||||||
|
|
||||||
PM2 须重启:`pm2 restart manual-trading-hub`(`run_hub.sh` 每次启动会重读 `.env`)。
|
PM2 须重启:`pm2 restart manual-trading-hub`(`run_hub.sh` 每次启动会重读 `.env`)。
|
||||||
|
|||||||
Reference in New Issue
Block a user