📚 Docs

Getting started

What is this PaaS?

This platform is a self-hosted, Heroku-style PaaS built on Dokku 0.38.31, running on a single AWS EC2 instance. You push code with git push; the platform builds it into a container, deploys it with zero downtime, and serves it at its own URL. You never manage servers, containers, or web servers — just your code.

What the platform gives every application out of the box:

The mental model

  1. An app is a git repository plus a name. You create the (empty) app on the platform, add it as a git remote, and push.
  2. A push is a deploy. The platform detects how to build your code (buildpack or Dockerfile), builds a container image, starts the new version alongside the old, verifies it stays up, then switches traffic and retires the old version.
  3. Everything specific to an environment lives in environment variables — set on the platform, never committed to your repo.
  4. The platform owns routing, TLS, and process supervision. Your app's only jobs: listen on the port the platform assigns, stay stateless, and log to stdout.

Who does what

Ask your operator for the deploy key and this platform's 54.170.127.122.sslip.io / 54.170.127.122 values if you don't have them yet. If you run the automation yourself, both come from Terraform: terraform output -raw deploy_private_key (sensitive), terraform output -raw platform_domain, terraform output -raw instance_public_ip.

Your first deploy in five commands

Once you have the deploy key saved at ~/.ssh/dokku-deploy.pem:

chmod 600 ~/.ssh/dokku-deploy.pem

# 1. create the app (any valid name, e.g. my-first-app)
ssh -i ~/.ssh/dokku-deploy.pem dokku@54.170.127.122 apps:create my-first-app

# 2. in your project's git repo, add the platform as a remote
git remote add dokku dokku@54.170.127.122:my-first-app

# 3. push your code to the platform's deploy branch (master)
git push dokku main:master

# 4. watch the build output, then check it live
curl https://my-first-app.54.170.127.122.sslip.io/

# 5. stream its logs
ssh -i ~/.ssh/dokku-deploy.pem dokku@54.170.127.122 logs my-first-app -t

That's a full deploy: build, release, health check, routing, and logs. If the curl in step 4 fails with a TLS error, your app doesn't have a certificate yet — ask your operator (one command, see Deploy your first app, step 10) and use http:// until then.

Tip — save the key in SSH config so git push finds it without flags:

Host dokku-paas
  HostName 54.170.127.122
  User dokku
  IdentityFile ~/.ssh/dokku-deploy.pem

Then git remote add dokku dokku-paas:my-first-app and plain git push dokku main:master just work.

What your app must look like

Any app that satisfies a short list of requirements can deploy here — any language with a Heroku-compatible buildpack (Node.js, Python, Ruby, Go, Java, PHP, …) or anything you can express as a Dockerfile. The full checklist is on the next page: Application requirements.

Where to go next