用Cloudflare Tunnel安全访问VPS上的Hermes Dashboard(零端口暴露方案)

ℹ️

披露声明:本文可能包含联盟链接(Affiliate Links)。当您通过这些链接购买产品时,我们会获得少量佣金,不会增加您的购买成本。所有测评内容均为编辑独立撰写,观点保持中立,不受厂商影响。了解更多 →

💡 AD: DigitalOcean $200 Free Credit (60 Days) Claim via Our Link →

💡 核心摘要

  • 直接开放VPS端口让AI Dashboard对外访问是个常见的安全失误
  • Cloudflare Tunnel提供了一个更好的方案:VPS主动向外建立连接,不需要开放任何入站端口,真实IP完全隐藏,还能叠加Zero Trust身份验证
  • 这篇是完整的配置流程
💡
💡

Contabo 官方推荐

通过专属链接获取最优价格,支持我们持续测评。

探索 Contabo 方案

我帮人排查过几次VPS被入侵的情况,事后看日志,问题几乎都出在同一个地方:Web服务直接暴露在公网端口上,没有任何身份验证。AI Agent这类工具尤其危险,它有执行代码、调用API、操作文件的权限,一旦被未授权访问,损失可能很大。

Cloudflare Tunnel解决的就是这个问题。它让VPS主动向Cloudflare建立出站连接,用户通过你的域名访问服务,整个过程不需要在VPS上开放任何入站端口。


工作原理

传统方式:用户 → 服务器IP:端口 → 服务

Cloudflare Tunnel:用户 → Cloudflare → 加密隧道 → VPS本地服务

VPS的防火墙可以完全关闭所有入站端口(除了SSH),服务器真实IP不会暴露,扫描器扫不到任何开放端口。


准备工作

三件事需要提前确认:VPS已安装并运行Hermes(或其他需要访问的服务)、有一个域名并且已经添加到Cloudflare管理(即DNS托管在Cloudflare)、Cloudflare账号。

假设Hermes本地运行在http://localhost:3000,以下步骤把它安全地暴露到https://ai.yourdomain.com


配置步骤

安装cloudflared:

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
cloudflared --version

登录Cloudflare账户,会打开一个授权链接,在浏览器里完成授权:

cloudflared tunnel login

创建Tunnel,名字随意:

cloudflared tunnel create hermes-tunnel

执行完会输出Tunnel ID,同时在~/.cloudflared/目录下生成一个JSON凭证文件,记住这个文件的路径。

把子域名绑定到Tunnel:

cloudflared tunnel route dns hermes-tunnel ai.yourdomain.com

创建配置文件:

nano ~/.cloudflared/config.yml

写入以下内容,把JSON文件路径替换成你实际的路径:

tunnel: hermes-tunnel
credentials-file: /root/.cloudflared/你的tunnel-id.json

ingress:
  - hostname: ai.yourdomain.com
    service: http://localhost:3000
  - service: http_status:404

测试配置是否正确:

cloudflared tunnel ingress validate

运行Tunnel测试访问:

cloudflared tunnel run hermes-tunnel

浏览器打开https://ai.yourdomain.com,能看到Hermes界面说明配置成功。


设置开机自启

测试没问题之后,用systemd管理让它持续运行:

sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared

安全加固(必做)

Tunnel配置好之后,在VPS上关闭所有不必要的入站端口:

sudo ufw default deny incoming
sudo ufw allow 22/tcp        # 保留SSH
sudo ufw enable
sudo ufw status

这样VPS上只有SSH端口对外开放,Hermes的3000端口完全不可见,扫描器什么都找不到。

叠加Cloudflare Zero Trust访问控制是更进一步的保护。进入Cloudflare控制台,找到Zero Trust → Access → Applications,添加你的ai.yourdomain.com域名,设置访问策略。可以要求通过Google账号、GitHub账号或邮箱验证才能访问,只有你(或你指定的人)能打开这个页面。

这个组合的效果是:即使有人知道你的域名,没有通过Zero Trust验证也看不到任何内容,VPS的真实IP也完全隐藏。


常见问题

Tunnel启动后域名访问超时,检查config.yml里的本地服务地址和端口是否正确,确认Hermes确实在运行:

curl http://localhost:3000

如果返回正常内容,问题在Tunnel配置;如果连接拒绝,Hermes没有正常运行。

日志查看:

sudo journalctl -u cloudflared -f

凭证文件找不到,检查config.yml里的路径是否和实际文件路径一致:

ls ~/.cloudflared/

JSON文件应该在那里,文件名就是Tunnel ID。


性能影响

实测Cloudflare Tunnel会增加约20到50ms的额外延迟,Cloudflare会把请求路由到最近的边缘节点再转发到VPS。对于Dashboard访问、API调用这类操作,这个延迟几乎没有感知。

Cloudflare Tunnel的基础功能完全免费,Zero Trust也有免费额度,对个人用户来说足够。

这套方案(Tunnel + Zero Trust + UFW关闭所有入站端口)是2026年自托管AI工具的推荐安全配置,比开放端口加BasicAuth要安全得多,配置复杂度也不高,一次设置好之后不需要再维护。

🚀

想上 Contabo?现在正是好时机

通过我们的专属链接购买,不仅价格最优,还能支持我们持续创作。

🏷️ 相关关键词

← 上一篇
Ubuntu vs Debian Linux VPS系统实测对比
下一篇 →
2026年Hostinger VPS深度评测 :新手友好、配置实在,但有几件事要提前知道

💬 评论区

还可输入 150 字

暂无评论,来说两句吧!

← 返回文章列表