第十章:印鈔機的全球部署與資安防護 - Vercel 極速上線與數位資產保護

當你在本地端 (Localhost) 的開發環境把網站刻得再精美、動畫調得再完美,只要它還沒有正式發布到網際網路上,它都不會幫你賺到半毛錢。

在過去的傳統開發時代,部署 (Deployment) 對前端工程師來說就像是一場噩夢: 你必須去 AWS 或 Linode 租一台 Linux 虛擬機,學習艱澀的指令去安裝 Nginx、設定反向代理、自己去 Let's Encrypt 申請 SSL 憑證以確保有 HTTPS 綠色鎖頭,最後還要用 PM2 來確保伺服器當機時會自動重啟。 這個過程不僅繁瑣,而且伺服器只要流量一大,就很容易崩潰。

所幸,我們生在 Serverless (無伺服器) 的黃金年代。而 Vercel,就像是上天送給 Next.js 開發者的終極大禮。


🚀 零配置的極速部署:Vercel 的魔法

Vercel 這家公司,其實就是開發出 Next.js 這套框架的母公司。這意味著,Vercel 雲端平台與你的 Next.js 專案之間,有著最高等級的最佳化與相容性。

你要將這套 Vibe Tutor 系統上線營業,過程簡單到令人髮指:

  1. 將專案推上 GitHub: 在你的終端機輸入 git add .git commit -m "準備上線"git push,把你的原始碼推送到一個私有 (Private) 的 GitHub 儲存庫中。
  2. 在 Vercel 串接 GitHub 庫: 登入 Vercel 官網,點擊右上角的 "Add New Project",選擇你剛剛建立的 GitHub 儲存庫,點擊 "Deploy"。

就這樣,你不需要打任何一行 Linux 指令。 Vercel 的超級電腦會自動幫你下載程式碼、安裝 npm 套件、將你的 Next.js 打包最佳化,並把它部署到全球的邊緣節點 (Edge Network) 上。 最佛心的是,Vercel 會自動幫你申請並永久自動更新 HTTPS 安全憑證

未來,當你修改了任何一行程式碼,只要你一 Push 到 main 分支,Vercel 就會自動觸發 CI/CD 流水線,在背景幫你重新編譯並平滑上線,全程使用者完全感覺不到網站有斷線。


🔐 致命的資安防禦:環境變數 (Environment Variables) 管理

雖然 Vercel 部署很簡單,但有一件事絕對不能出錯:金鑰管理。 我們這套專案中,有許多絕對不能外流的機密,一旦外流,你的資料庫可能會被刪光,甚至綠界金流可能會被駭客竄改。

這些機密包含:

  • Supabase 的資料庫連線網址 NEXT_PUBLIC_SUPABASE_URL
  • Supabase 的最高權限後門鑰匙 SUPABASE_SERVICE_ROLE_KEY (⚠️ 這是核彈級機密)
  • 綠界科技的 ECPAY_MERCHANT_IDECPAY_HASH_KEYECPAY_HASH_IV (⚠️ 這是金庫的鑰匙)

在你的電腦本地端開發時,我們是把它們放在 .env.local 這個隱藏檔案裡。因為我們有設定 .gitignore,所以這個檔案「絕對不會」被上傳到 GitHub 上。 那問題來了:如果在 GitHub 上沒有這個檔案,Vercel 在編譯的時候,要怎麼知道這些密碼?

解法: 你必須進入 Vercel 的專案後台 ➡️ 點選 Settings ➡️ 找到 Environment Variables 區塊,將你本地 .env.local 裡面的每一筆變數,一筆一筆地貼上去儲存。

🛑 [資安防護最高準則]:NEXT_PUBLIC_ 的雙面刃

在 Next.js 中,任何環境變數只要加上了 NEXT_PUBLIC_ 開頭,Next.js 在編譯時,就會把這個變數「直接打包進送給前端瀏覽器的 JavaScript 裡」。 這代表任何懂技術的人,只要在他的瀏覽器按下 F12 查看原始碼,就能直接看到這個變數的值!

因此,千萬千萬不要把 Supabase 的 SERVICE_ROLE_KEY 或是綠界的 HASH_KEY 加上 NEXT_PUBLIC_。 讓它們乖乖保持原名,這樣 Next.js 就會把它們鎖在後端 (Server Components 或 API Routes) 的機房裡,這是保護你商業機密的最安全做法。


📦 數位資產 (商品) 保護策略:防盜版實戰

既然你買了這套系統,打算自己開課賣錢,你就必須學會如何保護你的「數位商品」(例如你辛苦寫的源碼 ZIP 檔,或是私密教學影片)。

在 Vibe Tutor 的預設基礎架構中,如果我們將打包好的 .zip 直接放在 public/source_codes/ 底下,這意味著它們是可以透過 https://你的網站.com/source_codes/app.zip 這種網址直接被下載的。 那如果有人買了課之後,把這個網址惡意貼到 PTT 或是論壇上,大家不就都可以免費下載了嗎?

為了做到滴水不漏的防盜版,未來的進階架構升級方向是: 不要把數位商品放在 Vercel 裡,而是上傳到 Supabase Storage (物件儲存庫),並設定該 Bucket 為私有 (Private)!

當使用者在前端點擊「下載專案原始碼」按鈕時,系統會走以下極度安全的流程:

  1. 前端不直接開新分頁,而是透過 fetch 呼叫你的後端 API Route (/api/download)。
  2. API Route 收到請求,從使用者的 Cookie 中驗證他的身份。
  3. API 查詢 vt_purchases 資料庫,嚴格核對他是否真的有花錢買過這個方案
  4. 如果他確實有買,後端 API 拔出最高權限的 Server Client,呼叫 Supabase 的 storage.createSignedUrl() 函式。
  5. 這個函式會動態產生一個「只能存活 60 秒的臨時加密下載網址」,回傳給前端。
  6. 前端拿到這串長長的臨時網址後,自動觸發下載。

透過這套 Signed URL (簽章網址) 的機制,即使盜版仔把網址貼到網路上,只要過了 60 秒這個網址就會徹底失效跳出 Error。這從根本上杜絕了數位資產外流的問題!


🎉 結語:下一個百萬美元專案,就在你的鍵盤底下

這 10 個章節的 Vibe Tutor Web 實戰旅程,到這邊畫下完美的句點。

我們拆解了從前端的「尊榮感毛玻璃 UI」、「動態 Markdown 內容渲染」、「Freemium 權限防火牆」,一路打到後端的「PostgreSQL 極簡資料庫設計」與「綠界金流串接」的所有商業與技術秘密。

這絕對不是一套普通的玩具原始碼,這是結合了敏捷商業思維消費者心理學設計,與現代頂尖前端技術的心血結晶。

現在,這台印鈔機的原始碼與啟動鑰匙,都已經交到你的手上了。 趕緊更改 Logo、換上你專屬的主色系、寫下你獨一無二的專業知識,把這個平台變成你的專屬知識殿堂,開始賺取屬於你的被動收入吧!

不要畏懼失敗,上線 (Launch) 才是檢驗真理的唯一標準。祝你在一人創業的路上,大獲全勝!🚀

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!