如何在 VPS 上安全自托管 Agent Zero
Agent Zero 的 Web UI 可执行代码、驱动浏览器并运行 shell。了解 50001 端口的暴露风险,用回环地址绑定并通过 SSH 隧道安全访问。
Agent Zero 是什么,风险在哪里
Agent Zero 是一个开源、以 Docker 为首要运行环境的代理框架。主代理可以创建下级代理。每个下级代理都运行在独立的 Docker 容器中,并且可以执行代码、驱动浏览器和运行 shell 命令。您可以通过 Web UI 控制整个系统。它功能强大,使用体验也很有趣,并且可以运行在低至 6 美元的 VPS 上。如果您需要的是多代理架构,而不是这个框架,那么在同一台主机上运行两个 Claude Code 会话并让它们直接互发消息会简单得多,运行和加固也更容易。
风险在于 Web UI。它是一个可以运行命令和写入文件的系统的控制面板,因此暴露在公网且未进行身份验证的 Web UI,实际上就是通往该系统的远程入口。大多数安装指南都会直接让您陷入以下陷阱:标准 docker run 会在所有网络接口上发布端口 50001,因此在公共 VPS 上,容器一启动,该接口就可从整个互联网访问。您应该首先修复这一点,而不是最后处理。
所需条件
您需要一台已安装 Docker 的 VPS、一个语言模型 API 密钥,或一个可供 Agent Zero 连接的本地模型,并准备至少几 GB RAM。Agent Zero 可以运行在任何支持 Docker 的环境中,从小型 VPS 到 GPU 服务器均可。如果您不熟悉 Docker,请参阅Docker 基础指南,其中介绍了以下命令所需的基础知识。
使用 Docker 安装,并绑定到回环地址
文档中的快速入门只需执行一个 docker run。与其他地方常见的复制粘贴版本相比,重要区别在于发布的地址。不要将端口 50001 发布到所有网络接口。请发布到回环地址:
docker run -d --name agent-zero \
-p 127.0.0.1:5080:80 \
-v a0_usr:/a0/usr \
agent0ai/agent-zero-p 127.0.0.1:5080:80仅将 Web UI 绑定到服务器的回环地址,因此无法从互联网访问。请在本机上通过 SSH 隧道访问:
ssh -L 5080:127.0.0.1:5080 you@your-vps然后在本地打开 http://127.0.0.1:5080,并在 UI 中配置模型提供商。对于长期运行的多用户部署,应将其置于 VPN 或需要身份验证的反向代理之后,而不要将原始 UI 发布到开放互联网。对于服务器上其他界面可控制敏感功能的工具,也应遵循这一做法。例如,应通过连接到 UI 的隧道访问自托管的开源扫描器,而不是发布端口。
其他指南止步之处,以及您不应止步于此
搜索 Agent Zero 的安装方法时,您会找到许多指南,包括托管公司提供的指南。这些指南通常会引导您在 50001 端口上运行 Web UI,然后就此结束。但风险正是从这里开始,而不是结束。完成部署还需要两项措施。第一,像上文一样,将 UI 保持为私有。第二,在服务器前配置默认拒绝的防火墙。这样,即使某个容器意外暴露端口,或您将来配置错误,也不会暴露您忘记检查的端口:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable请参阅防火墙基础知识了解完整配置,并注意IPv6 缺口,因为即使 IPv4 规则看起来很严格,::上的服务仍可通过 IPv6 访问。
容器隔离保护的是代理,而不是您的服务器
Agent Zero 的设计在一种隔离方式上确实做得很好:从属代理运行在独立容器中,因此彼此隔离。这种隔离很有价值。但您很容易将其理解为“它运行在沙箱中,所以我很安全”,然后就此止步。容器隔离保护代理不受其他代理影响。它无法保护您的服务器免受互联网攻击,也无法阻止暴露的 Web UI 将控制权交给陌生人。这些安全措施需要由您在主机上负责。请预先确定:在无人监控时,代理最多可以执行哪些操作。这与 Claude Code 的权限模式 背后的判断相同:无人值守的服务器应采用比摆在您面前的笔记本电脑更严格的设置。
密钥、用户与主机
将模型 API 密钥和其他凭据保存在 Agent Zero 的配置文件或环境文件中,并确保只有正确的账户可以读取。不要将其留在 shell 历史记录中,也不要提交到任何代码仓库。对于主机上其他用于保护密钥的组件,也应采用相同的思路。例如,加固 Vaultwarden的重点在于保护其管理员令牌和备份文件,而不是重复处理应用已经完善实现的加密功能。按照最小权限用户的做法,以非特权用户而不是 root 管理主机,并参考SSH 加固,将 SSH 改为仅使用密钥认证。然后按照下面的检查清单逐项检查,避免遗漏。
如果您正在比较不同的代理,这也是OpenClaw 加固指南和OpenHands 指南采用的安全策略:保持控制面为私有状态,以非特权用户运行,默认启用防火墙,并将主机视为会运行未由您编写的代码的系统。要并排比较这 5 个代理,请参阅2026 年最佳自托管 AI 代理。
这些方案的底层概念都在在 VPS 上构建自己的 AI 代理中介绍;Dify也是一个值得比较的可自托管平台。
FAQ
Agent Zero 适合自行托管吗?
如果将其 Web UI 保持为私有界面并加固主机,则可以。Agent Zero 会运行代码、浏览器和 shell,并通过 Web UI 进行控制。该界面默认发布在端口 50001 上。因此,风险来自暴露的界面,而不是框架本身。将 UI 绑定到 loopback,通过 SSH 或 VPN 访问;配置默认拒绝的防火墙;并使用非特权用户运行。
Agent Zero 默认会将 Web UI 暴露到互联网吗?
标准的 docker run 会在每个网络接口的端口 50001 上发布该界面。对于公网 VPS,这意味着容器启动后,界面立即可从互联网访问。将发布地址改为 127.0.0.1,使 UI 仅监听 loopback,然后通过 SSH 隧道或 VPN 访问。
Agent Zero 可以运行在小型 VPS 上吗?
可以。只要能运行 Docker,就能运行 Agent Zero,包括小型、低成本的 VPS。不过,更繁重的任务和更大的本地模型需要更多内存。如果使用自行托管的模型,而不是托管 API,应根据模型而不只是 Agent Zero 的需求为服务器配置资源。
Agent Zero 与 OpenClaw 或 Hermes 有何不同?
它们的功能有重叠,但目标不同。Agent Zero 是一个以 Docker 为基础的框架,围绕主代理构建。主代理会在隔离容器中创建从属代理,并通过 Web UI 进行控制。OpenClaw 和 Hermes 是通过聊天应用访问的个人助理。三者的安全要求相同:保持控制界面私有,并加固主机。