Railway 部署教學:後端應用程式快速上線指南【2025】

Railway 部署教學:後端應用程式快速上線指南

「Heroku 開始收費了,有沒有什麼免費的替代方案?」

有!Railway 就是目前最受歡迎的 Heroku 替代品。它有現代化的介面、簡單的部署流程,而且每個月有 $5 美元的免費額度,對於小專案來說可能完全夠用。

這篇文章會帶你從零開始,學會用 Railway 部署後端應用程式。從建立專案、連接資料庫、到設定環境變數,一步步帶你完成。


Railway 是什麼?

在開始部署前,先認識一下 Railway 這個平台。

Railway 平台介紹

Railway 是 2020 年成立的新一代 PaaS 平台,目標是成為「更好的 Heroku」。它的核心理念是:

部署應該像在本機開發一樣簡單。

Railway 的主要特色:

  • 現代化介面:深色主題、直覺操作
  • 一站式服務:App、資料庫、Redis 在同一專案管理
  • 用量計費:不用的時候不收錢
  • GitHub 整合:Push 就自動部署
  • 免費額度:每月 $5,不用綁信用卡就能開始

Railway 平台概覽圖:現代化的部署介面

Railway vs Heroku vs Render

這三個是目前最常被比較的後端 PaaS 平台:

Railway vs Heroku vs Render 比較表

比較項目 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、記憶體、網路計費方式

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。

Railway 從 GitHub 部署的步驟流程

Step 1:註冊 Railway 帳號

  1. 前往 Railway 官網
  2. 點選「Login」
  3. 選擇「Login with GitHub」(推薦)
  4. 授權 Railway 存取你的 GitHub 帳號

註冊完成後會自動獲得 Trial Plan($5/月額度)。

Step 2:建立新專案

  1. 登入後,點選「New Project」
  2. 你會看到幾個選項:
    - Deploy from GitHub repo:從 GitHub 部署(推薦)
    - Provision PostgreSQL:直接建立資料庫
    - Deploy a Template:使用預設模板
    - Empty Project:空專案

選擇「Deploy from GitHub repo」。

Step 3:連接 GitHub 或部署 Template

從 GitHub 部署

  1. 選擇要部署的 repository
  2. 如果看不到 repository,點選「Configure GitHub App」
  3. 選擇 repository 後,Railway 會自動:
    - 偵測程式語言
    - 設定 Build 指令
    - 開始部署

Railway 自動偵測

Railway 支援多種語言和框架:

語言/框架 偵測方式
Node.js package.json
Python requirements.txtPipfile
Go go.mod
Ruby Gemfile
Rust Cargo.toml
Docker Dockerfile

如果自動偵測失敗,可以加一個 Dockerfilerailway.toml 來指定設定。

使用 Template 快速開始

Railway 提供很多預設模板:
- Next.js + PostgreSQL
- Express + MongoDB
- Django + PostgreSQL
- Laravel + MySQL
- 更多...

這是學習的好方式,可以看看別人怎麼設定。

Step 4:設定環境變數

點選你的服務 → Variables 分頁:

  1. 點選「New Variable」
  2. 輸入變數名稱和值
  3. 變數會立即生效(服務會自動重啟)
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 專案架構圖:App + Database + Redis 的組合

Railway 最方便的功能之一就是一鍵新增資料庫!

新增 PostgreSQL

  1. 在專案頁面,點選「New」
  2. 選擇「Database」→「Add PostgreSQL」
  3. 等待幾秒鐘,資料庫就建好了

建好後,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 的服務沒有公開網址。要讓外部可以存取:

  1. 點選你的服務
  2. 進入「Settings」分頁
  3. 找到「Networking」區塊
  4. 點選「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 的檔案系統預設是暫時的(每次部署會清空)。如果需要持久儲存:

  1. 在服務設定中新增 Volume
  2. 指定 Mount Path,例如 /data
  3. 程式把檔案寫到這個路徑就會保留
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

常見原因與解決方法

  1. 缺少啟動指令

Railway 需要知道如何啟動你的應用。確保 package.jsonstart script:
json { "scripts": { "start": "node server.js" } }

  1. 沒有監聽正確的 PORT

Railway 會透過 PORT 環境變數指定 Port:
javascript const port = process.env.PORT || 3000; app.listen(port, '0.0.0.0');

  1. 依賴安裝失敗

查看 Build Log 找出具體錯誤。常見問題:
- package-lock.json 未 commit
- 需要特定版本的 Node.js

指定 Node.js 版本
json { "engines": { "node": "18.x" } }

資料庫連線問題

問題描述

應用程式連不上 PostgreSQL。

解決方法

  1. 確認環境變數

檢查 DATABASE_URL 是否正確設定。在 Variables 頁面可以看到。

  1. 使用正確的 SSL 設定

Railway 的 PostgreSQL 需要 SSL:
javascript const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false } });

  1. 確認服務都在同一專案

使用 Private Networking 時,服務必須在同一個專案內。

額度用完怎麼辦

問題描述

$5 免費額度用完,服務停止運行。

解決方法

  1. 升級到 Hobby 方案

綁定信用卡後,超過的部分會自動扣款,服務不會停止。

  1. 優化資源使用
  • 減少記憶體配置
  • 關閉不需要的服務
  • 優化程式碼減少 CPU 使用
  1. 等待下個月

每月 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?

  1. 點選你的服務
  2. 進入「Deployments」分頁
  3. 點選任一部署可以看到 Build Log
  4. 在主頁面可以看到 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 產生公開網址

重點整理:

  1. Heroku 替代首選:免費額度 + 現代介面
  2. 用量計費:用多少付多少,很透明
  3. 資料庫整合:PostgreSQL、MySQL、Redis 一鍵新增
  4. 注意 PORT 環境變數:這是最常見的部署失敗原因

🔧 Railway 部署遇到問題? 不管是 Build 失敗、資料庫連不上、還是額度問題,這些都是常見的卡關點。如果你需要協助,讓 VibeFix 幫你解決,我們對 Railway 很熟悉,可以快速幫你找出問題並搞定部署。

分享文章:
V

VibeFix

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

這篇文章有幫到你嗎?

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

聯繫我們