Self-hosted services
I thought it would be interesting to catalogue all the services I host for myself and my family, along with the ones I actually use but don’t self-host, and why. It’s as much a snapshot for my own reference as anything — this list shifts around more than you’d think.
General philosophy
All my services (except for my static sites) run as Docker Compose services. All of my docker-compose files are tracked in Git.
Except for Headscale and Nextcloud HPB — which need direct, unproxied web access or ports open to the world — they all sit in VMs managed by Proxmox, on an HP EliteDesk 800 G3 in my cupboard.
They all proxy through an Oracle Cloud free-tier server that hosts the Headscale control node, Nextcloud HPB, and my static sites.
Static sites
I host a number of static sites for myself. I’ve written elsewhere about how I host and deploy these — Forgejo Actions copy the files to a remote Headscale node. These currently include:
- thms.uk: A directory page for my domain.
- michael.thms.uk: A profile page for me.
- blog.thms.uk: This blog.
- fedialgo.thms.uk: An algorithmic timeline client for Mastodon.
Infrastructure
- Headscale: An open source, self-hosted implementation of the Tailscale control server. Yes, I could use Tailscale, but where would be the fun in that?
- Headplane: An admin interface for Headscale.
- Pocket ID: An OAuth 2 and OpenID Connect provider. I use this primarily for authenticating to Headscale and Headplane, but also for Forgejo, Proxmox, OCI, and a few other services.
- diun: Docker Image Update Notifier. It notifies me whenever a new Docker image is available for any of my services.
- Pi-hole: A DNS server that blocks ads and malicious websites. I use it primarily for resolving DNS locally within my homelab.
- Caddy for proxying.
Monitoring
- Grafana: A monitoring dashboard to keep track of the health of all my Docker services and VMs.
- Uptime Kuma: A simple, attractive uptime monitor that I use for all my web services and important cron jobs.
Coding
- code.thms.uk: A Forgejo instance for my code. I also host some CI/CD runners with it, including the ones that deploy the static sites mentioned above.
- paste.thms.uk: An Opengist instance to host my pastes.
Nextcloud helpers
Whilst I’m using Hetzner’s Storage Share for Nextcloud, I’ve set up a couple of ‘helpers’ in improve the experience of using Nextcloud:
- Collabora CODE: Lets me edit documents from my Nextcloud instance in the browser.
- Nextcloud HPB: The high-performance backend for Nextcloud Talk — needed to improve the performance of Talk, which I use as a conferencing tool for clients.
Reading and Social
- mstdn.thms.uk: My self-hosted Mastodon instance.
- read.thms.uk: A FreshRSS instance for reading my RSS feeds.
- morss: A tool to convert non-full-text RSS feeds to full-text ones. The project is largely abandoned, and most of its functionality can now be replicated within FreshRSS itself, but a couple of my feeds still work better with morss in the middle, for whatever reason.
Others
- Password Pusher: A really great tool to securely exchange passwords and other secrets with clients.
- Home Assistant for home automation.
- A small number of sites and apps I’ve written myself, for myself or friends, hosted as Docker containers on my homelab.
What I’m not (yet) self-hosting
- Nextcloud: I’m currently using Hetzner’s Storage Share instead of self-hosting. It’s good value for money, and given the importance of the data — and how upset my family would be about any outages — it’s the best option for now. I’m hoping to migrate to self-hosting Nextcloud eventually, but I think I’ll need better hardware for that first, including a proper RAID setup.
- Email: I currently use Fastmail for my own and my family’s email, on our own custom domains. I really like the Fastmail experience, and I fear the complexity of self-hosting email — and getting deliverability right — far too much to make the move.
Wrapping up
If you self-host something I’ve not mentioned here and think I’m missing out, I’d love to hear about it in the comments/replies — especially anything that’s replaced a paid service you were glad to see the back of.