Migrate from Railway

Railway makes hobby-grade and small-team production deploys frictionless — one click, Postgres included, Procfile-or-Dockerfile-shaped. Joule Cloud is the same shape, with joule billing, more region control, and per-request receipts.

Service map

RailwayJoule Cloud
Railway services (containers)Compute
Railway PostgresJouleDB
Railway VolumesObject Store (preferred) or workload disk (small)
Railway RedisJouleDB key-value or a workload-hosted Redis (BYO)
Railway environments (dev/staging/prod)Per-workload-name convention; CI deploys distinct workloads per env
Built-in CI/CD on pushPush image from your CI; invisible deploy
Custom domains + auto TLSroute block w/ https = true

The flow

Railway: push → Railway builds → deploys → live URL. Joule Cloud: CI builds → push image → invisible deploy → live URL. Wire your CI (Forgejo Actions, GitHub Actions, anything) to call invisible deploy after a successful image push. Two-step instead of one-step, but you get to see what your CI did.

Example CI step

# .github/workflows/deploy.yml (or .forgejo/workflows/deploy.yml)
- name: Build & push
  run: |
    docker build -t ghcr.io/me/myapp:${{ github.sha }} .
    docker push ghcr.io/me/myapp:${{ github.sha }}

- name: Deploy
  env: { JC_API_KEY: ${{ secrets.JC_API_KEY }} }
  run: |
    # update the image ref in invisible.hcl, then apply
    sed -i "s|image *= .*|image = \"ghcr.io/me/myapp:${{ github.sha }}\"|" invisible.hcl
    invisible deploy --auto-approve

Postgres

Railway Postgres → JouleDB. Same wire protocol; dump+restore works.

pg_dump $RAILWAY_DATABASE_URL --no-owner --no-acl > backup.sql
jc db create main --region eu-fi --size 50GB
psql "postgresql://jc_…@db.greenjoules.cloud:5432/main" < backup.sql

Environments

Railway tabs let you flip between dev / staging / prod environments. The Joule Cloud pattern: name the workload accordingly (e.g. workload "api-staging", workload "api-prod") and deploy them from different branches. The console groups them by your account, not by environment.

What you keep

What you gain