Migrating from Heroku

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.

What maps to what

Heroku concepts, translated

Environment variables, add-on credentials, and custom domains all map directly to Partiri equivalents.

On HerokuOn Partiri
ProcfileA run command set in the service settings
BuildpacksNot supported — use a native runtime, detected automatically from files like package.json or requirements.txt, or bring a Dockerfile
Config VarsEnvironment variables, injected at runtime and editable from the service settings page
DynosPods, 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 SchedulerThe Cron Job service type
Review appsNot supported — see limitations below
Custom domains & SSLCustom domains with TLS certificates provisioned automatically
git push heroku mainA Git push webhook to your configured branch, or a manual deploy from the dashboard
Honest limitations

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.

Getting started

Your first deploy, step by step

Replace your Procfile with a run command and you're most of the way there.

  1. 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. 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. 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. 4

    Pick a region and pod size

    Choose a European region and a pod size — all available regions are based in Europe.

  5. 5

    Deploy

    We build your app, assign it a subdomain, and it's live. Attach your custom domain whenever you're ready.

Read the full deployment guide
Data residency

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

Ready to leave Heroku behind?

Bring your Procfile-free app, your Config Vars, and deploy on EU-only infrastructure.

Create your project