Chajio Cloud
App Hosting

A Heroku alternative that runs your app as it is

Most apps that deploy to Heroku deploy here unchanged: your Procfile, version files and PORT handling all work. Connect GitHub, push, and you’re live on two replicas with a managed database.

$ git push origin main
▸ Found a Procfile: web: gunicorn app.wsgi
▸ Detected Python: requirements.txt
▸ Installing packages from requirements.txt
▸ Starting the web process from Procfile
✓ Live on 2 replicas: https://my-app.live.chajio.cloud
A Heroku app, deployed as it is

Compatible

What carries over from Heroku

Your Procfile

The web: line starts your app, exactly as it does on Heroku.

No Dockerfile needed

Node.js, Python, PHP, Ruby, .NET, Go and Java apps are detected and built the way Heroku builds them, from the same files.

PORT

Your app reads its port from PORT, as it does on Heroku. Nothing to change.

Version files

engines in package.json, .python-version, composer.json, the Ruby version in Gemfile.lock and global.json pick runtime versions the same way.

Config vars

Become environment variables on the Environment tab. heroku config -s prints them ready to copy.

DATABASE_URL

A managed database hands your app its address in the variable you name, so DATABASE_URL code written for Heroku Postgres connects as it is.

Differences

What works differently

  • Deploys come from GitHub: connect a repository and every push to your branch goes live. There is no git push heroku.
  • Every app runs as two copies behind a load balancer, on every plan, including the Free one.
  • A managed PostgreSQL, MariaDB or MongoDB database is part of every plan, not an add-on, with its own standby replica.
  • A Dockerfile in your repository is built as written. No heroku.yml needed.
  • App Hosting runs your web process. A release: command can move to the start of your web: line, as in bin/rails db:prepare && bin/rails server. If your app relies on worker dynos, Heroku Scheduler or add-ons such as Redis, talk to us before you move.

Moving

Move from Heroku in five steps

  1. Put your code on GitHub

    If you deploy with git push heroku main, push the same repository to GitHub.

  2. Create a project

    Sign in, connect GitHub and pick your repository and branch. Your Procfile and stack are detected.

  3. Copy your config vars

    Run the command below and add the values on the Environment tab. Leave out DATABASE_URL: your new database sets its own.

    Your Heroku config vars, one per line
    heroku config -s --app your-app
  4. Add a database

    Create a PostgreSQL database named DATABASE_URL, as on Heroku, so your code doesn’t change. Need your data moved? Contact us and we’ll help.

  5. Deploy, then switch your domain

    Check your app on its free .live.chajio.cloud address, then add your domain on the Domains tab and point its DNS at us.

Every plan

Included on every plan

2 replicas of every app

Two copies behind a load balancer, so a restart or a failed machine never takes you offline.

A managed database

PostgreSQL, MariaDB or MongoDB, with its own standby replica on another machine.

Deploy on every push

Connect GitHub once; every push to your branch builds and goes live.

One-click rollbacks

Go back to any earlier successful deployment from the Deployments tab.

Free SSL, your domain

Certificates issued and renewed for you, plus a free .live.chajio.cloud address.

Build and runtime logs

Watch builds as they run, and see what your app prints as it serves visitors.

CPU, memory and network

Metrics for every app, from the last 15 minutes to the last 30 days.

Zero-downtime deploys

A new version takes visitors only once its health check passes.

Pricing

Plans that replace your dynos

Free Plan

5GB DB Storage · 2GB RAM

Free 1st month

Then $3.50/mo

  • 2 vCPU
  • 2 Apps
  • 1 Database
  • 2 App Replicas (HA)
  • 2 Database Replicas (HA)
  • PostgreSQL, MariaDB or MongoDB
  • Deploy from GitHub
  • Auto-deploy on push
  • One-click rollbacks
  • Deployment history
  • Build & runtime logs
  • CPU, RAM, disk & network metrics
  • Disk usage tracking
  • Environment variables
  • Custom domain
  • Free SSL
Start Free

Growth Plan

10GB DB Storage · 2GB RAM

$8.99/mo
  • 3 vCPU
  • 4 Apps
  • 2 Databases
  • 2 App Replicas (HA)
  • 2 Database Replicas (HA)
  • PostgreSQL, MariaDB or MongoDB
  • Deploy from GitHub
  • Auto-deploy on push
  • One-click rollbacks
  • Deployment history
  • Build & runtime logs
  • CPU, RAM, disk & network metrics
  • Disk usage tracking
  • Environment variables
  • Custom domain
  • Free SSL
Choose Growth
Most Popular

Business Plan

20GB DB Storage · 4GB RAM

$18.99/mo
  • 4 vCPU
  • 6 Apps
  • 3 Databases
  • 2 App Replicas (HA)
  • 2 Database Replicas (HA)
  • PostgreSQL, MariaDB or MongoDB
  • Deploy from GitHub
  • Auto-deploy on push
  • One-click rollbacks
  • Deployment history
  • Build & runtime logs
  • CPU, RAM, disk & network metrics
  • Disk usage tracking
  • Environment variables
  • Custom domain
  • Free SSL
Choose Business

Pro Plan

30GB DB Storage · 8GB RAM

$37.98/mo
  • 8 vCPU
  • 10 Apps
  • 5 Databases
  • 2 App Replicas (HA)
  • 2 Database Replicas (HA)
  • PostgreSQL, MariaDB or MongoDB
  • Deploy from GitHub
  • Auto-deploy on push
  • One-click rollbacks
  • Deployment history
  • Build & runtime logs
  • CPU, RAM, disk & network metrics
  • Disk usage tracking
  • Environment variables
  • Custom domain
  • Free SSL
Go Pro

FAQ

Questions about moving from Heroku

Most will. Apps without a Dockerfile are detected and built the way Heroku builds them: your Procfile’s web line starts the app, version files pick the runtime, and the port arrives in PORT. What does not carry over is anything outside your repository: add-ons, worker dynos, the release phase and Scheduler jobs.

Yes. Your Procfile’s web: line is how your app starts here too. If you have no Procfile, the stack is detected and started the way Heroku would start it.

A few, mostly because of Rails 8’s defaults rather than Heroku: production uses one database for the app, cache, queue and cable, background jobs run inside Puma with SOLID_QUEUE_IN_PUMA=true, and the health check path is /up. Apps that rely on Sidekiq need Redis and a worker process, which are not offered.

A managed PostgreSQL database included in your plan, with a standby replica on another machine. Give it the variable name DATABASE_URL and code written for Heroku Postgres connects without changes. MariaDB and MongoDB are available too.

Instead of choosing dyno sizes, you choose a plan. The Free plan comes with 2 vCPU, 2GB RAM and 2 apps, larger plans add more, and every app runs as 2 replicas for high availability.

You can start on the Free plan: free for your first month, then $3.50 a month, with 2 vCPU, 2GB RAM, 2 apps and a managed database. The Growth, Business and Pro plans add more CPU, memory, apps and databases as you grow.

Plans are priced and billed in US dollars, and you pay by card at checkout.

No. Heroku is a trademark of Salesforce, Inc., and Chajio Cloud is not affiliated with Heroku or Salesforce. Heroku is named on this page only to describe compatibility.

Bring your app over today

Your first month is on us. Connect GitHub and see your Heroku app live in minutes.