Dokku on the other hand has support for buildpack deployment as well as Procfile support for running multiple processes.
I prefer Dokku. The main reason is that I only need a single server for my apps and running Docker Swarm adds complexity.
I wrote about some other differences in my blog: https://www.mskog.com/posts/heroku-vs-self-hosted-paas/
Swarmlet seems to be very young and not production ready. Still, I am exited to see how this project will evolve with time.
When it comes to operations I often feel overwhelmed, even though I've done DevOps and automation work in the past.
Most of the things I'm working on professionally don't need the "scale" part, but the "robustness" and especially "ergonomics" parts. When I look at most infrastructure solutions, then I often get a combination of "this is too complex" and "I don't need this".
So I was drawn to solutions like Heroku at some point, but there you cannot even do the most basic thing: persistently writing to the filesystem. So you are forced to introduce system level complexity and coordination for such a fundamental feature.
Naturally I tend to prefer simple tools that enable things rather than constrain them.
Side note: I think when the "code has to run on some computer" problem is finally solved, then we likely see an explosion in productivity in our industry.