快速摘要
VPS 給你最大的自由度,但也意味著安全責任全在你身上。這篇教你從零開始在 Linux VPS 上安全地部署 AI 應用,包括 SSH 加固、防火牆、Docker 隔離和 Nginx 反向代理。
什麼時候需要 VPS
以下情況建議用 VPS 而不是 PaaS:
- 需要跑開源 LLM(Ollama、vLLM)
- 需要自架向量資料庫
- 需要完全掌控資料儲存位置(合規要求)
- 需要長時間執行的背景任務
- 需要 GPU 運算
如果只是部署靜態網站或簡單的 API,用 Cloudflare Pages 或 Vercel 更省事。
初始安全設定
拿到新 VPS 後,第一件事不是部署應用,而是做安全設定:
- 更新系統:
apt update && apt upgrade -y - 建立非 root 使用者:永遠不要用 root 跑應用程式
- 設定 sudo:讓新使用者可以用 sudo 執行需要的指令
- 設定時區和 NTP:確保日誌的時間正確(對於事故調查很重要)
- 安裝 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 的優勢是資料完全在你手上。