iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
Vibe Coding

從零打造 AI 全端應用:Vibe Coding 結合 n8n 視覺化工作流實戰系列 第 24 篇

Day 24:告別 Localhost:將 n8n 與資料庫部署上雲端 (VPS) 的實戰指南

  • 分享至 

  • xImage
  •  

Day 24:告別 Localhost:將 n8n 與資料庫部署上雲端 (VPS) 的實戰指南

嗨,大家今天過得好嗎?歡迎來到鐵人賽 Day 24。

過去 23 天,我們在自己的電腦上(Localhost)打造了一個極度強悍的 AI 硬體推薦系統。你的電腦現在既是前端展示機,又是 n8n 伺服器,還是 PostgreSQL 資料庫。

但只要你把筆電蓋上,這個系統就從世界上消失了。
如果你想把這個 App 裝到朋友的手機上,或是提交到 App Store,我們就必須讓後端引擎 24 小時在網際網路上隨時待命。今天,我們要正式把戰場轉移到雲端伺服器 (VPS) 上!

部署第一步:挑選一台 VPS (虛擬專屬主機)

要讓 n8n 跟 PostgreSQL 順暢運行,我們不需要買到頂級的雲端架構。對於初期的 MVP 來說,一台基礎的 Linux VPS 就綽綽有餘了。

你可以選擇 DigitalOcean、Linode (Akamai) 或是 AWS 的 EC2。
規格建議:

  • 作業系統: Ubuntu 22.04 或 24.04 LTS(最多套件支援、最不容易踩雷)。
  • 硬體資源: 至少 1GB RAM(建議 2GB,因為 LLM 節點處理大量 JSON 時滿吃記憶體的),搭配 1 顆 CPU。這通常每個月只要 5 到 10 塊美金。

把伺服器租好後,透過 SSH 連線進去,並在上面安裝好 Docker 與 Docker Compose。這部分屬於標準的 Linux 系統操作,網路上有一大堆一鍵安裝指令,這裡我們就不贅述。

部署第二步:見證 Docker 的搬家魔法

還記得我們在 Day 3 堅持不用傳統方式安裝,而是寫了一份 docker-compose.yml 嗎?現在就是驗收這個決定的時刻了。

如果以前沒有 Docker,你要在雲端主機重新安裝 Node.js、設定環境變數、安裝 Postgres、建立資料庫表單... 搞一整天可能還會因為作業系統版本不同而報錯。

現在,你只需要做兩件事:

  1. 把你電腦裡的 docker-compose.yml 檔案,原封不動地複製到雲端 VPS 上。
  2. 在 VPS 的終端機輸入:docker-compose up -d。

Boom!結束了!
你的 n8n 引擎和資料庫,已經完美地在雲端主機上跑起來了。所有你在 Localhost 拉好的節點、寫好的 SQL 查詢,都可以透過 n8n 的匯出/匯入功能 (Export/Import) 直接搬上雲端,無縫接軌。這就是容器化 (Containerization) 的極致魅力。

致命踩坑警告:iOS 的 HTTPS 霸王條款 (ATS)

伺服器跑起來後,你可能會想:「太棒了!VPS 的 IP 是 123.45.67.89,我只要把 Swift 裡面的 APIService 網址改成 http://123.45.67.89:5678 就可以了吧?」

千萬不要這麼做!這是 iOS 開發者上線前最常踩的死亡陷阱。

還記得我們在 Day 11 遇到了網路阻擋,然後在 Info.plist 裡面開啟了 Allow Arbitrary Loads = YES 來允許 HTTP 連線嗎?
那個設定只能在開發階段的 Localhost 使用。如果你的 App 打算上架 App Store,Apple 的審查團隊只要看到你的 App 連線到一個沒有加密的 http:// IP 位址,絕對會 100% 直接退件 (Reject)。

Apple 強制要求所有對外的 API 連線,都必須走安全的 https:// 協定,這被稱為 App Transport Security (ATS) 規範。

解決方案:網域 (Domain) + 反向代理 (Reverse Proxy)

為了讓我們的雲端 n8n 具備 HTTPS 憑證,我們必須幫它穿上一層安全的外衣。標準的作法如下:

  1. 買一個網域 (Domain Name): 去 GoDaddy 或 Cloudflare 買一個便宜的網域,例如 my-ai-hardware.com。
  2. 設定 DNS 紀錄: 將這個網域的 A Record 指向你 VPS 的 IP 位址 (123.45.67.89)。
  3. 架設反向代理伺服器:
    在你的 VPS 上,最受歡迎且對新手最友善的解法是使用 Caddy 或是 Traefik。把它們加進你的 docker-compose.yml 裡面。
    它們會擋在 n8n 前面,當有人造訪 https://api.my-ai-hardware.com 時,它們會自動幫你向 Let's Encrypt 申請並更新免費的 SSL 憑證,然後再把安全解密後的資料轉交給內部的 n8n (Port 5678)。

(註:n8n 官方文件也有提供整合了 Traefik 的 docker-compose 範例,只要複製貼上並改掉網域名稱就能無痛啟用 HTTPS!)

小結

今天我們成功把引擎從舒適圈推向了殘酷的網際網路,並且了解了上線前絕對逃不掉的 HTTPS 與網域設定。

我們的後端已經正式「轉大人」,在雲端以安全的 HTTPS 協定 24 小時待命了。
明天,我們要回到 Xcode,進行上線前的「最後大掃除」:把所有的測試網址換成正式網域、關閉那些為了方便開發而開啟的資安漏洞,並且準備迎接 TestFlight 的洗禮!

我們 Day 25 見!


上一篇
Day 23:打造不死的後端:n8n 錯誤捕捉 (Error Trigger) 與 Fallback 備援機制
下一篇
# Day 25:App 上架前的最後防線:Xcode 大掃除與 n8n 正式環境切換
系列文
從零打造 AI 全端應用:Vibe Coding 結合 n8n 視覺化工作流實戰 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言