Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time



Wharf is an opinionated web frontend for Dokku. You can also use the command line version, but most features you'll need day-to-day are in the Web UI



  1. Install Dokku (versions up to 0.19.13, see #78)
  2. Install the following plugins:
  1. Setup the Let's Encrypt plugin to auto-renew (dokku letsencrypt:cron-job --add)
  2. Create the app (dokku apps:create wharf)
  3. Add SSH key storage:
  • mkdir /var/lib/dokku/data/storage/wharf-ssh/
  • chown dokku:dokku /var/lib/dokku/data/storage/wharf-ssh/
  • dokku storage:mount wharf /var/lib/dokku/data/storage/wharf-ssh/:/root/.ssh
  1. Add Redis (dokku redis:create wharf && dokku redis:link wharf wharf)
  2. Add Postgres (dokku postgres:create wharf && dokku postgres:link wharf wharf)
  3. Set ADMIN_PASSWORD to something secret (dokku config:set wharf ADMIN_PASSWORD=somesecret)
  4. Deploy this Git repo as per the standard Dokku instructions

Helpful hints

  • If you're running SSH on a non-standard port, set DOKKU_SSH_PORT e.g. dokku config:set wharf DOKKU_SSH_PORT=2222
  • If Dokku is running somewhere else than the local machine, set DOKKU_SSH_HOST e.g. dokku config:set wharf
  • If there's a Dockerfile in your repository, it'll try and deploy using that by default. Set BUILDPACK_URL to override
  • BUILDPACK_URL should be an HTTPS one, not a SSH or heroku/something one
  • You should setup the global domain name when creating Dokku to start with and add a *.<your dokku domain> entry to give new apps more usable names.

Enabling Github auto-deploy webhooks

  1. Set GITHUB_SECRET config item to something secret
  2. Goto settings/webhooks in Github
  3. Make a new webhook for <your Wharf instance>/webhook with Content type as application/json and Secret to the secret from GITHUB_SECRET


Easiest way to do dev is:

  1. vagrant up which will boot the entire Dokku setup in a VM
  2. DOKKU_SSH_HOST=host.docker.internal DOKKU_SSH_PORT=2222 docker-compose up
  3. Load up http://localhost:8000/