Skip to main content

Migrate from Heroku

Appliku shares many concepts with Heroku — environment variables, add-ons as managed databases — so migrating is straightforward. This guide walks you through moving your application from Heroku to Appliku and highlights the key differences.

Overview: Heroku Concepts in Appliku

HerokuAppliku
DynosProcesses
Config VarsEnvironment Variables
Procfileappliku.yml services section
Heroku PostgresAppliku PostgreSQL (provisioned on your server)
Heroku RedisAppliku Redis (provisioned on your server)
Custom DomainsDomains
BuildpacksBuild images or custom Dockerfile
Release phaserelease process

Heroku Sync Feature

Appliku has a built-in Heroku sync feature that can import your application directly. When creating a new application in the Appliku dashboard, look for the Heroku tab in the application creation form. This lets you connect to your Heroku account and sync an existing Heroku app — including its configuration — into Appliku.

tip

The Heroku sync feature is the fastest way to migrate. It pulls your app's repository connection, environment variables, and process definitions automatically.

Step-by-Step Migration

If you prefer to migrate manually or the Heroku sync does not cover your setup, follow these steps.

Step 1: Create an Application in Appliku

Go to the Applications page in your Appliku dashboard and click + Add Application.

Select GitHub (or GitLab) and choose the same repository and branch your Heroku app deploys from.

Give your application a name, select the server to deploy to, and click Create Application.

Step 2: Define Processes in appliku.yml

Appliku uses an appliku.yml file to define your application's processes. Translate your Heroku Procfile into the services section of appliku.yml.

For example, if your Heroku Procfile contains:

web: gunicorn myapp.wsgi --log-file -
worker: celery -A myapp worker --loglevel=info
release: python manage.py migrate

Create an appliku.yml in your repository root with the equivalent services:

services:
web:
command: gunicorn myapp.wsgi --log-file -
worker:
command: celery -A myapp worker --loglevel=info
release:
command: python manage.py migrate

The web service receives HTTP traffic. The release service runs once after each successful build.

See the appliku.yml Configuration guide for the full list of options.

Step 3: Copy Environment Variables

In Heroku, run:

heroku config -a your-app-name

This prints all your config vars. Copy them into the Environment Variables tab in your Appliku application settings.

note

The DATABASE_URL and REDIS_URL variables will change when you provision databases in Appliku (see Step 4). Do not copy the Heroku database URLs — Appliku will set these automatically.

Step 4: Provision Databases

On the application overview page, scroll down and click Add Database to provision the databases your app needs:

  • Heroku Postgres becomes Appliku PostgreSQL — select the PostgreSQL version and the server to run it on
  • Heroku Redis becomes Appliku Redis — provision a Redis instance on the same server

Once provisioned, Appliku automatically adds the connection URLs (e.g., DATABASE_URL, REDIS_URL) to your application's environment variables.

Step 5: Set Up Custom Domains

Go to the Domains tab and add your custom domains. Appliku will automatically provision Let's Encrypt SSL certificates for each domain.

Your app will also receive a default subdomain at your-app-name.applikuapp.com that you can use for testing before switching DNS.

Step 6: Switch DNS

Once you have verified that your application is running correctly on Appliku (use the default .applikuapp.com domain to test), update your DNS records:

  1. Point your domain's A record to your Appliku server's IP address, or
  2. Set a CNAME record pointing to the Appliku-provided domain

After DNS propagates, traffic will flow to your Appliku-deployed application.

Key Differences from Heroku

Your Own Servers

Appliku deploys to your own servers — not shared infrastructure. You choose the cloud provider (AWS, DigitalOcean, Hetzner, or any VPS) and the server size. This means:

  • No dyno sleeping — your app runs 24/7 without cold starts
  • Predictable pricing — you pay your cloud provider directly for the server, plus the Appliku subscription
  • Full server access — you can SSH into your server if needed

No Ephemeral Filesystem

Unlike Heroku, where the filesystem resets on every deploy, Appliku supports persistent volumes. If your app writes to disk (uploads, generated files), you can attach a volume so files survive deployments and restarts.

Buildpacks vs Build Images

Heroku uses buildpacks to detect and build your application. Appliku uses build images — pre-configured Docker images for Python, Node.js, Ruby, and more. You select the build image in the Build Settings tab.

For full control, you can use a custom Dockerfile instead.