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即可。