Migrate from Railway to Plexivo
Move Railway services, variables, a Railway Postgres database and custom domains to Plexivo App Runner and Plexivo Postgres, step by step.
This guide moves the services of a Railway project to Plexivo App Runner, its PostgreSQL database to Plexivo Postgres, and your domain to Plexivo. Your Railway project keeps serving until you change DNS, so you can go back at any point before that.
Railway and Plexivo, side by side#
| On Railway | On Plexivo |
|---|---|
| Project | A project in your Plexivo organisation. |
| Service from a repository or image | A Plexivo App Runner app, from Git or a container image. |
| Service without a public domain | A private app. Services that are not web servers still accept connections on PORT; see Workers. |
| Cron schedule on a service | A CronJob on Plexivo Kubernetes, from the Startup plan. |
Builders and railway.json or railway.toml | Your Dockerfile, or Plexivo detects your language. Railway’s config files are not read. |
| Pre-deploy command | No separate step. Run migrations as your app starts, or from your computer before you deploy. |
| Service variables | The app’s Environment tab. |
| Shared variables | Plexivo Secrets, attached to each app that needs them. |
| Reference variables that point at a database service | Connect the database to the app: Plexivo sets DATABASE_URL and DATABASE_CA_CERT and keeps them current. See Connect a database or cache. |
| Private networking between services | Apps, databases and caches in the same Plexivo project reach each other over the private network. |
| PostgreSQL | Plexivo Postgres. Plexivo copies it for you. |
| MySQL | Plexivo MySQL; see Move a MySQL database. |
| Redis | Plexivo Cache, Redis-compatible. |
| Volumes | Plexivo App Runner keeps no local files between restarts. Keep files in your database, or use a volume on Plexivo Kubernetes. |
| Custom domains | Custom domains, with certificates Plexivo issues and renews. |
Before you begin#
- A Plexivo account.
- Your code on GitHub, GitLab or Bitbucket, or a public container image of it.
- Access to your domain’s DNS settings.
Move your project#
- Take stock. List each service in the project: its source, its start command, its variables, its volumes, any cron schedule and its domains. Note which services are databases, and the PostgreSQL version.
- Create the app. In the Plexivo console, choose Create, then Plexivo App Runner, connect your Git provider, pick the repository and branch, choose a size, and deploy. See Deploy from Git. Or ask Plexivo AI with the repository link: it plans the app and its database with the monthly price, and creates nothing until you approve.
- Copy your variables. Add each service variable on the app’s Environment tab, then apply. Railway’s raw editor shows them as
KEY=valuelines to copy from. Put shared variables into Plexivo Secrets. Leave out reference variables to databases: connecting the database sets them. See Environment and secrets. - Move the database. Create an empty Plexivo Postgres database. In Migrations, choose New migration, then Other PostgreSQL, and paste the database’s public connection URL, which Railway shows when public networking is on. Stop writes before the copy starts, then connect the new database on the app’s Environment tab. See Move a PostgreSQL database.
- Add your domain. On the app’s Domains tab, add your hostname and prove you own it with the
TXTrecord Plexivo shows. Your traffic stays on Railway meanwhile. See Custom domains. - Switch DNS. Test the app on its
plexivo.appaddress first. Then replace the record that points at Railway with the routing record Plexivo shows. Plexivo issues the certificate on the first HTTPS request once the hostname routes. - Check it. On the Domains tab, Routing reads Ready on Plexivo and the certificate is valid. Open your site, run your usual checks, and watch the app’s Logs and Metrics.
- Retire Railway. Keep the old project for a few days as your way back. When you are satisfied, delete its services and database on Railway.
Database TLS#
Plexivo Postgres accepts only TLS connections, and your app receives the CA certificate as DATABASE_CA_CERT. If your code turned off certificate checks, point it at the CA certificate instead. See TLS.
Free migration help#
Prefer a hand? Tell us what you run, and Plexivo support plans the move with you. Ask for free migration help. Moving a paid workload? You may also be able to apply for migration credits.
Next steps#
Railway is a trademark of its owner. Plexivo is not affiliated with, endorsed or sponsored by Railway.
Updated 2 November 2026