Install on a VM

Coming from Railway

openrail follows Railway names, variables and config files, so most projects move over unchanged; this page lists every difference in v0.1.

What stays the same

  • The canvas, staged changes, environments and the service panel tabs.
  • Variable names (RAILWAY_PUBLIC_DOMAIN, RAILWAY_PRIVATE_DOMAIN and the rest) are provided alongside FIFTY_* names, and the reference syntax ${{Service.VAR}} and ${{shared.VAR}} is the same.
  • railway.json and railway.toml in your repo are read and applied. See Config as code.
  • Builds use Railpack, Railway's builder. builder: NIXPACKS builds with Railpack and maps Nixpacks hints.
  • Private names: api.railway.internal resolves as well as api.internal.
  • The railway command works as an alias of the openrail CLI. See The railway alias.
  • Deployment statuses use Railway's labels.

Differences

RailwayIn openrail v0.1What to do instead
PR environments (incl. Focused and Bot PR environments)Not yet (v0.2)Duplicate an environment and point a service at the branch
Wait for CINot yetDeploy from CI with openrail up -c or a GitHub Action calling openrail redeploy
Deployment approvalsNot yetTurn off auto deploy and deploy by hand
Image Auto Updates with maintenance windowsNot yet"Check for a newer image" in Settings > Source, or a cron that calls openrail redeploy
Serverless (app sleeping)Not availableScale to 0 is v0.2; idle apps cost only RAM on your own VM
BucketsNot yetThe MinIO template
FunctionsNot availableA small service or a cron service
Observability widget boardNot yetThe Observability page and Metrics tabs
AI Diagnose and fix PRRule-based sentenceThe diagnosis sentence and the Troubleshooting guide
Data tab SQL editor and row editingRead-only tables and Redis keysopenrail connect
Metrics for 30 daysSame, 30 days
Wildcard custom domainsNot yetOne custom domain per name, or --domain with a wildcard A record for generated names
Static egress IPs (paid)Free: your hosts' IPsSettings > Networking shows them
Volume Live ResizeNot needed: volumes use the host diskAdd a data disk
RegionsYour hosts and rolesAdd a host in another location
railway CLIopenrail, plus the railway aliasSame commands
Login with GitHub, magic link email loginEmail and password with 2FA
Slack/Discord formatted webhooksSigned JSONA small relay service, or v0.2
config plan/apply style config syncopenrail config pull and railway.json in the repov0.2 Git mode

Railway variables that are not provided

Railway's OTEL_* tracing variables are not set. Set them yourself to point at your own collector. See Variables reference.

Moving a project

  1. Move a project from Railway: recreate the services from the same repos and copy their variables. The one-step importer is not in 0.1.0.
  2. Move a database from Railway copies the data.
  3. Point your DNS at your host and add the custom domains.
  4. Run openrail alias install so railway commands talk to your console.

Next steps

View as Markdown Edit this page