嗨,大家今天過得好嗎?歡迎來到鐵人賽 Day 24。
過去 23 天,我們在自己的電腦上(Localhost)打造了一個極度強悍的 AI 硬體推薦系統。你的電腦現在既是前端展示機,又是 n8n 伺服器,還是 PostgreSQL 資料庫。
但只要你把筆電蓋上,這個系統就從世界上消失了。
如果你想把這個 App 裝到朋友的手機上,或是提交到 App Store,我們就必須讓後端引擎 24 小時在網際網路上隨時待命。今天,我們要正式把戰場轉移到雲端伺服器 (VPS) 上!
要讓 n8n 跟 PostgreSQL 順暢運行,我們不需要買到頂級的雲端架構。對於初期的 MVP 來說,一台基礎的 Linux VPS 就綽綽有餘了。
你可以選擇 DigitalOcean、Linode (Akamai) 或是 AWS 的 EC2。
規格建議:
把伺服器租好後,透過 SSH 連線進去,並在上面安裝好 Docker 與 Docker Compose。這部分屬於標準的 Linux 系統操作,網路上有一大堆一鍵安裝指令,這裡我們就不贅述。
還記得我們在 Day 3 堅持不用傳統方式安裝,而是寫了一份 docker-compose.yml 嗎?現在就是驗收這個決定的時刻了。
如果以前沒有 Docker,你要在雲端主機重新安裝 Node.js、設定環境變數、安裝 Postgres、建立資料庫表單... 搞一整天可能還會因為作業系統版本不同而報錯。
現在,你只需要做兩件事:
docker-compose.yml 檔案,原封不動地複製到雲端 VPS 上。docker-compose up -d。Boom!結束了!
你的 n8n 引擎和資料庫,已經完美地在雲端主機上跑起來了。所有你在 Localhost 拉好的節點、寫好的 SQL 查詢,都可以透過 n8n 的匯出/匯入功能 (Export/Import) 直接搬上雲端,無縫接軌。這就是容器化 (Containerization) 的極致魅力。
伺服器跑起來後,你可能會想:「太棒了!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) 規範。
為了讓我們的雲端 n8n 具備 HTTPS 憑證,我們必須幫它穿上一層安全的外衣。標準的作法如下:
my-ai-hardware.com。123.45.67.89)。docker-compose.yml 裡面。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 見!