// Migration Guide · 2026

Migrate from Heroku to Runsite

Keep the git push workflow you learned on Heroku, but drop the sleeping dynos, surprise bills and the free tier that vanished in 2022. Runsite auto-builds your repo and runs it always-on in Frankfurt.

{ }
Procfile
on Heroku
git push → build
EU
live stack
Frankfurt · eu-central
~20 min
typical migration
Same git push
keep your workflow
Keep Heroku running
until you cut over
EUR Predictable Pricing
0 Surprise Bills
Free Tier — No Expiry
<2min Migration Time

// the mental model

Every Heroku concept has a Runsite home

Heroku doesn't have one big config file to scan, but every Heroku building block maps cleanly onto a Runsite resource. Here's the whole mental model on one screen, honest about what's automatic and what you handle once.

Procfile
web: gunicorn app:app
worker: celery -A app worker
release: python manage.py migrate
  • git push heroku main
    heroku
    git push → auto-build auto
    Node, Python, Ruby, Go & PHP detected automatically
  • Procfile web process
    heroku
    Web service start command auto
    Your `web:` line becomes the start command, unchanged
  • Eco / Basic dyno
    heroku
    Always-on container auto
    No 30-minute sleep, no cold starts
  • Heroku Postgres add-on
    heroku
    Managed PostgreSQL you do
    Provision in Frankfurt, then pg:backups → restore
  • Heroku Data for Redis
    heroku
    Managed Redis you do
    Spin one up; point your REDIS_URL at it
  • Config vars
    heroku
    Environment variables you do
    heroku config -s → paste once, encrypted at rest

// step by step

From Heroku to live in the EU

Six steps. Most of them take seconds. Heroku keeps serving traffic until you flip your DNS.

  1. 1

    Create a Runsite project

    ~30 sec

    Sign in at runsite.app and create an empty project. No credit card, no Eco-dyno upsell.

  2. 2

    Connect your Git repo

    GitHub · GitLab · Bitbucket

    Authorize GitHub, GitLab or Bitbucket. Runsite auto-detects your runtime and builds the app, the same buildpack-style flow you know from Heroku.

  3. 3

    Recreate your add-ons in Frankfurt

    Postgres · Redis

    Provision a managed PostgreSQL and Redis with one click each. They live in the EU and come with connection strings ready to wire into your env.

  4. 4

    Copy your config vars

    heroku config -s

    Run heroku config -s on your app and paste the values into Runsite. Secrets are encrypted at rest and never logged.

  5. 5

    Move your database

    pg:backups → pg_restore

    Capture a Heroku backup with heroku pg:backups:capture, download it, and restore into your Runsite Postgres with pg_restore. Your DATABASE_URL is already wired.

  6. 6

    Deploy & cut over DNS

    Live in < 2 min

    git push, verify on your Runsite URL, then point your custom domain when you're confident. Heroku keeps serving until you flip DNS, so you can roll back any time.

// no surprises

What moves on its own — and what you touch

Honest about the boundaries. The supported stack is recreated in one click; a short list needs a human, and Runsite flags every item.

Imported automatically

  • git push deploys — runtime auto-detected (Node, Python, Ruby, Go, PHP)
  • Procfile web process → start command
  • Always-on containers — no Eco dyno sleep or cold starts
  • Custom domains & automatic TLS certificates
  • Build & start commands carried over from your repo

You handle once

  • Config vars — paste once via heroku config -s
  • Postgres & Redis data — move with pg:backups and pg_restore
  • Background workers & release/cron tasks — recreate as services
  • Third-party add-ons beyond Postgres/Redis — swap for EU equivalents

// heroku problems → runsite solutions

Common Heroku frustrations — sound familiar?

Every Heroku frustration, solved.

Heroku problem

"My $7/mo dyno sleeps after 30 min"

Eco dynos spin down constantly. Cold starts kill your API response times and user experience.

Runsite solution

Always-on containers, even on free tier

No sleep. No cold starts. Your app runs 24/7 on dedicated resources in EU data centers.

Heroku problem

"I got a $2,400 bill I didn't expect"

Heroku's autoscaling and add-on pricing is opaque. Surprise invoices are a rite of passage.

Runsite solution

Hard spending limits + alerts

Set a monthly cap. Get Telegram alerts at 80%. We physically cannot charge you more than your limit.

Heroku problem

"Free tier is gone. Hobby is $7/mo per app"

Heroku removed free dynos in 2022. A simple side project now costs $7+/mo minimum.

Runsite solution

Permanent free tier, no credit card

Run side projects, prototypes, and demos forever. Free means free — not "free for 90 days".

// comparison

Runsite vs Heroku

Side-by-side. No marketing fluff — just facts.

Feature Runsite Heroku
Free Tier Permanent Removed in 2022
Basic Web Service €5/mo $7.00/mo
Web Standard (1 vCPU, 1GB) €12/mo $25/mo
Managed PostgreSQL €5/mo $9/mo
Data Region EU only (Frankfurt, eu-central) US default, EU = Enterprise only
GDPR Compliance EU entity, full compliance US company (Salesforce)
Spending Limits Hard cap + alerts No built-in limits
Sleep / Cold Starts Always-on Eco dynos sleep after 30min

Migrating from Heroku, answered

Do I have to change my code to leave Heroku?

For most apps, no. Runsite keeps the git-push workflow and auto-detects your runtime the same way Heroku buildpacks do. Your Procfile web process becomes the start command unchanged. You only adjust code if you relied on a Heroku-specific add-on.

What happens to my Procfile?

Your web: process maps directly to the start command on a Runsite web service. release: and worker: processes become separate steps or services you recreate, and Runsite shows you where each one lands.

How do I move my Heroku Postgres data?

Capture a backup with heroku pg:backups:capture and download it with heroku pg:backups:download, then restore into your new Runsite PostgreSQL using pg_restore. The connection string is auto-wired into DATABASE_URL, so your app picks it up on the next deploy.

Will my app go down during the migration?

No. Your Heroku app keeps serving traffic while you build and verify on Runsite. You cut over by switching DNS only once you're happy, and you can point DNS back at Heroku to roll back.

Is the free tier really back?

Yes. Unlike Heroku, which removed free dynos in 2022, Runsite offers a permanent free tier with no credit card and no expiry. Free containers stay always-on too. They don't sleep after 30 minutes.

What about my Heroku add-ons?

PostgreSQL and Redis are first-class managed resources on Runsite. For other add-ons (mail, monitoring, queues), you bring your own EU-friendly provider and add its credentials as environment variables.

Leave Heroku behind

Bring your Procfile. We'll handle the rest — in Frankfurt.

Start your migration →
No rewrites Zero downtime Deploy in 2 min EU servers