Wharf: Dokku Web frontend

By: on February 28, 2018

As long-time readers of my posts may have noticed, most of the apps I talk about building here are deployed to Heroku. This is mainly because I’ve been a long-term user of theirs, and so when they changed their pricing model a couple of years ago, I got grandfathered in a ridiculous number of free hours. This meant I’ve been able to run many small apps on there, and never run out of hours. Except that apparently I’ve now built enough stuff that’s just popular enough, so now I’m running out. Admittedly, this doesn’t appear to have shut anything down yet (despite being now at 113% used of my free hours for this month), but it’s only a matter of time.

Therefore, I need another option. If this was a customer project, then these days we’d probably lean towards Kubernetes because it’s the big fish in the pond and can do basically anything we need of it. However, it’s overhead in terms of running services and the amount you need to do to make a simple app work is pretty substantial, and most of the stuff I build in these posts is very simple little web apps. I could just hand-tool everything, but that gets annoying fast. I started looking at a couple of the smaller options for this sort of thing: Flynn and Dokku. Both of them are like Kubernetes in certain ways: opinionated wrappers around Docker, but using Heroku Buildpacks which is exactly what I needed. But, both of them were limited in various ways. Flynn had Github webhook integration which I really wanted, and a decent web dashboard but it’s certificate story with Let’s Encrypt was still lacking. It also seemed to have the Kubernetes problem of “designed for many hosts, annoying for one”. Dokku had Let’s Encrypt support, but no web dashboard or Github integration. However, I started to realise that those problems were fixable, or at least capable of being worked around.

I’ve ended up building Wharf, which is a web frontend (in Django) for Dokku. Most of what it does is invoke various Dokku commands to do stuff and query the system, but that also means it does things like invoke Dokku when it gets webhooks in from Github. It’s still a bit rough-and-ready, but I’ve already used it to deploy Dawn and Gasconade on my own host, and the next step will be making the current versions of those on Heroku redirect to the new edition.



  1. Rob says:

    Have you considered CapRover? It doesn’t have Heroku buildpacks but it has everything else including a GUI.

  2. Tom Parker-Shemilt says:

    I hadn’t heard of CapRover, so no I hadn’t considered it 🙂 Wharf on a single server is still achieving my goals, but CapRover’s ability to scale over multiple servers is a big deal, so I might have a go with it at some point if I run out of capacity.

  3. Petronald Richardon Green says:

    some screenshots would be nice 🙂

  4. Tom Parker-Shemilt says:

    @Petronald Richardon Green: Patches welcomed! See https://github.com/palfrey/wharf/issues/8

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>