乐于分享
好东西不私藏

手把手教你实现在手机和电脑上安全使用和管理hermes

手把手教你实现在手机和电脑上安全使用和管理hermes

本文的目的

通过给服务器上的hermes Agent 添加一个可以远程对话、管理的界面WebUI,实现通过手机和电脑在任何地方安全的使用和管理。

撰写本文的原因

不同于其它Claw 强大的可视化管理,Hermes 没有提供官方的交互管理界面(dashboard太简陋,不算),各种手工修改文件配置的操作,让很多新手没办法直观的配置,体验感直线下降。

本人去年购买了一个优惠的云主机,安装了无UI的Ubuntu V24,近期把Hermes Agent跑了起来,还对接了微信、Deepseek-V4-flash。但烦于每次都要 SSH 上去敲命令,就揣摩着给Hermes 装上WebUI,经过摸索实现了通过 Nginx 反向代理和密码保护,可以在浏览器里远程管理和使用 Hermes Agent,安全又优雅。

实现路径

安装星标 4.3K 的社区版的Hermes-WebUI。官网:

https://github.com/nesquena/hermes-webui

前置条件

  • • 一台运行 Ubuntu 的服务器(我的版本是ubuntu24.04),拥有 sudo 权限
  • • 服务器已安装 Hermes Agent(本文不涉及 Hermes 本体的安装)
  • • 已知服务器公网 IP 或已绑定域名(假设:domain.com),服务器开放了公网端口(假如为8080)
  • • 一台本地电脑或手机,做测试

步骤一:服务器上安装 hermes-webui 管理界面

第一步:克隆仓库

1
2
3

cd ~/sudo git clone https://github.com/nesquena/hermes-webui.git hermes-webuicd hermes-webui

第二步:运行引导脚本,安装依赖

项目提供了一个 bootstrap.py 脚本,它会自动创建虚拟环境并安装所有 Python 依赖:

1

python3 bootstrap.py

建议:一般安装hermes后,系统自动安装了python3,上面命令可以直接执行。

这个脚本做了几件事:

  • • 创建 Python 虚拟环境(venv)
  • • 安装所有 pip 依赖包
  • • 准备好运行所需的目录结构

整个过程大概一两分钟,取决于你的网络速度。

第三步:启动 WebUI

1

./start.sh

启动后你会看到类似这样的输出:

1
2
3

[bootstrap] Starting Hermes Web UI on http://127.0.0.1:8787[bootstrap] Web UI is ready: http://localhost:8787[bootstrap] Log file: /home/web/.hermes/webui/bootstrap-8787.log

第四步:确认服务正常运行

1

curl http://localhost:8787

如果返回了 HTML 内容,说明 WebUI 已经跑起来了。

踩坑提醒:如果 ./start.sh 报权限不足,先执行 chmod +x start.sh。如果 8787 端口被占用,可以用

ss -tlnp | grep 8787  看看是谁占了,或者直接杀掉:sudo fuser -k 8787/tcp


步骤二:配置 Nginx 反向代理

现在 WebUI 在 8787 端口上跑着,但直接暴露端口号很不安全。我们用 Nginx 做一层反向代理,把内部端口藏起来,对外统一用一个 端口访问(本文使用了8080端口,有条件的最好用80或443)。

2.1 安装 Nginx(如果已经安装,可跳过)

1
2
3
4

sudo apt updatesudo apt install nginx -ysudo systemctl enable nginxsudo systemctl start nginx

我使用的是nginx/1.28.0

2.2 创建站点配置文件(文件路径可能不一样)

1
2
3

sudo vi /etc/nginx/conf.d/hermes-webui.conf 或者:sudo nano /etc/nginx/conf.d/hermes-webui.conf 

如果服务器已经存在nginx,在原配置文件上添加下面配置:

写入以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

server {    listen 8080;    server_name domain.com;  # 替换成你的域名或服务器 IP    # 规避跨域访问错误    add_header Access-Control-Allow-Origin "$http_origin" always;    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE" always;    add_header Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With" always;    add_header Access-Control-Allow-Credentials "true" always;    if ($request_method = 'OPTIONS') {         return 204;    }    location / {        # 反向代理到本机 hermes        proxy_pass http://127.0.0.1:8787/;        proxy_set_header Host $host;        # SSE 流式推送支持(Hermes WebUI 的 Agent 回复需要这个)        proxy_buffering off;        proxy_cache off;        proxy_http_version 1.1;        chunked_transfer_encoding off;    }}

建议proxy_buffering off 这行很关键!Hermes WebUI 使用 Server-Sent Events(SSE)做流式输出,如果开了缓冲,你会发现 Agent 的回复是"憋"一会儿才整段弹出来的,体验极差。关掉缓冲后才能看到打字机一样的实时流式效果。

2.3 启用站点并重启 Nginx

1
2

sudo nginx -tsudo systemctl reload nginx 或  sudo nginx -s reload 

nginx -t 输出下面内容表明成功:

1
2
3

web@hcss-ecs-4c23:~/hermes-webui$ sudo nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

现在你可以windows或手机的浏览器上直接用 http://domain.com:8080访问 Hermes WebUI 了。外部用户完全看不到 8787 端口的存在。

提醒:如果你之前装过 Nginx 的默认站点,可能会冲突。你需要使用域名或调整暴露的端口号,并在服务器的防火墙和安全组开放该端口。


步骤三:设置远程访问密码保护

让 WebUI 裸奔在公网上?那可不行。接下来我们给 WebUI 加上密码锁。

密码保存在hermes的环境配置文件 .env 中

第一步:修改hermes配置文件

然后用你喜欢的编辑器打开hermes配置文件,一般是:

1

cd ~/.hermes 

1
2
3

sudo nano .envsudo vi .env

增加一行:

HERMES_WEBUI_PASSWORD=你的密码

保存退出

博主建议:密码别用 123456 之类的弱密码。建议至少 6 位,包含大小写字母、数字和特殊字符。

第二步:重启 hermes gateway 和 WebUI 使配置生效

1
2
3
4
5
6

hermes gateway restart# 先停掉之前的进程sudo fuser -k 8787/tcp# 重新启动(密码已写入 .env)cd ~/hermes-webui./start.sh

踩坑提醒: WebUI 当前在设置-System 中提供了修改密码的界面,但通过测试,没有效果,等待官方更新吧。

步骤四:验证效果

一切配置就绪,现在来验证一下是否正常工作。

4.2 外网访问测试

在本地电脑或手机浏览器打开 http://domain.com:8080

  1. 1. 应该看到:Hermes WebUI 的登录页面或密码输入界面
  2. 2. 输入密码后:进入主界面
  3. 3. 测试流式输出:发一条消息给 Agent,确认回复是逐字流式显示的(说明 Nginx 的 SSE 代理配置正确)

4.3 安全检查清单

最后过一遍安全清单:

  • 8787 端口未对外暴露
  • 已设置 WebUI 密码保护
  • 密码强度足够(6 位以上)
  • Nginx 反代正常工作
  • SSE 流式输出正常(Agent 回复实时显示)
  • (可选)已配置 HTTPS(用 Let's Encrypt 免费证书)

博主建议:生产环境强烈建议加上 HTTPS。可以用 Certbot 一键搞定:

1
2

sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d domain.com

免费、自动续期,三分钟的事。

#人工智能#   #openclaw#   #小龙虾#
往日精选

三大运营商又喊新口号了?这次是"Token经营"
跟AI对话太烧钱?6个野路子帮你省下一半Token
《尽兴》:邻里才女的原创英文歌曲