Heroku 部署教學:免費方案與付費方案完整比較【2025】

Heroku 部署教學:免費方案與付費方案完整比較

「Heroku 不是有免費方案嗎?怎麼現在要收費了?」

如果你是在 2022 年之前學程式的,應該對 Heroku 的免費方案印象深刻。但時代變了,2022 年 11 月起,Heroku 取消了免費方案,現在是純付費平台。

不過,Heroku 仍然是最容易上手的 PaaS 平台之一。這篇文章會帶你了解 Heroku 目前的方案選擇、完整的部署流程,以及如果預算有限,有哪些免費替代方案可以考慮。


Heroku 是什麼?

在討論方案和價格前,先認識一下 Heroku 這個平台。

Heroku 平台介紹

Heroku 是 Salesforce 旗下的 PaaS(Platform as a Service)平台,2007 年創立,是最早讓開發者可以「專注寫程式,不管伺服器」的雲端服務之一。

Heroku 的核心理念:

git push 就能部署,其他的事情我們來處理。

當你把程式碼 push 到 Heroku,平台會自動:
1. 偵測你的程式語言
2. 安裝相依套件
3. 編譯(如果需要)
4. 啟動應用程式
5. 提供一個 xxx.herokuapp.com 網址

這種「零設定」的體驗,讓 Heroku 在過去十幾年成為新手學習部署的首選。

Heroku 平台概覽圖:從 Git Push 到應用上線的流程

Heroku 的優缺點

優點

優點 說明
簡單易用 幾乎零設定,push 即部署
多語言支援 Node.js、Python、Ruby、Java、PHP、Go 等
Add-ons 生態系 資料庫、快取、監控等一鍵安裝
Pipeline 功能 內建 staging/production 流程
可靠穩定 老牌平台,文件完整

缺點

缺點 說明
沒有免費方案 2022 年取消,最低 $5/月
冷啟動問題 Eco/Basic 方案閒置會休眠
費用較高 相比新興平台,性價比較低
區域限制 主要在美國和歐洲,亞洲延遲較高

適合什麼類型的專案

適合用 Heroku
- 小型到中型 Web 應用
- 需要快速上線的 MVP 或 Side Project
- 團隊熟悉 Heroku 生態系
- 需要豐富的 Add-ons(如 PostgreSQL、Redis)

可能不適合
- 預算有限的個人專案
- 需要低延遲的亞洲用戶服務
- 需要持續運行的背景任務(Eco 方案會休眠)
- 大流量生產環境(費用會很高)

想了解更多 PaaS 平台的選擇,可以參考 程式部署完整指南


Heroku 方案比較

取消免費方案後,Heroku 目前有哪些選擇?

免費方案(已取消)的替代方案

2022 年 11 月 28 日,Heroku 正式取消免費方案。如果你需要免費的部署平台,可以考慮:

替代方案 免費額度 適合類型
Railway $5/月額度 全端應用
Render 靜態網站免費 前端/靜態網站
Fly.io 一定免費額度 全球分散部署
Vercel 前端免費 Next.js/前端專案
Netlify 靜態網站免費 靜態網站/JAMstack

如果你的專案是後端 API,Railway 是最接近 Heroku 體驗的替代方案,可以參考 Railway 部署教學

Eco / Basic / Standard 方案比較

Heroku 目前的主要方案:

Heroku 方案比較表:Eco、Basic、Standard、Performance 四種方案

方案 月費 Dyno 時數 記憶體 休眠 適合用途
Eco $5 1000 小時/月 512 MB 30 分鐘閒置休眠 個人專案、學習
Basic $7/dyno 無限 512 MB 30 分鐘閒置休眠 小型專案
Standard 1X $25/dyno 無限 512 MB 不休眠 正式環境
Standard 2X $50/dyno 無限 1 GB 不休眠 中型應用
Performance $250+/dyno 無限 2.5 GB+ 不休眠 大型應用

關鍵差異解釋

Dyno 是什麼?
Dyno 就是 Heroku 的運算單位,可以理解為一個容器。一個 Web 應用至少需要一個 Web Dyno。

Eco vs Basic
- Eco:$5 買 1000 小時,可以多個 App 共享
- Basic:每個 App 獨立計費,每個 $7/月

休眠機制
Eco 和 Basic 方案,如果 30 分鐘沒有請求,App 會進入休眠。下次請求需要等待 10-30 秒喚醒(冷啟動)。

費用試算範例

情境一:個人 Side Project
- 1 個 Node.js API
- 預計每天訪問幾次
- 可接受冷啟動延遲

