Heroku add-ons mapped to self-hosted containers
- Heroku Postgres
- Heroku Data for Redis
- Heroku Scheduler
- Papertrail, Logtail and log drains
- New Relic, Scout and APM
- SendGrid, Mailgun and email add-ons
- Bucketeer and S3 add-ons
- Heroku Connect, Kafka and specialized add-ons
- Config vars
- Order of migration
Heroku apps often depend on a handful of add-ons provisioned years ago. When moving to your own server, each needs a replacement. Most have a well known open source equivalent that runs in a container next to your app.
Heroku Postgres
Replace with the official postgres image, matching the major version. Migrate with pg_dump from the Heroku URL and pg_restore on the new server. Add scheduled backups to object storage, because Heroku’s continuous protection does not come with you.
Heroku Data for Redis
Use redis or valkey. Enable AOF persistence if it backs a job queue. Set maxmemory and an eviction policy that matches the use: allkeys-lru for caches, noeviction for queues.
Heroku Scheduler
Replace with scheduled tasks in your deployment platform or a cron container. Heroku Scheduler runs one-off dynos; the equivalent is running a command in a fresh container from the same image.
Papertrail, Logtail and log drains
Self-hosted options include Loki with Grafana, or simply good container log rotation plus a searchable UI from your platform. Start simple; many small apps only need recent logs and a way to search them.
New Relic, Scout and APM
For errors, self-hosted Sentry or GlitchTip. For metrics, Prometheus with Grafana, or the built-in metrics of your platform. Lightweight setups often skip full APM until a real performance question appears.
SendGrid, Mailgun and email add-ons
Keep using a transactional email provider directly. Running your own outbound mail server is rarely worth the deliverability work.
Bucketeer and S3 add-ons
Point the app at an S3 compatible bucket from any provider. Copy files with rclone.
Heroku Connect, Kafka and specialized add-ons
These are harder to replace. Consider keeping a managed service for them, even if the app moves.
Config vars
Heroku add-ons inject variables like DATABASE_URL and REDIS_URL. Keep the same names on the new platform so the app code does not change.
Order of migration
- List every add-on and its plan
- Decide replace, keep managed or drop
- Stand up replacements and migrate data
- Move the app last
Most teams find that half their add-ons are no longer used. Dropping them is the easiest saving of all.
For a broader look at platforms that replace Heroku’s workflow, see this guide to Heroku alternatives in 2026.
Disclosure: I work on Peon.
Write a comment