公网怎么连上 Hermes WebUI?一次请求走过的 4 道关
【免费下载链接】hermes-webuiHermes WebUI: The best way to use Hermes Agent from the web or from your phone!项目地址: https://gitcode.com/GitHub_Trending/he/hermes-webui
你人在通勤的地铁上,服务器里的 Hermes Agent 还有一批任务没跑完。Hermes WebUI 让你随时从浏览器或手机直接操作它,可现在输入地址,页面只回你“连接超时”。卡点不在 Agent,而在远程访问链路:服务默认只监听本机回环地址 127.0.0.1,外网请求到不了门口。
先看清链路:一次外部请求要闯 4 道关
从你的设备到最终页面,请求的路径是:
- 起点:手机浏览器敲下
https://203.0.113.1:8787(203.0.113.1 是路由器公网 IP)。 - 第一关:路由器把公网 8787 转给内网机器 192.168.1.100:8787。
- 第二关:服务器防火墙放行这条 8787/TCP。
- 第三关:Hermes WebUI 在 0.0.0.0:8787 上接住连接(默认只听 127.0.0.1,外网进不来)。
- 第四关:应用校验登录密码,HTTPS 让全程传输加密。
哪一关断了,页面就卡在哪。下面从最外一关往回,逐关改配置。
路由器端口映射三步做完:公网 8787 指向内网机器
端口转发就像总机转分机:外线打进 8787,路由器把它拨给真正坐机的 192.168.1.100。
- 登录路由器管理页,找到“端口转发”或“虚拟服务器”选项。
- 新建规则:外部端口 8787、协议选 TCP、内部目标 192.168.1.100:8787。协议必须是 TCP,WebUI 走的是 HTTP 通信。
- 保存后从外网设备访问
http://203.0.113.1:8787。出现登录页或密码提示,这一关就通了。
这三步就是完整的端口转发配置,品牌型号不同,界面入口名称可能略有差异,原理都一样。
服务器防火墙:只给 8787 开一道窄门(访问控制)
路由器之外,系统防火墙是第二道闸门。规则保持最窄:
- 入站只放行 8787/TCP 一条,其余端口保持关闭;
- 来源限制在你常用的出口 IP 段,而不是对全网开放。
监听地址改 0.0.0.0:在 .env 里写两行
api/config.py 的网络配置段里,HOST读环境变量HERMES_WEBUI_HOST,缺省回退127.0.0.1;PORT读HERMES_WEBUI_PORT,缺省 8787。不用动源码,改环境变量即可。
把仓库根的模板 .env.example 复制为.env,写入:
HERMES_WEBUI_HOST=0.0.0.0 HERMES_WEBUI_PORT=87870.0.0.0表示对所有网络接口开放;端口沿用 8787,和路由器规则保持一致。重启服务(./start.sh或./ctl.sh start)后生效。
密码登录加 HTTPS:把入口锁上 🔒
公开到公网之前,先把认证配上。两种方式任选其一:
- 启动时带上环境变量:
HERMES_WEBUI_PASSWORD=your-secret ./start.sh; - 或在设置界面保存密码。
api/config.py里的save_settings会把它散列为password_hash写回配置,之后每次登录都要验证。
再叠上 HTTPS 加密。证书从 Let's Encrypt 申请最省事,自签名只留给内网测试。拿到fullchain.pem与privkey.pem后,用两个环境变量指给服务:
HERMES_WEBUI_TLS_CERT=/path/to/fullchain.pem HERMES_WEBUI_TLS_KEY=/path/to/privkey.pemHTTPS 相当于给每个信封加锁,路上被拆开也读不出内容。重启后地址从http://换成https://203.0.113.1:8787。
一分钟自检:三条命令找出卡在哪一关
- 监听状态:
ss -tuln | grep 8787(老系统用netstat -tuln | grep 8787)。期望看到0.0.0.0:8787;只看到127.0.0.1:8787,说明第三关没改上。 - 公网可达性:用在线端口检测工具扫 8787。不通就回路由器核对转发规则,重点看协议是不是 TCP。
- 服务日志:
tail -f ~/.hermes/webui.log(ctl.sh 方式启动时写入)。证书路径写错、端口被占用都会记在这里。
配置速查表
| 配置项 | 位置 | 作用 |
|---|---|---|
HERMES_WEBUI_HOST | .env或环境变量 | 监听地址,0.0.0.0对所有接口开放 |
HERMES_WEBUI_PORT | .env或环境变量 | 监听端口,默认 8787,须与转发规则一致 |
| 端口转发规则 | 路由器管理页 | 公网8787/TCP→192.168.1.100:8787 |
| 入站防火墙规则 | 服务器系统防火墙 | 只放行 8787/TCP,可限制来源 IP 段 |
HERMES_WEBUI_PASSWORD | .env或设置界面 | 登录密码,散列后以password_hash存储 |
HERMES_WEBUI_TLS_CERT/HERMES_WEBUI_TLS_KEY | 环境变量或.env | 启用 HTTPS,指向证书与私钥文件 |
不想把端口暴露到公网,可以改走 SSH 隧道或 Tailscale,仓库自带说明:docs/remote-access.md。
【免费下载链接】hermes-webuiHermes WebUI: The best way to use Hermes Agent from the web or from your phone!项目地址: https://gitcode.com/GitHub_Trending/he/hermes-webui
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考