Eco 方案:$5/月

情境二:小型正式服務
- 1 個 Web App
- 需要 24/7 運行
- 不能有冷啟動

Standard 1X:$25/月

情境三:完整 Web 應用
- 1 個 Web App
- 1 個 Worker(背景任務)
- PostgreSQL 資料庫

→ Standard 1X × 2 + Postgres Hobby:$25 × 2 + $9 = $59/月

💡 不確定該選 Heroku 還是其他平台? 現在有很多 PaaS 選擇,各有優缺點。如果你對費用或功能有疑問,讓 VibeFix 幫你評估,我們可以根據你的需求推薦最適合的方案。


Heroku 部署實戰

接下來實際動手,把一個 Node.js 專案部署到 Heroku。

安裝 Heroku CLI

首先安裝 Heroku 命令列工具:

# macOS
brew tap heroku/brew && brew install heroku

# Windows(使用安裝程式)
# https://devcenter.heroku.com/articles/heroku-cli

# Ubuntu/Debian
curl https://cli-assets.heroku.com/install.sh | sh

# 驗證安裝
heroku --version

登入 Heroku

heroku login
# 會開啟瀏覽器進行登入

Heroku CLI 部署步驟圖:5 個步驟從安裝到上線

建立 Heroku App

方法一:使用 CLI

# 在專案目錄執行
cd my-node-app

# 建立 Heroku App
heroku create my-awesome-app

# 如果不指定名稱,Heroku 會自動產生
heroku create

建立後會得到:
- App 網址:https://my-awesome-app.herokuapp.com
- Git remote:heroku(自動加到你的 Git 設定)

方法二:使用 Dashboard

  1. 登入 Heroku Dashboard
  2. 點選「New」→「Create new app」
  3. 輸入 App 名稱
  4. 選擇區域(United States 或 Europe)
  5. 點選「Create app」

設定環境變數

不要把機密資訊寫在程式碼裡!使用 Config Vars:

# 設定單一環境變數
heroku config:set NODE_ENV=production

# 設定多個環境變數
heroku config:set DATABASE_URL=postgres://... API_KEY=your-key

# 查看所有環境變數
heroku config

# 刪除環境變數
heroku config:unset API_KEY

在程式碼中讀取:

// Node.js
const apiKey = process.env.API_KEY;
const port = process.env.PORT || 3000;

注意:Heroku 會自動設定 PORT 環境變數,你的應用必須監聽這個 Port。

部署程式碼

準備 Procfile

Heroku 需要知道如何啟動你的應用。在專案根目錄建立 Procfile(沒有副檔名):

web: node server.js

或者如果用 npm scripts:

web: npm start

確認 package.json

{
  "name": "my-node-app",
  "version": "1.0.0",
  "engines": {
    "node": "18.x"
  },
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}

執行部署

# 確保程式碼已 commit
git add .
git commit -m "Ready for Heroku deployment"

# 部署到 Heroku
git push heroku main

# 如果你的主分支是 master
git push heroku master

部署過程 Heroku 會:
1. 偵測到 Node.js 專案
2. 安裝 dependencies
3. 執行 build script(如果有)
4. 啟動 web dyno

開啟應用

heroku open

連接資料庫

Heroku 最常用的資料庫是 Heroku Postgres

# 安裝 Postgres Add-on(Hobby Dev 方案,免費但有限制)
heroku addons:create heroku-postgresql:mini

# 查看資料庫資訊
heroku pg:info

# 取得連線字串
heroku config:get DATABASE_URL

安裝後,DATABASE_URL 環境變數會自動設定。在 Node.js 中使用:

const { Pool } = require('pg');

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: false
  }
});

想深入了解 Node.js 的部署技巧,可以參考 Node.js 部署教學


Heroku 常見問題

部署 Heroku 時最常遇到的錯誤和解決方法。

H10 App Crashed

錯誤訊息

Error H10 (App crashed)

常見原因與解決方法

Heroku H10 App Crashed 錯誤排解流程圖

  1. 缺少 Procfile 或格式錯誤
    # 正確格式(注意冒號後有空格) web: node server.js

  2. 沒有監聽正確的 PORT
    ```javascript
    // 錯誤:寫死 port
    app.listen(3000);

// 正確:使用環境變數
const port = process.env.PORT || 3000;
app.listen(port);
```

  1. 依賴安裝失敗
    ```bash
    # 檢查 logs
    heroku logs --tail

# 確保 dependencies 在正確位置(不是 devDependencies)
```

  1. 啟動腳本錯誤
    json // 確認 package.json 的 start script { "scripts": { "start": "node server.js" } }

