Appearance
Migrating from Heroku
Concept map
| Heroku | Fjordrun |
|---|---|
| App | Service (in a project) |
| Pipeline stages (staging, production) | Environments in one project |
| Buildpacks | Fjordrun builder: Dockerfile, Node.js framework detection, or Nixpacks for other languages |
Procfile web: | Start command of a web service |
Procfile worker: | A second service from the same repository, kind worker, with that start command |
release: phase | Prefix the web start command, for example python manage.py migrate && gunicorn ... |
| Heroku Scheduler | A cron service with a schedule |
| Config vars | Service variables (raw editor accepts KEY=value lines) |
| Heroku Postgres / Redis add-ons | PostgreSQL / Redis templates |
| Dynos and dyno sizes | Replicas, and vCPU / memory limits; billed on actual use |
| Eco dynos sleeping | Sleep when idle |
*.herokuapp.com | *.fjordrun.app generated domains |
| Heroku CLI | fjordrun CLI |
Steps
Create a project and add a service from your GitHub repository.
Start command: copy the
web:line of yourProcfileinto Settings → Deploy → Start command. It must use$PORT, which Heroku apps already do. (Nixpacks also reads aProcfile.)Workers: for each other
Procfileprocess, add a service from the same repository with kind worker and that start command.Config vars:
heroku config --shell -a <app>prints them asKEY=value; paste them into the raw variables editor. ReplaceDATABASE_URLandREDIS_URLwith references to the new services:bashDATABASE_URL=${{Postgres.DATABASE_URL}} REDIS_URL=${{Redis.REDIS_URL}}Databases: create them from templates and move the data (below).
Deploy and test on the generated domain, then move your custom domain.
PostgreSQL
Create a backup on Heroku and download it:
bash
heroku pg:backups:capture -a <app>
heroku pg:backups:url -a <app> # a temporary download URL for the latest backupHeroku backups are in pg_dump custom format. Restore with pg_restore from a one-off container in your Fjordrun project, as described in Railway → Databases, using the backup URL as DUMP_URL.
Put the Heroku app in maintenance mode (heroku maintenance:on) before the final backup.
Domains
Add the custom domain in Fjordrun, create the TXT record, then point the CNAME at edge.fjordrun.app instead of the Heroku DNS target. See Domains and HTTPS.