1. The app
- Deploy the same repository with New, Website or app. Most apps build as they are: Railpack works like Railway's Nixpacks and Railpack, and Heroku's and Render's buildpacks.
- Heroku: put the
web:line from yourProcfilein Start command, and arelease:line in Pre-deploy command. Workers are their own apps with their own start command. - Render: a Dockerfile service builds the same here; set the Dockerfile path in Settings if it isn't in the root.
- Listen on
PORT, as on the others.
2. Variables
Copy them as a .env file (Railway: Raw Editor; Render: Environment, then each value; Heroku: heroku config -s) and paste it into the app's Variables tab. Swap other platforms' references for ours, such as ${{postgres.DATABASE_URL}}.
3. The database
Make the same engine here, then copy the data across while the old app is stopped, so nothing is lost:
# PostgreSQL: dump from the old database pg_dump --no-owner --format=custom "$OLD_DATABASE_URL" > data.dump # open the new one locally, then load it wattle db proxy postgres --port 6543 pg_restore --no-owner --dbname "postgresql://USER:PASSWORD@localhost:6543/DATABASE" data.dump
The Connect tab shows the user, password and database name. For MySQL and MariaDB, use mysqldump and mysql the same way.
4. The domain
Add your domain in the app's Domains tab and make its records. When the certificate is active, move the CNAME from the old platform to ours. Keep the old app until traffic has moved.