Migrate from Heroku to EU infrastructure
Most Heroku apps migrate to Partiri in minutes. We support the same Git-based deployment model and the runtimes you already use, so your existing app will likely work without code changes. Your infrastructure runs entirely within the EU, GDPR-compliant by default.
Heroku concepts, translated
Environment variables, add-on credentials, and custom domains all map directly to Partiri equivalents.
| On Heroku | On Partiri |
|---|---|
| Procfile | A run command set in the service settings |
| Buildpacks | Not supported — use a native runtime, detected automatically from files like package.json or requirements.txt, or bring a Dockerfile |
| Config Vars | Environment variables, injected at runtime and editable from the service settings page |
| Dynos | Pods, sized Nano through Big depending on the CPU and memory your service needs |
| Add-on credentials (Heroku Postgres, Redis, etc.) | Set the connection string as an environment variable; for file-based data such as SQLite, use Persistent Storage instead |
| Heroku Scheduler | The Cron Job service type |
| Review apps | Not supported — see limitations below |
| Custom domains & SSL | Custom domains with TLS certificates provisioned automatically |
| git push heroku main | A Git push webhook to your configured branch, or a manual deploy from the dashboard |
What doesn't carry over
We'd rather tell you upfront than have you find out mid-migration.
No buildpacks. Heroku-style buildpacks are not supported. Use a native runtime — we detect Node.js, Python, Go, Rust, Ruby, Elixir, PHP, JVM, .NET, C++ and static sites automatically — or bring a Dockerfile, which works unchanged.
No review apps. There is no automatic preview environment feature for pull requests. Deployments are triggered manually or via Git push webhooks to a configured branch.
Managed PostgreSQL, no Redis. Partiri offers Managed PostgreSQL databases (single-instance, EU-hosted, private in-cluster networking) — there's no backups, point-in-time recovery, high availability, or connection pooling in v1, and no managed Redis. Persistent Storage attaches a volume (1–10 GB) to a service for file uploads, SQLite databases, or caches; for anything needing those guarantees, keep it external and point your service at it with an environment variable.
Your first deploy, step by step
Replace your Procfile with a run command and you're most of the way there.
- 1
Connect your source
Point Partiri at your Git repository (GitHub, GitLab, Bitbucket, or Codeberg) or a container image, the same repository you already deploy to Heroku from.
- 2
Set your run command
Replace your Procfile's
web:line with a run command in the service settings, or add a Dockerfile if you'd rather build the image yourself. - 3
Carry over your Config Vars
Copy your Config Vars into environment variables, and swap any add-on connection strings for the credentials of the external service you keep using.
- 4
Pick a region and pod size
Choose a European region and a pod size — all available regions are based in Europe.
- 5
Deploy
We build your app, assign it a subdomain, and it's live. Attach your custom domain whenever you're ready.
Infrastructure that stays in the EU
Partiri is a European company, and our infrastructure runs entirely out of European regions. Every deployment — build, storage, and traffic — stays within the EU, and we're GDPR-compliant by default with no extra configuration needed.
Regions are live today in Germany (Nuremberg) and Finland (Helsinki), with more European countries on the roadmap.
See where we're live