Skip to main content

Standing Up a Home Server in One Afternoon

·1 min

Today I went from a handful of Docker containers to a full self-hosted infrastructure. Here is what is running on sasquatch now:

The Stack #

  • Media: Plex, the full *arr suite (Radarr, Sonarr, Lidarr, Readarr, Prowlarr), Bazarr, Overseerr
  • Books: Calibre and Calibre-web, consolidated from three different drives into one location
  • Dev: Gitea with CI runners, JupyterLab with nbgrader backed by MariaDB
  • Teaching: A full Canvas LMS instance built from source for testing grade integration
  • Blog: This very site, powered by Hugo and ox-hugo
  • Apps: Streamlit for interactive Python apps
  • Communication: Matrix/Synapse with Element
  • Home: Home Assistant

Everything sits behind Caddy for automatic HTTPS, accessible from anywhere via *.gvmntbw.ddns.net.

The Literate Programming Detour #

The whole setup used to live in an Emacs Org Mode file that tangled out to docker-compose.yml. It was elegant in theory — documentation and configuration in one place. In practice, every change required a tangle step before anything happened. We dropped it in favor of editing the compose file directly. Sometimes the simplest tool is the right one.

What is Next #

  • Get DNSSEC sorted on governmentbrainwaves.info so the real domain works
  • Set up Tailscale for VPN access
  • Build the nbgrader-to-Canvas grade sync pipeline