Skip to content

Migrating from Heroku ​

Concept map ​

HerokuFjordrun
AppService (in a project)
Pipeline stages (staging, production)Environments in one project
BuildpacksFjordrun 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: phasePrefix the web start command, for example python manage.py migrate && gunicorn ...
Heroku SchedulerA cron service with a schedule
Config varsService variables (raw editor accepts KEY=value lines)
Heroku Postgres / Redis add-onsPostgreSQL / Redis templates
Dynos and dyno sizesReplicas, and vCPU / memory limits; billed on actual use
Eco dynos sleepingSleep when idle
*.herokuapp.com*.fjordrun.app generated domains
Heroku CLIfjordrun CLI

Steps ​

  1. Create a project and add a service from your GitHub repository.

  2. Start command: copy the web: line of your Procfile into Settings → Deploy → Start command. It must use $PORT, which Heroku apps already do. (Nixpacks also reads a Procfile.)

  3. Workers: for each other Procfile process, add a service from the same repository with kind worker and that start command.

  4. Config vars: heroku config --shell -a <app> prints them as KEY=value; paste them into the raw variables editor. Replace DATABASE_URL and REDIS_URL with references to the new services:

    bash
    DATABASE_URL=${{Postgres.DATABASE_URL}}
    REDIS_URL=${{Redis.REDIS_URL}}
  5. Databases: create them from templates and move the data (below).

  6. 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 backup

Heroku 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.

Fjordrun is hosted in the EU (Hetzner, Nuremberg, Germany). Private beta.