R14 Memory Exceeded

錯誤訊息

Error R14 (Memory quota exceeded)

原因
應用程式使用的記憶體超過方案限制(Eco/Basic 是 512 MB)。

解決方法

  1. 檢查記憶體使用
    bash heroku logs --tail | grep memory

  2. 優化程式碼
    - 檢查記憶體洩漏
    - 減少一次載入的資料量
    - 使用 streaming 處理大檔案

  3. 升級方案
    - Standard 2X 有 1 GB 記憶體
    - Performance 有 2.5 GB 以上

Slug Size Too Large

錯誤訊息

Compiled slug size: 600M is too large (max is 500M)

原因
打包後的應用程式太大,超過 500 MB 限制。

解決方法

  1. 加入 .slugignore
    # .slugignore *.md docs/ test/ .git

  2. 清理不必要的依賴
    bash npm prune --production

  3. 使用 .gitignore 排除大檔案
    - 不要 commit node_modules
    - 不要 commit 測試資料


Heroku 替代方案比較

如果覺得 Heroku 太貴或不符合需求,這些是熱門的替代方案:

Heroku 替代方案比較圖:Railway、Render、Fly.io

平台 免費額度 特色 適合
Railway $5/月 體驗最接近 Heroku 全端應用
Render 靜態網站免費 自動 SSL、簡單介面 靜態網站、Web Service
Fly.io 有限免費 全球邊緣部署 需要低延遲
Vercel 前端免費 Next.js 首選 前端專案
Netlify 靜態網站免費 強大的 CI/CD 靜態網站

如果你要從 Heroku 遷移

  1. 前端/靜態網站 → Vercel 或 Netlify
  2. 後端 API → Railway 或 Render
  3. 全端應用 → Railway
  4. 需要全球分散 → Fly.io

FAQ 常見問題

Heroku 還值得用嗎?

對於有預算的團隊或公司專案,Heroku 仍然是可靠的選擇。優點是生態系成熟、文件完整、穩定性高。但對於個人專案或預算有限的情況,Railway 或 Render 可能更划算。

Eco 方案的 1000 小時怎麼計算?

1000 小時是所有 Eco Dyno 共享的總時數。如果你有 2 個 App 都用 Eco,每個每天運行 12 小時,一個月就用掉 720 小時(12 × 30 × 2)。超過 1000 小時後 App 會停止運行直到下個月。

如何避免冷啟動?

  1. 升級到 Standard 方案:不會休眠
  2. 使用外部監控服務:每隔幾分鐘 ping 一次你的 App
  3. 接受它:如果只是個人專案,10-30 秒冷啟動可能不是大問題

Heroku 可以部署前端專案嗎?

可以,但不推薦。前端專案用 Vercel 或 Netlify 更適合,而且有免費方案。Heroku 的優勢在後端和全端應用。

如何查看應用程式日誌?

# 即時查看日誌
heroku logs --tail

# 查看最近 100 行
heroku logs -n 100

# 只看 web dyno 的日誌
heroku logs --dyno web

Heroku 部署方案選擇建議與重點整理

Heroku 雖然取消了免費方案,但作為老牌 PaaS 平台,它的部署體驗仍然是業界標竿。如果你的專案有預算,Heroku 的穩定性和完整生態系值得考慮。

選擇建議:

情境 推薦
個人學習/Side Project Railway(有免費額度)
小型正式服務 Heroku Standard 或 Railway
公司/團隊專案 Heroku Standard/Performance
純前端專案 Vercel 或 Netlify

重點整理:

  1. 認清現實:Heroku 已無免費方案,最低 $5/月
  2. 選對方案:正式服務至少用 Standard,避免冷啟動
  3. 設定正確:Procfile、PORT 環境變數是關鍵
  4. 有替代方案:Railway、Render 是不錯的選擇

🔧 部署失敗?別擔心! Heroku 的錯誤訊息有時候不太直覺,H10、R14 這些代碼看得人頭痛。如果你在部署過程中遇到問題,讓 VibeFix 幫你解決,我們有豐富的 PaaS 部署經驗,可以快速找出問題所在。

分享文章:
V

VibeFix

專門解決 AI Vibe Coding 後的疑難雜症,讓你的專案順利上線。

這篇文章有幫到你嗎?

如果還有問題,讓我們直接幫你解決!

聯繫我們