feat(gateway)!: drop HTTP listener, run outbound agent only

- delete GatewayHTTPServer/GatewayHandler, create_server, /healthz and
  /v1/channel; event_channel module removed
- load_config now requires CREATOR_PLATFORM_URL + CREATOR_GATEWAY_KEY
- run() wires Gateway into OutboundAgent; SIGINT/SIGTERM stop the agent
- deploy env example, install script, systemd unit docs and deployment
  docs updated to the outbound model; NATIVE_GATEWAY_ENDPOINT dead dev
  config removed
This commit is contained in:
2026-10-09 08:25:27 +08:00
parent 469b283ac2
commit d9e57c4900
17 changed files with 199 additions and 623 deletions
+8 -7
View File
@@ -47,8 +47,8 @@ $EDITOR ~/.config/creatorhub/browser-gateway.env
关键配置:
- `LISTEN_ADDR=0.0.0.0:8081`:允许局域网 control-plane 联调;防火墙只放行受信网络;
- `GATEWAY_TOKEN`:至少 16 个字符,和控制面登记值完全一致;
- `CREATOR_PLATFORM_URL`:control-plane 的 http(s) 根地址(不含 `/v1/agent` 路径);网关主动出站建立 WebSocket 连接,无需公网入站端口;
- `CREATOR_GATEWAY_KEY`:至少 16 个字符,与控制面「网关管理」为该网关签发的 key 完全一致;
- gateway 宿主机必须预安装并自检浏览器运行时;control-plane 不提供浏览器版本登记、路径配置或升级入口,相关运行时参数只由 gateway 本机服务读取;
- `BROWSER_STATE_DIR`:runtime 清单、锁和日志目录;
- `BROWSER_PROFILE_ROOT`:持久账号 Profile 根目录;不得指向临时目录;
@@ -58,9 +58,10 @@ $EDITOR ~/.config/creatorhub/browser-gateway.env
```bash
scripts/install-native-browser-gateway.sh
curl --fail --silent --show-error http://127.0.0.1:8081/healthz
curl --fail --silent --show-error -H "Authorization: Bearer ${GATEWAY_TOKEN}" http://127.0.0.1:8081/v1/info
systemctl --user --no-pager status creatorhub-browser-gateway.service
journalctl --user -u creatorhub-browser-gateway.service -n 50 --no-pager
网关启动后主动连入 `CREATOR_PLATFORM_URL` 的 `/v1/agent` WebSocket;连接成功时控制面「网关管理」列表该网关显示在线,不再提供本地 `/healthz` 或入站 HTTP 接口。
```
若 user service 不随登录启动,按主机运行规范启用 lingering;不要把 gateway 改成 root service:
@@ -89,7 +90,7 @@ docker compose ps
docker compose logs --tail=200 creator-hub postgres
```
Compose 中的 control-plane 访问宿主机 gateway 时,网关 Endpoint 登记为 `http://host.docker.internal:8081`。裸机运行 control-plane 时登记为 `http://127.0.0.1:8081`。两种情况下都必须使用同一个 `GATEWAY_TOKEN`。
网关不再登记 Endpoint;在控制面「网关管理」创建网关条目,将生成的 access key 配置到网关的 `CREATOR_GATEWAY_KEY`。平台与网关的全部通信复用网关发起的那条 WebSocket 连接。
### 裸机开发
@@ -158,8 +159,8 @@ docker compose config --quiet
systemctl --user --no-pager --full status creatorhub-browser-gateway.service
journalctl --user -u creatorhub-browser-gateway.service --since=-30m
find ~/.local/state/creatorhub/browser-gateway -maxdepth 3 -type f -name runtime.json -print
curl --fail --silent --show-error http://127.0.0.1:8081/v1/browsers \
-H "Authorization: Bearer ${GATEWAY_TOKEN}"
网关本地无 HTTP 接口;浏览器列表与任务执行记录在控制面「网关管理」页查看。
```
强杀或网络中断后,不要重复发送真实平台写操作。先查询 control-plane 的运行、结果未知和 cleanup 状态,再按 generation 执行显式恢复或清理。