3 min read |

A self-hosting journey

GEEKOM computer with network and USB cables plugged into it
My tiny little server that hosts this website and much more

Christmas Pi

For Christmas of 2021, my wife gifted me a Raspberry Pi 4. At first, I didn't know what I wanted to use it for. Initially I made it an emulation machine, but eventually tried out Pi-hole. I've always dabbled in running small Linux servers at home, but this time was different—I was hooked on self-hosting. The key ingredient was containerization via Docker.

Docker

The ability to spin up and try out new systems without going through extensive configuration (and misconfiguration) directly on the host OS proved crucial on my journey. Docker Compose allows for defining your containers in a YAML files that you can save, commit to version control, or use to build complex multi-container systems. It's a lot easier and more repeatable than trying to remember the docker command line syntax. Or what you did to set up your server and where all the configuration for the servers it hosts are kept.

Self-hosting

Once I had Docker and my machine running, I tried out all sorts of containers, most notably Home Assistant. After a few years, I outgrew my Raspberry Pi and upgraded to a GEEKOM MiniAir 11, running an Intel Celeron N5095 with 8GB RAM. It's nothing fancy, but about four times more powerful than the Rasperry Pi 4. I installed Ubuntu Server on it and restored all my Docker containers and their data (definitions were saved in YAML and easy to restore via source control) and it was off and running.

Today, I'm running a handful of containers. Here's what's currently running on the little server:

  • Pi-Hole - adblocking and DNS management for my home network.
  • Nginx Proxy Manager - reverse proxy so my little server machine can host multiple websites.
  • Home Assistant - the do-everything home automation system.
  • Eclipse Mosquitto - let's other devices communicate easily with Home Assistant via the MQTT protocol.
  • Wyze Bridge - exposes my Wyze cameras to Home Assistant.
  • Portainer - Monitor and maintain Docker containers from a web interface.
  • Vaultwarden - Open source server compatible with Bitwarden. My passwords are only stored and available on my home network.
  • Wireguard - VPN server, allowing me to remote into my home network from afar.
  • Samba - network drive server for sharing content within my home.
  • calibre-web - web server to manage my Calibre library (and accessible remotely from my BOOX Palma!)
  • Registry - Docker container host, as I sometimes host small containers for personal and work projects.
  • Minecraft Server - not running all the time, but let's the kids play Minecraft with each other and friends. We found a great mod that really reduces the burden on the server.
  • Ghost - Open source blogging (and newsletter) platform. Hosts this website 😄

Ghost

Ghost is a newer blogging and newsletter platform. Over the years, I've hosted famularo.org and my blog on everything from shared hosting, hosted virtual machines, Wordpress, tumblr, svbtle, Azure websites, GitHub pages, and finally, self-hosted at home with Ghost. That's a lot! I may just like setting things up.

So why Ghost? First, it was easy to set up and configure. While I love building websites, I don't need to friction if I'm going to pretend to keep up on blogging. Plus, it's more professional looking and feeling than what I could make.

Fediverse

During this self-hosting journey, Twitter got bought, became X, and I decided I needed a new home. Mastodon and the fediverse seemed like the natural fit for someone technically minded like me. I created my account, lurked as I always do, and slowly learned what the "fediverse" offered: a way to tie content together and not be under one server/company/owner and their whims.

I messed with Hollo a bit and it was close to what I wanted: a self-hostable way to own my content and federate it back to the fediverse. I don't write many micro-posts, so feeding a blog post into it seemed a little much. Plus, its web component is not the project's primary focus. So, I settled on Ghost and the promise of fediverse support. Even if it doesn't come to fruition, I'm happy with what Ghost offers.

Final Thoughts

If you're reading this, congratulations, you found my blog! This page came to you from that tiny computer sitting in my office, next to the printer. I had a lot of fun setting it up and maintaining it over the years. One day I will probably buy a bigger server or get a second one as my needs and desires grow. I'll eventually get bored and redo all this again. But playing around, learning new things, and getting it set up is the fun part and why stop learning and having fun?