部署到
全世界
寫好的網站不上線等於沒寫。但部署有上千種方式:靜態站、SSR、Docker、邊緣運算... 這章把 Vercel、Zeabur、Cloudflare Pages、Cloudways 全部教完,包含每個的優缺點、價格、適合場景。
- 會把任何網站放上網路(5 分鐘)
- 會用 Vercel、Zeabur、Cloudflare Pages
- 會處理環境變數、自訂網域、SSL
- 會寫 Dockerfile、docker-compose
- 會做 CI/CD(push 即部署)
部署到底是什麼?
你寫好的網站在你電腦跑得很開心,但全世界的人怎麼看到?要把它放到一台24 小時開著的電腦(伺服器),給網域名稱(第 12 章),讓使用者輸入網址就能連到。
三大部署模式
- 靜態:HTML/CSS/JS 上 CDN,免費、超快、夠用 80% 場景
- Serverless:每次請求才執行函式,按用量計費
- 傳統 Server:跑一個常駐程式,租 VPS 或 PaaS
各家部署平台比較
| 平台 | 強項 | 價格 | 推薦給 |
|---|---|---|---|
| Vercel | Next.js 親兒子、超穩 | 免費 / Pro $20 | Next 專案 |
| Zeabur | 台灣公司、Docker / Node / Python 都吃 | 免費 / Pro $5 | 後端、台灣團隊 |
| Cloudflare Pages | 全球邊緣、超大頻寬免費 | 真免費 | 靜態站、流量大 |
| Cloudways | 託管 VPS、WordPress | $11+ / 月 | WordPress、固定資源 |
| Netlify | 類似 Vercel | 免費 / Pro $19 | 靜態站 |
| Railway | 後端友善 | $5 起 | 後端、DB |
| Render | 容易 | 免費 / $7+ | 新手後端 |
| Fly.io | 邊緣 + Docker | $5+ | 進階 Docker |
新手三選一:
• 純前端 / Next.js → Vercel
• 有後端 / Docker → Zeabur
• 大流量靜態 / 想 0 元 → Cloudflare Pages
Vercel(5 分鐘上線)
- 把專案推到 GitHub
- 到 vercel.com,登入 GitHub
- Import 你的 repo
- 確認框架(自動偵測 Next.js / Vite / Vue)
- 填環境變數(DATABASE_URL 等)
- Deploy → 1 分鐘後拿到
xxx.vercel.app
之後每次 git push 自動部署。PR 會自動生 preview URL。
自訂網域
- Settings → Domains → 加入
yourdomain.com - 到網域商加 CNAME 指向
cname.vercel-dns.com - SSL 證書 Vercel 自動申請(Let's Encrypt)
Vercel 免費版超過頻寬會直接 ban 站。商用建議升 Pro。或用 Cloudflare Pages(流量真免費)。
Zeabur:台灣的雲端
Zeabur 對 Vercel 的痛點下手——支援任何框架(Vercel 偏 Next)、有正式東京區、價格便宜、繁中支援、小團隊有真人客服。
什麼可以放
- Next.js / Nuxt / Astro / 任何前端
- Node / Python / Go / Rust 後端
- PostgreSQL / Redis / MongoDB(一鍵部署)
- 任何 Docker image
- 靜態站
部署流程
- 到 zeabur.com 登入 GitHub
- 建 Project → 選 Region(東京)
- Add Service → 從 GitHub 選 repo
- 設環境變數
- 網域 Tab:用
xxx.zeabur.app或綁自訂網域
放後端 + DB 的範例
同個 Project 裡開三個 Service:
- Service A:Next.js 前端
- Service B:Express API
- Service C:PostgreSQL(template 一鍵)
內部用 service name 互相連線,不走外網。
SnowRealm 整套(Insight、YukiBoard 後端、毛行天下)跑在 Zeabur,東京區。對需要在台灣 / 亞洲低延遲的應用是首選。
Cloudflare Pages
Cloudflare 把 200+ 城市的邊緣節點開放給你免費跑網站。頻寬無限、請求無限、build 500 次 / 月。
適合場景
- 靜態網站(行銷頁、文件、部落格)
- 用 Workers 寫超輕量 API
- 大流量、想省錢
部署
- 登入 Cloudflare → Workers & Pages → Create Project
- 連 GitHub repo
- 選框架(自動偵測)
- 設環境變數、build command(
npm run build)、輸出目錄(dist/.next) - Save and Deploy
Cloudflare Workers(serverless function)
// functions/api/hello.ts
export async function onRequest(ctx) {
return new Response(JSON.stringify({ hi: 'world' }), {
headers: { 'Content-Type': 'application/json' }
});
}
Cloudflare Pages 跑 Next.js 限 SSG / 部分 SSR。完整 Next.js 還是 Vercel / Zeabur 順。靜態站 / Astro / Vue SPA Cloudflare 王者。
Cloudways:託管 VPS
Vercel、Zeabur 是 PaaS(你只管 code)。Cloudways 比較像「半托管 VPS」——你選 DigitalOcean / AWS / GCP,它幫你裝 LAMP / LEMP,你直接上 WordPress / Laravel。
適合場景
- WordPress 客戶網站(90% 接案會遇到)
- 需要 PHP(Laravel)的專案
- 想要固定資源不被流量罰
價格
- $11/月 起(DigitalOcean 1GB)
- 包含:自動備份、SSL、CDN、staging、防火牆
Docker 入門
Docker 把你的 app 打包成一個「容器」,可以在任何地方一致地跑。
# Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
docker build -t my-app .
docker run -p 3000:3000 my-app
# docker-compose.yml:一次跑多個服務
services:
app:
build: .
ports:
- "3000:3000"
environment:
DATABASE_URL: postgres://db/app
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
docker compose up -d
Zeabur、Fly.io、Railway 都吃 Dockerfile。寫一個 Dockerfile,到處部署。
環境變數與 secrets
- 本地:
.env檔(加進.gitignore) - 正式:到部署平台後台設
- NEXT_PUBLIC_*:在前端可讀。不要放敏感資料!
API key 不要寫在前端 code 裡。打開瀏覽器 view-source 一看就有。要呼叫第三方 API 一律走自己的後端代理。
CI/CD:push 即部署
GitHub Actions 範例(push 到 main 自動跑測試):
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build
Vercel / Zeabur / CF Pages 都自動 push 部署,不用自己寫 CI 部署。GitHub Actions 用來跑測試、lint、安全掃描。
練習:把第 8 章部落格上線
- 推到 GitHub
- 用 Vercel 部署 → 確認可以打開
- 用 Zeabur 部署同個 repo → 比較速度
- 用 Cloudflare Pages 部署 → 比較
- 寫 Dockerfile,本機 docker run 起來
- 挑你最喜歡那個正式上線
常見卡關 FAQ
"engines": {{"node": "20"}}),或檔案大小寫(Mac 不分,Linux 區分)。看 build log 通常會講。/health;(4) 設 uptime monitor(UptimeRobot 免費)。