Migrate from Heroku

Move from Heroku to RaidFrame — faster deploys, lower costs, more features.

Overview

Heroku pioneered the PaaS model. RaidFrame builds on that foundation with modern infrastructure: Docker containers, auto-scaling, managed databases with branching, and AI-native tooling. Migration is straightforward if you have a Dockerfile or Buildpack-compatible app.

Step 1: Install the CLI

curl -fsSL https://get.raidframe.com | sh
rf auth login

Step 2: Export from Heroku

Environment Variables

heroku config --json --app my-heroku-app > heroku-env.json

Database

heroku pg:backups:capture --app my-heroku-app
heroku pg:backups:download --app my-heroku-app
# Downloads latest.dump

Procfile

Your existing Procfile maps directly to RaidFrame services:

web: node server.js
worker: node worker.js
clock: node scheduler.js

Step 3: Initialize on RaidFrame

rf init

Create raidframe.yaml from Procfile

services:
  web:
    type: web
    command: node server.js
    port: 3000
    scaling:
      min: 2
      max: 10

  worker:
    type: worker
    command: node worker.js

  clock:
    type: cron
    command: node scheduler.js
    schedule: "* * * * *"

Import Environment Variables

rf env push --file heroku-env.json

Step 4: Add Databases

# Provision
rf add postgres
rf add redis

# Import Heroku database
rf db import main latest.dump --format custom

Step 5: Deploy

rf deploy

Heroku → RaidFrame Mapping

HerokuRaidFrame
git push heroku mainrf deploy
heroku logs --tailrf logs
heroku config:setrf env set
heroku run bashrf ssh web
heroku run rails consolerf exec web "rails console"
heroku pg:psqlrf db connect main
heroku addons:createrf add postgres/redis
heroku ps:scale web=3rf services scale web --min 3
heroku releases:rollbackrf deployments rollback
heroku pipelines:promoterf deployments promote staging --to production
Procfileraidframe.yaml
BuildpacksDockerfile or auto-detect

What You Gain

  • Auto-scaling — Heroku requires manual ps:scale. RaidFrame scales automatically.
  • Faster deploys — Docker layer caching means ~10s deploys vs Heroku's 60-120s.
  • No slug size limit — Heroku's 500MB slug limit doesn't exist.
  • No dyno sleeping — Free tier idles after 15 minutes but wakes in under 3s (vs Heroku's 30s+ cold start).
  • Built-in cron — no clock process hack needed.
  • Database branching — fork your database for testing.
  • Preview environments — auto-deploy per pull request.
  • 50-70% lower cost — comparable Heroku setup costs 2-3x more.

Heroku Add-ons → RaidFrame Built-ins

Heroku Add-onRaidFrame
Heroku Postgresrf add postgres
Heroku Redisrf add redis
Heroku Schedulerrf cron add
PapertrailBuilt-in (rf logs)
New RelicBuilt-in (rf metrics)
SendGridBuilt-in (rf add email)
CloudinaryBuilt-in (rf add storage)
Bonsai (Elasticsearch)rf add search
CloudAMQPrf add queue

Most Heroku add-ons have a built-in equivalent on RaidFrame. Fewer providers, fewer bills.

Common Issues

PORT Environment Variable

Heroku sets PORT dynamically. On RaidFrame, set it in your config:

services:
  web:
    port: 3000

Your app should still read process.env.PORT — RaidFrame injects it automatically.

Buildpacks

RaidFrame supports Docker and auto-detection. If you relied on custom Heroku buildpacks, create a Dockerfile instead. For standard stacks (Node, Python, Ruby, Go), auto-detection works out of the box.