Railway

Run servers, workers and databases side by side, billed per second.

Limited free Usage-based app platform (containers)

Free tier

Free Trial: $5 one-time credit for 30 days; then Free plan with $1/month of usage

  • Free Trial: $5 one-time credit, valid 30 days, no credit card required
  • Free plan: $0 with $1/month usage credit, 1 project, 3 services, 1 vCPU / 0.5 GB per service
  • Free plan: 0 custom domains (Trial: 1)
  • Usage: ≈$10 per GB RAM/month, ≈$20 per vCPU/month, egress $0.05/GB (billed per second)

Paid

$5/mo: Hobby: $5/month including $5 of usage, 2 custom domains, 50 projects. Pro: $20/month per workspace

Catches

  • The Free plan can't attach a custom domain — budget for Hobby ($5/mo) if you want your own domain.

Deploying to Railway

Connect
Go to railway.com/new → Deploy from GitHub repo, connect GitHub and choose the repository. Railway detects the build automatically.
Build
A Vite SPA is served as static files; a Node/Python server needs a start command and must listen on $PORT.
Env vars
Service → Variables tab (frontend VITE_* values must be present at build time)
Domain
Service → Settings → Networking → + Custom Domain. Railway gives you a CNAME to add at your DNS provider and issues SSL automatically.

Single-page app fallback

Caddyfile (or serve -s dist)
:{$PORT:3000} {
    root * dist
    encode gzip
    file_server
    try_files {path} /index.html
}

Official docs (opens in a new tab)

Guides for Railway