// 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.
- ~20 min
- typical migration
- Same git push
- keep your workflow
- Keep Heroku running
- until you cut over
// 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.
web: gunicorn app:app
worker: celery -A app worker
release: python manage.py migrate - →git push heroku mainherokugit push → auto-build autoNode, Python, Ruby, Go & PHP detected automatically
- →Procfile web processherokuWeb service start command autoYour `web:` line becomes the start command, unchanged
- →Eco / Basic dynoherokuAlways-on container autoNo 30-minute sleep, no cold starts
- →Heroku Postgres add-onherokuManaged PostgreSQL you doProvision in Frankfurt, then pg:backups → restore
- →Heroku Data for RedisherokuManaged Redis you doSpin one up; point your REDIS_URL at it
- →Config varsherokuEnvironment variables you doheroku 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
Create a Runsite project
~30 secSign in at runsite.app and create an empty project. No credit card, no Eco-dyno upsell.
- 2
Connect your Git repo
GitHub · GitLab · BitbucketAuthorize GitHub, GitLab or Bitbucket. Runsite auto-detects your runtime and builds the app, the same buildpack-style flow you know from Heroku.
- 3
Recreate your add-ons in Frankfurt
Postgres · RedisProvision 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
Copy your config vars
heroku config -sRun heroku config -s on your app and paste the values into Runsite. Secrets are encrypted at rest and never logged.
- 5
Move your database
pg:backups → pg_restoreCapture 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
Deploy & cut over DNS
Live in < 2 mingit 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 |
// migration questions
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 →