A home lab is an environment consisting of running servers, services, and infrastructure setups at home, usually created as a form of exploration or interest. Homelabbing taps into the personal setups already readily available at home (networks and devices).

The state of things

What’s the setup like now? A control plane federation

  • Portainer Server is running on one device, with Portainer Agents in other devices feeding back to it
  • The Server instance is able to control the Docker Engines within each other device, but the devices’ Engines are not connected

I currently have an extremely basic homelab, with plans to expand even further and explore interesting tech in the time to come!

Additional resources

Setup

  • Raspberry Pi 4 Model B (active)
    • 64-bit ARM Cortex-A72 CPU
    • 4 GB LPDDR4-3200 SDRAM
    • 32 GB microSD internal storage; 1 TB HDD external storage
  • Mac mini (not onboarded)
    • 64-bit Apple M2 CPU
    • 16 GB LPDDR5-6400 SDRAM
    • 256 GB SSD internal storage
  • Lenovo ThinkCentre M910q (not onboarded)
    • 64-bit Intel Core i5-6500T CPU
    • 8 GB PC4-2400T (DDR4-2400) RAM
    • 256 GB SSD internal storage
  • Custom-built PC (primary device)
    • 64-bit Intel Core i5-13500 CPU
    • 32 GB DDR4-3600 RAM
    • 1 TB + 1 TB SSD internal storage
    • 8 GB NVIDIA RTX 3070 Ti

Current services

ApplicationUsageTechHostStatus
Portainer AgentDocker managementDockerMac miniActive (in use)
Open WebUILLM interactionDockerMac miniActive (in use)
Paperless-ngxPhysical paper scanningDocker ComposeMac miniActive (in use)
UmamiAnalyticsDocker ComposeMac miniActive (in use)
n8nWorkflow automationDocker ComposeMac miniActive (experimenting)
Stirling PDFPDF management suiteDocker ComposeMac miniActive (experimenting)
Portainer AgentDocker managementDockerPCActive (in use)
ShlinkLink shorteningDocker ComposeRaspberry PiInactive (shut down)
Portainer AgentDocker managementDockerRaspberry PiInactive (shut down)
Joplin ServerNote-takingDocker ComposeRaspberry PiActive (in use)
5.0 GPA StudentDiscord botDockerRaspberry PiActive (in use)
RadicaleCalDAV and CardDAV managementDocker ComposeRaspberry PiActive (in use)
PortainerDocker managementDockerRaspberry PiActive (in use)
Portainer AgentDocker managementDockerThinkCentreActive (in use)

Current plans

Architectural

  • Explore container orchestration with either Kubernetes (k8s) or Docker Swarm (scrapped; see below
    • Currently, the home lab is preliminarily linked through instances of Portainer Agent and an instance of Portainer Server (running on the Pi) that allows me to interact with the Docker Engine of all three (Pi, PC, and Mac) devices — though somewhat connected this way, each system is still isolated

Onboarding

  • Onboard Mac mini into setup (Done!)
    • Prepare separate home lab user — still want to be able to use the Mac regularly as a desktop
      • The setup for doing this seems more complicated such that the technicality overweighs the convenience. I’ve opted to installing OrbStack alongside the current default user instead of going with a separate home lab user
  1. Source and install upgraded memory and storage devices for ThinkCentre
    • 8 GB DDR4-2400 → ~16+ GB DDR4-2400
    • 256 GB → ~1 TB
  2. Onboard ThinkCentre into setup (Done!)
    1. Read more about Proxmox VE and virtualisation
    2. Prepare and install Proxmox VE as main interface
    • I made a conscious decision to switch to Debian instead of Proxmox; the latter is currently a bit too overkill, and trying to learn it is making my head hurt. Why not stick to something I’m comfortable with for the time being?
  3. Offload services on the Raspberry Pi to the ThinkCentre

Devlog

22 November 2025

  • Learnt more about the concept of orchestration with interactions from LLMs, and decided that orchestration isn’t the right path for this home lab (booooo, I’ll catch any tomatoes you throw at me)
    • Orchestration frameworks assume fungible compute resources (meaning that it doesn’t care where things run, just that it runs). This clashes with the current infrastructure I have, where each node (device) in the infra is purpose-built — the Pi is the low-power and always-on coordinator, the Mac is the mid-tier workhorse, etc.
    • Though orchestration is something I’d like to learn one day, today might just complicate things more and add more overhead
    • Orchestration might be incompatible with Cloudflare Tunnels, where routes through tunnels are statically mapped; i.e., subdomain.example.com will always be mapped to device-A:port — practically incompatible with orchestration frameworks that can spawn replicas on any device in the cluster
  • Curious about Ansible and the idea of automating the provisioning (setting up) of devices
    • Might be handy to always ensure that Docker is installed on future devices with Watchtower set up!

20 June 2025

  • Figured out Samba and managed to get a Samba share working from the external 1 TB HDD connected to the Pi (USB) to the other devices in the home network!
  • Came across Radicale and thought it can replace my current contacts + calendar back-up implementation (running on Wölkli’s hosted Nextcloud instance)
    • Managed to get Radicale working and ported over all my contact + calendar information successfully