On self-hosting
On Tue, 06 May 2025, by @lucasdicioccio, 585 words, 0 code snippets, 7 links, 0images.
This website serves multiple purposes. Firstly, it is a personal hobby that brings me joy. Additionally, it also functions as a pressure valve, allowing me to explore and develop mini-research ideas.
I’ve already written at great length why I’ve built my own blog-engine and then open-sourced it. However the previous article would not cover the operational aspects. Ultimately I’ll present the tooling I’ve built to help with the hosting of this website. However while I started writing it I realized I first need to lay down some thoughts about my personal stance on the hosting tradeoff.
The hosting tradeoff
Hosting a website is both time-consuming and complex. People likely underestimate the amount of micro-decisions to make before hosting a website.
Indeed, to get a website online you need a computing machine running a web-server. However, you need a bit more to publish something online. In particular, you’ll want a domain name and some TLS certificate. Suddenly, you need to pick a DNS server to serve DNS records, and you need to keep your TLS certificates up to date. You also need credentials, and paying for services here and there.
Depending on how what your website runs, you also may need
- long term storage, for instance, a relational database
- some application service
- email services
- analytics endpoints
Each of the above features incur a host of dependencies. Each dependency comes with a set of decisions to make. Even if such decisions have low-consequence, the system you build while preparing your website records these choices. For instance, you may consider which operating-system to run, the name of the admin user, whether you’ve used password of pass keys etc.
A whole industry of services like Medium of Substack fill-in the gap, so that users may only write and upload some content. It is also common to see websites hosted on free tiers for more generalistic hosting services such as Vercel, Supabase, or Netlify. To some extent, we could regard social-website threads as the limit case: an extremely castrated mechanism to publish information but which get used because the barrier to entry is marginal as users already have their social-account set up. The tradeoff of such services is along forfeiting control and copyrights or giving money away to keep an audience.
In a professional setting, someone is paid to handle all of this: it is part of the cost of doing business. However, when blogging for yourself, all, this extra complexity comes as extra on top of finding the motivation to “write content”.
My personal stance
Overall, I believe what matters is whether an author thinks a service will be more sustainable than performing the hosting oneself. I’d rather read some contents on an industrial platform over reading no contents on a personal site. My recommendation here is to never burden yourself: if you feel the need to share something use the mechanism you find is the least difficult. Do not start a self-hosted website before you have some contents.
In my case, I’m in a position where I am willing to spend time administering a personal website because this effort doubles as mini-research. Although I’m moving at crustal speed, I enjoy where my whole adventure of rewriting most of my website-tools in functional programming languages such as Haskell and PureScript.
At this point, I have written: my own blog engine, my own TLS-certificate generator on top of Let’s Encrypt, my own dynamic DNS server and more “recently”. I also configured some PostgREST to record some minimal amount of analytics (as per a previous article). To build and setup all of this services and migrate databases, I revamped DepTrack. A personal project for expressing and executing directed-acyclic graphs (DAGs), and which I made a while back. My next article will likely introduce this DAG tool and the personal research I made along the way because the design of the tool itself is worth some article.