$PORT env var - and Miget speaks the same language, so most apps deploy without a single code change.
Unlike Heroku’s per-dyno, per-addon billing, Miget gives you a fixed-capacity plan. You deploy unlimited apps, databases, workers, and preview environments inside the compute you buy.
What maps to Miget
| Heroku | Miget |
|---|---|
| Dyno | App |
| Add-on | Managed addon / service |
| Config var | Environment variable |
| Procfile | Procfile |
| Review App | PR preview |
| Heroku Postgres | Miget managed PostgreSQL |
| Heroku Redis | Miget Valkey |
Heroku spreads workloads across many separately billed dynos and addons. On Miget, everything runs inside your plan’s fixed capacity, scheduled fairly across your apps. See the fair scheduler for how compute is shared.
The $PORT compatibility win
Heroku assigns each dyno a port at runtime and expects your app to bind to$PORT. Miget sets an immutable PORT=5000 and routes all public traffic to port 5000.
Because your Heroku app already reads $PORT, it will read Miget’s PORT the same way and bind to 5000 automatically. No code change is required.
Migration steps
Prepare your app and Procfile
Miget’s buildpacks support a Miget auto-detects the language from marker files (
Procfile, so your existing Heroku web process works as-is:package.json, requirements.txt, Gemfile, and so on), similar to Heroku buildpacks. If you’d rather control the build yourself, commit a Dockerfile and Miget will build from it instead.Confirm your app binds to the $PORT / PORT env var rather than a hardcoded port.Create the app and push
Create your app on Miget, then deploy by pushing your Git repository:Prefer to deploy from GitHub? Connect the repo via the GitHub integration for automatic deploys and PR previews - the equivalent of Heroku Review Apps. See Git push to builder for the full push-based flow.
Move the database
Attach a managed PostgreSQL addon. Miget injects a For plain SQL dumps you can pipe into
DATABASE_URL (a postgres://... connection string) into your app automatically - just like Heroku Postgres.Dump from Heroku and restore into Miget:psql "$MIGET_DATABASE_URL" instead.Using Heroku Redis? Attach a Valkey addon - Miget injects a REDIS_URL your app can use in place of the Heroku-provided one.Set your environment variables
Recreate your Heroku config vars as Miget environment variables.
DATABASE_URL and REDIS_URL are injected automatically by their addons, so you only need to set your own app-specific values.See using secrets for how to add and manage environment variables.Cut over DNS
Add your custom domain and let Miget provision TLS automatically. You’ll add a TXT record to verify ownership, then point a CNAME or A record at Miget - certificates are issued via Let’s Encrypt.Follow custom domains to complete the cutover.
Next steps
Git push to builder
Deploy by pushing your repository to Miget.
GitHub integration
Auto-deploy and PR previews, like Heroku Review Apps.
Managed PostgreSQL
Attach a database with an injected DATABASE_URL.
Valkey
A Redis-compatible store with an injected REDIS_URL.
Environment variables
Move your Heroku config vars over as secrets.
Custom domains
Add a domain with automatic Let’s Encrypt TLS.

