c a n d l a n d . n e t

Hosting side projects - Dokku

Dusty Candland | | dokku, heroku, elasticbeanstalk, hosting

Where should I host my side project? It's a question I ask every time I start a new project. I've tried so many different options I have to lookup where each project is hosted.

This is annoying and makes development slow. It takes time to remember where a project is hosted and then remember all the different options and commands for those environments.

After fighting with Elastic Beanstalk again, I decided it's time to invest in moving to something more standard and Elastic Beanstalk wasn't going to be it.

If not Elastic Beanstalk, then where?

I have projects deployed directly on servers with Capistrano, on Heroku, with Dokku, Elastic Beanstalk... I've probably tried others I can't think of right now.

There might be another options on AWS, I don't know, there are too many.

Docker might be an acceptable option, but making docker images kinda sucks (though it's getting better with Buildpacks.io). Also images don't help with databases and other serives without a lot of extra work.

I liked the idea of Elstic Beanstalk because it can scale if the project needs it.

I settled on Dokku. And sometimes AWS Lambda.

Why Dokku?

It's easy to work with. A simple git push and the site is up. It installs the right versions of dependencies, handles environment variables, it's easy to install other services, like Redis and background workers.

It handles the database. Including backups.

There's a nice upgrade path by moving to Heroku when needed. This is important since Dokuu only runs on one server.

It supports zero downtime deploys. Many providers have this. It required some extra setup with Capistrano, so it's nice that it's just part of Dokku.

It's cheap-ish. Since it runs on one server, you need one that can handle the number of projects needed. I'm not sure about how this will play out, but I don't see how it could cost more than Elastic Beanstalk instances or Heroku instances.

What about the free Heroku instances? I'd say those are great for development, but not for side projects since the instances go to sleep.

It can handle different technologies. I'm trying to keep the number of different technologies I'm using on side projects to a minimum, for the same reason I'm trying to use the same hosting, it's easier and quicker to bounce back and forth between projects.

I think it's worth exploring different technologies and sometimes a different technology is required. Dokku and Heroku support a bunch of different technologies.

Why AWS Lambda?

I think there is interesting potential in serverless. I'm using AWS Lambda because I'm using Apex Up to manage the deployments there. Doesn't make sense for everything though.

Webmentions

These are webmentions via the IndieWeb and webmention.io. Mention this post from your site: