AI News HubLIVE
站内改写2 分钟阅读

私人AI第二部:使用Tailscale Aperture实现安全远程访问

本文介绍如何通过Tailscale私有网络和Aperture AI网关,安全地远程访问自托管的大语言模型,避免暴露在公共互联网上。

来源Hacker News AI作者: anactofgod

在《私人AI》系列的第一部分中,我们成功在GB10 NVIDIA DGX Spark上运行了Qwen3.6-35B-A3B-FP8模型,并通过vLLM提供了兼容OpenAI的API。然而,该服务仅在本地主机(localhost:8000)可访问。本第二部分将带你完成后续步骤,使模型能够从任何授权设备安全访问,而无需暴露在公网。

核心思路:采用两层保护机制——Tailscale(私有网格网络)和Aperture(AI网关)。Tailscale在设备间建立加密的直接连接,如同位于同一局域网;Aperture则通过请求者的Tailscale身份进行认证,并集中记录所有使用情况。

第三阶段:将服务器加入私有网络

首先,在AI服务器(例如DGX Spark)上安装并启动Tailscale:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

浏览器打开输出的URL,使用你的Tailscale账号登录。记下服务器的Tailscale IP(如100.92.0.10),后续配置需要。如果服务器启用了防火墙(如ufw),记得允许Tailscale接口上的8000端口。

第四阶段:部署Aperture网关

前往aperture.tailscale.com申请访问(测试版免费)。成功后在Tailscale管理控制台可看到名为gateway的节点,其仪表盘地址为http://gateway/ui。

在Aperture仪表盘的Configuration中编辑原始的HuJSON配置,在providers块内添加自定义提供商:

"sovereign": {
  "baseurl": "http://100.92.0.10:8000",
  "apikey": "local-no-auth",
  "models": ["Qwen/Qwen3.6-35B-A3B-FP8"]
}

注意:baseurl仅包含主机和端口,不要添加/v1;apikey可为任意字符串;models必须与vLLM提供的模型ID完全一致。

然后,在grants块中添加访问规则,例如允许所有用户访问所有模型:

"grants": [
  {
    "src": ["*"],
    "app": {
      "tailscale.com/cap/aperture": [
        { "role": "admin" },
        { "models": "**" }
      ]
    }
  }
]

保存配置后,在Models选项卡中点击Play按钮测试,绿色表示连接成功。

第五阶段:客户端连接

在客户端(如笔记本电脑)同样安装并登录Tailscale,确保使用与服务器相同的账号。然后测试连接:

curl http://gateway/v1/models

若返回模型列表,则MagicDNS生效。接着发起真实请求:

curl http://gateway/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"Qwen/Qwen3.6-35B-A3B-FP8","messages":[{"role":"user","content":"hello from my laptop"}]}'

无需API密钥,Tailscale身份即认证凭证。请求日志将在Aperture仪表盘中可见。

常见故障排除

  • Play按钮显示红X:检查Tailscale ACL是否允许Aperture节点访问服务器的8000端口。
  • 路径错误:确保baseurl不含/v1。
  • 模型未显示:确认apikey非空且模型ID正确。
  • 无法解析gateway:启用MagicDNS或使用Aperture节点的Tailscale IP。
  • 访问被拒:检查grants配置。

现在,你已经拥有一个私密、安全、可远程访问的AI模型。后续可将各类应用指向http://gateway/v1,API密钥随意填写,模型选择相应ID即可。