Thoughts on self-hosting

I'm a big fan of self-hosted services, and self-host a number of applications, several of which I made myself[0]. However, in my view, there are a problems with a lot of self-hosted software. These tools mimic the design of large, corporate software. Sure, you can self-host discourse, mastodon, gitlab, nextcloud, and so on, and some people have a good experience doing so. But these applications are enormously complex and depend on the maintenance of large institutions. Complex services have a large operational burden and steep learning curve, and if something goes wrong, they can be difficult to debug.

As an alternative approach, I advocate for software that is designed with self-hosting in mind *first*. These are applications that are designed to be as simple as possible, with as low of an operational burden as possible. This means software with light, stable dependency trees, very restrained scope, few lines of code, and limited operational complexity. Tools based on static file hosting are preferable to web servers, sqlite is preferred to postgres, and so on. Software that utilizes unix philosophy, where simple tools work with other simple tools, rather than ballooning in scope.

Designing applications around self-hosting means that it's more reasonable for more people with limited free time to have the independence of running their own services. It enables more "community hosting", where a small group of users have a close relationship with the people who run their services. But it requires a different design approach than much of the current generation of self-hosted applications (which mostly mimic their mainstream corporate counterparts), and it requires that you temper your expectations of how "fully-featured" something may be. I think that there is a lot of open design space in the world of self-hosting for new services that are built using these principles.

Comment publicly on this post via email:


[0] Here are some of the services that I self-host, which are simple enough that even I, a mediocre sysadmin with a full-time job, have a relatively easy time keeping afloat in my free time: