Skip to content

Migrate from Heroku to HostStack

Modern Heroku alternative on EU infrastructure. Real free tier, predictable pricing, and dynos that don’t sleep at random. Migrate in under an hour.

Heroku invented the buildpack-based PaaS workflow, but the platform has stagnated — the free tier is gone, the EU region is opaque, and dyno pricing punishes you for any modest success. HostStack keeps the developer experience and brings it forward: real EU residency, native managed databases beyond Postgres, and pricing that scales with usage instead of dyno-counts.

Why switch from Heroku?

  • Real free tier: 1 Nano web service + 1 Starter Postgres + 1 cron + 1 preview env, no time limits.
  • EU data residency by default — Germany + Finland, with a signed DPA at signup. Heroku’s EU region routes through US-controlled infrastructure.
  • Predictable per-resource pricing. No "professional dyno" tax — you pay for the CPU and RAM you use.
  • Managed MySQL, MongoDB, and Redis natively, not via third-party Heroku add-ons.
  • Buildpacks supported via the standard buildpack spec; or just ship a Dockerfile.
  • Open hoststack.yaml config in your repo, not a Procfile + bin/release dance.
  • CLI, SDK, and MCP server included — drive deploys from any tool, including Claude / Cursor.

Price comparison

ResourceHerokuHostStackComparison
Hobby web app$5/mo Eco (or $7 Basic)€1/mo Pico (or free Nano)Up to 100%
Production web app$25–50/mo Standard 1x/2x€29/mo Pro Standard~20–40%
Managed Postgres (1GB)$9/mo Mini€4/mo Micro~55%
Managed Redis (25MB)$3/mo Mini (via Heroku Data)€4/mo Micro (256MB)Comparable, 10× memory
Persistent disk (10GB)Add-on only€1/mo (10¢/GB·mo)Native vs add-on

Prices as of 2026-05-30. Always check current pricing on each provider before deciding.

Code migration

Before (Heroku)

text
# Procfile
web: bun run start
release: bun run migrate

# app.json
{
  "name": "my-api",
  "stack": "heroku-22",
  "buildpacks": [{ "url": "heroku/nodejs" }],
  "addons": ["heroku-postgresql:mini"]
}

After (HostStack)

yaml
# hoststack.yaml
services:
  - name: my-api
    type: web
    runtime: bun
    build: bun install
    start: bun run start
    release: bun run migrate
    plan: pro-standard
databases:
  - name: my-db
    engine: postgres
    plan: micro

Feature comparison

FeatureHerokuHostStack
Git push deploysYesYes
BuildpacksYesYes (standard CNB) + Dockerfile + native runtimes
Free tierRemoved in 2022Yes — Nano + Starter Postgres + cron + preview
Managed databasesPostgres, Redis, Kafka (paid)Postgres, MySQL, MongoDB, Redis, S3
Data residencyUS/EU (opaque)Germany + Finland (EU only, named regions)
Cron jobsAdd-on (Heroku Scheduler)Native, 1 free per project
Preview environmentsReview Apps (Pipeline-only)Native, 1 free per project
EU VAT invoicesLimitedYes (Stripe Tax)
DPA signed automaticallyOn requestAt signup
CLI / SDK / MCPCLI onlyCLI + SDK + MCP

Migration gotchas

No "ps:scale web=2 worker=3" — services are independent.

HostStack treats each Procfile process type as a separate service with its own scaling policy. Map your web/worker/clock processes to one service each.

Heroku DATABASE_URL is automatically injected.

HostStack does the same — when you bind a managed Postgres to a service, DATABASE_URL is injected at runtime. No code changes needed.

Add-ons → managed resources.

If you depend on a Heroku add-on (Bugsnag, Papertrail, etc), keep it. They’re vendor-neutral. Only the data-plane add-ons (Postgres, Redis, Kafka) move to HostStack’s managed resources.

Migration steps

  1. 1Sign up at hoststack.dev. Connect GitHub / GitLab / Bitbucket and import your Heroku-deployed repo.
  2. 2Translate your Procfile + app.json to hoststack.yaml. The web/worker/release process types map directly.
  3. 3Replicate Heroku config vars as HostStack environment variables (bulk-import supported via dashboard or CLI).
  4. 4Take a pg_dump from Heroku (heroku pg:backups:capture, then heroku pg:backups:download) and restore into your new HostStack Postgres.
  5. 5For Heroku Redis, run a one-shot dump/restore via redis-cli --rdb. For Heroku Scheduler, recreate each job under the Cron tab.
  6. 6Update DNS. Run in parallel for as long as you need, then point traffic at HostStack and decommission the Heroku app.

Frequently asked questions

Do you support Heroku buildpacks?

Yes — HostStack supports the Cloud Native Buildpacks spec, which is the modern successor to Heroku’s buildpack format. Most Heroku buildpacks work unchanged. You can also ship a plain Dockerfile or use one of our native runtimes (Bun, Node, Python, Go, Rust, Java).

What about Heroku Pipelines / Review Apps?

HostStack supports preview environments natively. Every pull request gets an ephemeral environment with isolated databases and a unique URL. There is no separate "pipeline" object — the project itself owns its environments.

Can I keep my Heroku-style "git push heroku main" workflow?

Yes. Once you connect your repo through GitHub / GitLab / Bitbucket, every push to your default branch (or any branch you configure) triggers a deploy. You can also push directly via the CLI: hoststack deploy.

Ready to switch?

Start free. Migrate in under an hour. Keep your data in the EU.

Essential cookies only — for login sessions. No tracking. Details