Railway 部署教學:後端應用程式快速上線指南
「Heroku 開始收費了,有沒有什麼免費的替代方案?」
有!Railway 就是目前最受歡迎的 Heroku 替代品。它有現代化的介面、簡單的部署流程,而且每個月有 $5 美元的免費額度,對於小專案來說可能完全夠用。
這篇文章會帶你從零開始,學會用 Railway 部署後端應用程式。從建立專案、連接資料庫、到設定環境變數,一步步帶你完成。
Railway 是什麼?
在開始部署前,先認識一下 Railway 這個平台。
Railway 平台介紹
Railway 是 2020 年成立的新一代 PaaS 平台,目標是成為「更好的 Heroku」。它的核心理念是:
部署應該像在本機開發一樣簡單。
Railway 的主要特色:
- 現代化介面:深色主題、直覺操作
- 一站式服務:App、資料庫、Redis 在同一專案管理
- 用量計費:不用的時候不收錢
- GitHub 整合:Push 就自動部署
- 免費額度:每月 $5,不用綁信用卡就能開始
Railway vs Heroku vs Render
這三個是目前最常被比較的後端 PaaS 平台:
| 比較項目 | Railway | Heroku | Render |
|---|---|---|---|
| 免費額度 | $5/月 | ❌ 無 | 有限(會休眠) |
| 最低付費 | 用多少付多少 | $5/月起 | $7/月起 |
| 休眠機制 | ❌ 不休眠 | ✅ 會休眠 | ✅ 免費版會 |
| 資料庫整合 | ✅ 一鍵新增 | ✅ Add-on | ✅ 另開服務 |
| 介面設計 | 現代、直覺 | 傳統 | 簡潔 |
| 部署速度 | 快 | 中等 | 快 |
選擇建議
- Railway:想要免費額度 + 不休眠 + 現代介面
- Heroku:公司專案、需要穩定可靠
- Render:靜態網站 + 簡單後端
Railway 適合什麼專案
非常適合
- Side Project 和個人專案
- MVP 和原型開發
- 小型 API 後端
- 需要資料庫的全端應用
- 學習和練習部署
可能不適合
- 大流量生產環境(費用可能較高)
- 需要特殊合規要求的企業應用
- 需要完整 DevOps 功能的團隊
想了解更多 PaaS 平台比較,可以參考 程式部署完整指南。
Railway 費用與免費額度
Railway 的計費方式和傳統 PaaS 不太一樣,了解它能幫你省錢。
免費方案($5/月額度)
Railway 的免費方案(Trial Plan)提供:
| 項目 | 額度 |
|---|---|
| 每月額度 | $5 美元 |
| 執行時間 | 500 小時/月 |
| 記憶體 | 依用量計算 |
| 需要信用卡 | ❌ 不需要 |
$5 可以做什麼?
以一個簡單的 Node.js API 為例(256MB 記憶體、0.5 vCPU):
- 全天候運行約 720 小時
- 費用約 $2-3/月
也就是說,小專案用免費額度完全夠用!
付費方案比較
如果免費額度不夠,可以升級:
| 方案 | 月費 | 額度 | 適合 |
|---|---|---|---|
| Trial | 免費 | $5 | 個人專案 |
| Hobby | $5 | $5 + 用量 | 進階個人 |
| Pro | $20/人 | 用量計費 | 團隊協作 |
Hobby vs Trial 的差別
Hobby 方案需要綁信用卡,但好處是:
- 超過 $5 不會停機,會從信用卡扣款
- 可以使用更多資源
費用試算範例
Railway 的計費公式:
費用 = CPU 用量 + 記憶體用量 + 網路流量
| 資源 | 單價 |
|---|---|
| CPU | $0.000463/vCPU/分鐘 |
| 記憶體 | $0.000231/GB/分鐘 |
| 網路(出站) | $0.10/GB |
實際案例
案例一:簡單 API
- 配置:0.5 vCPU、512MB RAM
- 運行:24/7(720 小時)
- 費用:約 $2.50/月
案例二:API + PostgreSQL
- API:0.5 vCPU、512MB RAM
- PostgreSQL:0.5 vCPU、1GB RAM
- 運行:24/7
- 費用:約 $5-6/月
案例三:完整應用
- API + PostgreSQL + Redis
- 中等流量
- 費用:約 $10-15/月
💡 不確定 Railway 費用夠不夠用? 費用估算確實有點複雜。如果你想知道你的專案大概要花多少錢,讓 VibeFix 幫你評估,我們可以根據你的專案規模給出合理的估計。
Railway 部署實戰
接下來實際動手,把一個 Node.js + PostgreSQL 應用部署到 Railway。
Step 1:註冊 Railway 帳號
- 前往 Railway 官網
- 點選「Login」
- 選擇「Login with GitHub」(推薦)
- 授權 Railway 存取你的 GitHub 帳號
註冊完成後會自動獲得 Trial Plan($5/月額度)。
Step 2:建立新專案
- 登入後,點選「New Project」
- 你會看到幾個選項:
- Deploy from GitHub repo:從 GitHub 部署(推薦)
- Provision PostgreSQL:直接建立資料庫
- Deploy a Template:使用預設模板
- Empty Project:空專案
選擇「Deploy from GitHub repo」。
Step 3:連接 GitHub 或部署 Template
從 GitHub 部署
- 選擇要部署的 repository
- 如果看不到 repository,點選「Configure GitHub App」
- 選擇 repository 後,Railway 會自動:
- 偵測程式語言
- 設定 Build 指令
- 開始部署
Railway 自動偵測
Railway 支援多種語言和框架:
| 語言/框架 | 偵測方式 |
|---|---|
| Node.js | package.json |
| Python | requirements.txt 或 Pipfile |
| Go | go.mod |
| Ruby | Gemfile |
| Rust | Cargo.toml |
| Docker | Dockerfile |
如果自動偵測失敗,可以加一個 Dockerfile 或 railway.toml 來指定設定。
使用 Template 快速開始
Railway 提供很多預設模板:
- Next.js + PostgreSQL
- Express + MongoDB
- Django + PostgreSQL
- Laravel + MySQL
- 更多...
這是學習的好方式,可以看看別人怎麼設定。
Step 4:設定環境變數
點選你的服務 → Variables 分頁:
- 點選「New Variable」
- 輸入變數名稱和值
- 變數會立即生效(服務會自動重啟)
NAME VALUE
NODE_ENV production
JWT_SECRET your-secret-key
API_KEY your-api-key
Railway 的便利功能
Railway 會自動產生一些變數:
- PORT:應用程式應該監聽的 Port
- RAILWAY_ENVIRONMENT:目前環境(production/staging)
引用其他服務的變數
如果你的專案有資料庫,可以用 ${{ }} 語法引用:
DATABASE_URL=${{Postgres.DATABASE_URL}}
REDIS_URL=${{Redis.REDIS_URL}}
Step 5:新增資料庫(PostgreSQL/MySQL/Redis)
Railway 最方便的功能之一就是一鍵新增資料庫!
新增 PostgreSQL
- 在專案頁面,點選「New」
- 選擇「Database」→「Add PostgreSQL」
- 等待幾秒鐘,資料庫就建好了
建好後,Railway 會自動產生 DATABASE_URL 變數。
在程式碼中使用
// Node.js with pg
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
});
# Python with psycopg2
import os
import psycopg2
conn = psycopg2.connect(os.environ['DATABASE_URL'])
新增 Redis
同樣的方式:
1. 點選「New」→「Database」→「Add Redis」
2. 使用 REDIS_URL 環境變數連接
Step 6:取得公開網址
預設情況下,Railway 的服務沒有公開網址。要讓外部可以存取:
- 點選你的服務
- 進入「Settings」分頁
- 找到「Networking」區塊
- 點選「Generate Domain」
你會得到一個網址,例如:
https://your-app-production.up.railway.app
自訂網域
如果想用自己的網域:
1. 點選「Add Custom Domain」
2. 輸入你的網域,例如 api.yourdomain.com
3. 依照指示設定 DNS CNAME 記錄
💡 Railway 部署卡關? 雖然 Railway 已經很直覺了,但有時候還是會遇到問題。如果你卡關了,讓 VibeFix 的工程師幫你處理。
想了解 Heroku 的使用方式,可以參考 Heroku 部署教學。
Railway 進階功能
除了基本部署,Railway 還有一些實用的進階功能。
Private Networking
在同一個專案內的服務可以透過 Private Network 通訊,不需要走公開網路。
好處
- 更快的延遲
- 更安全(不暴露到公開網路)
- 不計入網路流量費用
使用方式
每個服務都有 Private Domain,格式是:
<service-name>.railway.internal
例如,如果你的 PostgreSQL 服務叫 postgres,可以用:
postgres://user:[email protected]:5432/railway
Cron Jobs
需要定時執行任務?Railway 支援 Cron Jobs:
方式一:使用 railway.toml
# railway.toml
[build]
builder = "nixpacks"
[deploy]
startCommand = "node server.js"
[[crons]]
name = "daily-cleanup"
schedule = "0 0 * * *"
command = "node scripts/cleanup.js"
方式二:在程式碼中使用排程套件
// 使用 node-cron
const cron = require('node-cron');
cron.schedule('0 0 * * *', () => {
console.log('Running daily cleanup...');
cleanup();
});
Volume(持久儲存)
Railway 的檔案系統預設是暫時的(每次部署會清空)。如果需要持久儲存:
- 在服務設定中新增 Volume
- 指定 Mount Path,例如
/data - 程式把檔案寫到這個路徑就會保留
const fs = require('fs');
const path = require('path');
// 寫入到 Volume
const dataPath = '/data/uploads';
fs.writeFileSync(path.join(dataPath, 'file.txt'), 'Hello!');
注意:Volume 會增加費用,而且有地區限制。
Railway 常見問題
部署 Railway 時最常遇到的問題和解決方法。
部署失敗
錯誤訊息
Build failed
常見原因與解決方法
- 缺少啟動指令
Railway 需要知道如何啟動你的應用。確保 package.json 有 start script:
json
{
"scripts": {
"start": "node server.js"
}
}
- 沒有監聽正確的 PORT
Railway 會透過 PORT 環境變數指定 Port:
javascript
const port = process.env.PORT || 3000;
app.listen(port, '0.0.0.0');
- 依賴安裝失敗
查看 Build Log 找出具體錯誤。常見問題:
- package-lock.json 未 commit
- 需要特定版本的 Node.js
指定 Node.js 版本
json
{
"engines": {
"node": "18.x"
}
}
資料庫連線問題
問題描述
應用程式連不上 PostgreSQL。
解決方法
- 確認環境變數
檢查 DATABASE_URL 是否正確設定。在 Variables 頁面可以看到。
- 使用正確的 SSL 設定
Railway 的 PostgreSQL 需要 SSL:
javascript
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
}
});
- 確認服務都在同一專案
使用 Private Networking 時,服務必須在同一個專案內。
額度用完怎麼辦
問題描述
$5 免費額度用完,服務停止運行。
解決方法
- 升級到 Hobby 方案
綁定信用卡後,超過的部分會自動扣款,服務不會停止。
- 優化資源使用
- 減少記憶體配置
- 關閉不需要的服務
- 優化程式碼減少 CPU 使用
- 等待下個月
每月 1 號會重置免費額度。
想了解 Node.js 的部署技巧,可以參考 Node.js 部署教學。Python 專案可以參考 Python 部署指南。
FAQ 常見問題
Railway 免費額度真的夠用嗎?
對於小型個人專案,$5 通常夠用。一個簡單的 API + PostgreSQL 大約 $3-5/月。但如果有持續的流量或較大的資料庫,可能會超過。
Railway 和 Vercel 可以一起用嗎?
可以!常見組合:
- Vercel:部署 Next.js 前端
- Railway:部署 API 後端 + 資料庫
這樣可以各取所長。
Railway 支援 Docker 嗎?
支援!如果你的專案有 Dockerfile,Railway 會自動使用它來 Build。這讓你可以部署任何語言和框架。
如何查看 Log?
- 點選你的服務
- 進入「Deployments」分頁
- 點選任一部署可以看到 Build Log
- 在主頁面可以看到 Runtime Log
Railway 有 CLI 嗎?
有!Railway CLI 可以在本機管理專案:
# 安裝
npm install -g @railway/cli
# 登入
railway login
# 連結專案
railway link
# 本機開發(載入 Railway 環境變數)
railway run npm start
# 部署
railway up
Railway 部署重點整理與平台優勢
Railway 是目前最適合個人開發者的 PaaS 平台,主要優勢:
- 免費額度:$5/月,小專案可能完全免費
- 不休眠:不像某些平台會休眠
- 一站式:App + 資料庫在同一處管理
- 現代介面:好看又好用
部署流程整理:
| 步驟 | 動作 |
|---|---|
| 1 | 用 GitHub 註冊 Railway |
| 2 | 建立新專案 |
| 3 | 連接 GitHub repository |
| 4 | 設定環境變數 |
| 5 | 新增資料庫(如需要) |
| 6 | 產生公開網址 |
重點整理:
- Heroku 替代首選:免費額度 + 現代介面
- 用量計費:用多少付多少,很透明
- 資料庫整合:PostgreSQL、MySQL、Redis 一鍵新增
- 注意 PORT 環境變數:這是最常見的部署失敗原因
🔧 Railway 部署遇到問題? 不管是 Build 失敗、資料庫連不上、還是額度問題,這些都是常見的卡關點。如果你需要協助,讓 VibeFix 幫你解決,我們對 Railway 很熟悉,可以快速幫你找出問題並搞定部署。