快速摘要
VPS 給你最大的自由度,但也意味著安全責任全在你身上。這篇教你從零開始在 Linux VPS 上安全地部署 AI 應用,包括 SSH 加固、防火牆、Docker 隔離和 Nginx 反向代理。

什麼時候需要 VPS

以下情況建議用 VPS 而不是 PaaS:

  • 需要跑開源 LLM(Ollama、vLLM)
  • 需要自架向量資料庫
  • 需要完全掌控資料儲存位置(合規要求)
  • 需要長時間執行的背景任務
  • 需要 GPU 運算

如果只是部署靜態網站或簡單的 API,用 Cloudflare Pages 或 Vercel 更省事。

初始安全設定

拿到新 VPS 後,第一件事不是部署應用,而是做安全設定:

  1. 更新系統apt update && apt upgrade -y
  2. 建立非 root 使用者:永遠不要用 root 跑應用程式
  3. 設定 sudo:讓新使用者可以用 sudo 執行需要的指令
  4. 設定時區和 NTP:確保日誌的時間正確(對於事故調查很重要)
  5. 安裝 fail2ban:自動封鎖暴力破解嘗試

SSH 加固

SSH 是你連接 VPS 的主要方式,必須嚴格保護:

  • 禁用密碼登入:只允許 SSH Key 認證
  • 禁用 root 登入PermitRootLogin no
  • 更換預設 port:改成非標準 port(例如 2222)可以減少自動化攻擊
  • 限制登入使用者AllowUsers your-username
  • 使用 Ed25519 Key:比 RSA 更安全更快

防火牆設定

用 ufw(Uncomplicated Firewall)設定基本規則:

ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp    # SSH(自訂 port)
ufw allow 80/tcp      # HTTP
ufw allow 443/tcp     # HTTPS
ufw enable

原則:只開放需要的 port,其他全部封鎖。

Docker 部署

用 Docker 部署 AI 應用的好處是隔離性好、易於管理。安全注意事項:

  • 不要用 root 跑 container:在 Dockerfile 中加入 USER 指令
  • 限制資源:用 --memory--cpus 限制 container 的資源使用
  • 不要暴露不必要的 port:只 expose 需要的 port
  • 定期更新 base image:舊的 image 可能有已知漏洞
  • 環境變數管理:用 Docker secrets 或 .env 檔案,不要寫在 Dockerfile 裡

Nginx 反向代理

用 Nginx 作為反向代理放在 AI 應用前面,提供:

  • SSL 終止(處理 HTTPS)
  • 速率限制
  • 安全 headers
  • 靜態檔案快取
  • 負載平衡(如果有多個實例)

SSL 設定

用 Let's Encrypt + Certbot 取得免費的 SSL 憑證。Certbot 可以自動更新憑證,但要確認 cron job 有正確設定。

監控與維護

VPS 需要持續維護,不是部署完就可以不管:

  • 系統更新:每週檢查安全更新,設定自動安全更新
  • 日誌監控:定期查看 /var/log/auth.log(登入嘗試)和應用日誌
  • 資源監控:監控 CPU、記憶體、磁碟使用率
  • 備份:設定自動備份(至少每日),並定期測試備份還原
  • 入侵偵測:安裝 AIDE 或 OSSEC 監控檔案變動

常見問題

VPS 推薦哪家?

Linode、DigitalOcean、Vultr 都不錯。選離目標使用者近的機房。如果主要服務台灣使用者,可以選東京或新加坡機房。

需要多大的 VPS?

純 API proxy 或靜態網站:1-2 GB RAM 就夠。跑開源 LLM:至少 16 GB RAM + GPU。建議先從小開始,需要時再升級。

VPS 比 Vercel/Cloudflare 安全嗎?

不一定。VPS 的安全完全取決於你的設定。如果你不熟悉伺服器管理,用 Vercel/Cloudflare 反而更安全。VPS 的優勢是資料完全在你手上。