Skip to content

Migrate from Railway to HostStack

EU-hosted Railway alternative. The same zero-config deploys, with flat, predictable invoices and your data on European infrastructure.

Railway is fast and friendly, but it bills in USD, is a US company even in its Amsterdam region, and usage-based billing makes the invoice hard to predict once you have real users. HostStack offers the same one-click deploy and managed-resources story under an EU company, with 200 GB of bandwidth included and a free tier that keeps a service and a database without a card.

Why switch from Railway?

  • EU data residency by default. Compute and data on European infrastructure — named regions, verified, not opaque.
  • No usage-credit ceiling that suspends your app — free Nano sleeps after 60 min of inactivity and wakes on first request (<100 ms cold start).
  • GDPR Article 28 DPA + EU VAT invoices automatic at signup.
  • 200 GB/team of bandwidth included, then a flat 1¢/GB — no surprise egress on busy days.
  • Managed MongoDB, MySQL, plus the usual Postgres / Redis / S3.
  • A hoststack.yaml in your repo keeps build and start commands, port, health check, env defaults and disk next to your code.
  • CLI, SDK, and MCP server — Railway’s CLI is great, ours matches it and adds MCP for Claude / Cursor.

Price comparison

ResourceRailwayHostStackComparison
Hobby web service (always-on)$5/mo Hobby minimum (includes $5 of usage)€1/mo Pico (or free Nano)Up to 60%
Production web service$20/mo for 2 GB RAM + CPU used€20/mo Standard (2 GB / 1 vCPU, flat)Flat vs metered
Managed Postgres (1GB)Usage-based (RAM + CPU + volume)€4/mo Micro, storage includedFlat vs metered
Bandwidth (100GB egress)$5 (5¢/GB)€0 (inside the 200 GB/team allowance)100%

Railway prices checked May 2026 against their public pricing page. Railway prices are USD as published; HostStack figures are the live EUR catalog. Verify at the source before deciding.

Code migration

Before (Railway)

toml
# railway.toml
[build]
builder = "NIXPACKS"
buildCommand = "bun install && bun run build"

[deploy]
startCommand = "bun run start"
healthcheckPath = "/health"
restartPolicyType = "ON_FAILURE"

After (HostStack)

yaml
# hoststack.yaml -- configures the existing "my-api" service
services:
  my-api:
    install:
      command: bun install
    build:
      command: bun run build
    start:
      command: bun run start
    healthCheck:
      path: /health

Feature comparison

FeatureRailwayHostStack
Git push deploysYesYes
Dockerfile + NixpacksYesDockerfile + runtime auto-detection
Free tier$5 one-time trial, then $1/mo Free creditYes — Nano + Starter Postgres + cron + preview
Managed databasesPostgres, MySQL, MongoDB, RedisPostgres, MySQL, MongoDB, Redis, S3
Data residencyUS, EU (Amsterdam), SingaporeHelsinki, FI (EU only, named region)
Egress pricing5¢/GB200 GB free, then 1¢/GB
Cron jobsYesYes, 1 free per project
Preview environmentsPR EnvironmentsNative, 1 free per project
DPAVia DocuSign form (US entity)At signup (EU entity)

Migration gotchas

Railway’s "Reference Variables" → HostStack env-groups + sibling URL injection.

HostStack auto-injects sibling-service URLs into each environment (e.g. API_URL pointing at your sibling api service). For cross-service secrets, use env groups to share values across multiple services.

Railway’s per-second billing → HostStack per-hour reconciler.

HostStack reconciles usage hourly with Stripe — the practical difference for a typical workload is rounding cents. Both providers are pay-as-you-go.

Migration steps

  1. 1Sign up at hoststack.dev. Connect GitHub and import your Railway repo.
  2. 2Move the build and start commands and health-check path from railway.toml into a hoststack.yaml. HostStack detects Bun / Node / Python / Go / Rust and more from your project files, or builds your Dockerfile, so there is no Nixpacks config to carry over.
  3. 3Export Railway variables with railway variables --kv > .env, then run hoststack env import svc_... .env. It is a dry run that lists what would change; add --apply to write.
  4. 4Take a logical backup of your Railway Postgres / MySQL / MongoDB and restore it into the HostStack equivalent.
  5. 5Deploy. HostStack issues a free SSL cert and gives you a *.hoststack.dev URL immediately.
  6. 6Update DNS for any custom domains. Decommission the Railway service once traffic is flowing cleanly.

Frequently asked questions

Do you support Nixpacks?

We don’t use Nixpacks. HostStack detects the runtime from your project files — Node, Bun, Python, Ruby, Go, Rust, Java, PHP, .NET and Elixir — and builds it with its own preset, or builds your Dockerfile: a root Dockerfile is picked up when you create the service without a runtime or commands, and any other with --dockerfile-path. Most Railway projects build without config changes; anything unusual belongs in a Dockerfile.

Can I migrate a Railway project that uses multiple services?

Yes. Each Railway service becomes a HostStack service inside the same project. Sibling-service URLs are auto-injected as environment variables, so cross-service calls keep working.

How does HostStack compare on cold starts?

Paid services are always-on, no cold start. Free-tier Nano services sleep after 60 minutes of inactivity and wake on the first request — wake time is typically under 100 ms via a Traefik forwardAuth handshake to our agent.

Ready to switch?

Start free. Migrate in under an hour. Keep your data in the EU.

Essential cookies only — for login sessions. No tracking. Details