How I Run Containers in My Homelab

I’ve been running containers on FreeBSD for a while now, and I’ve settled into a workflow that just works. Here’s how I manage everything. The Stack Component Choice Host OS FreeBSD 15 Runtime Podman + ocijail Orchestration Ansible Images Daemonless (FreeBSD-native) Storage ZFS (lz4 compression) Networking VNET jails + bridge No Docker daemon. No Linux VMs. Podman talks to ocijail, which runs containers as native FreeBSD jails. Directory Structure Every service gets its config stored in /containers/<service>/. Simple and predictable: ...

January 20, 2026 · 6 min · Michael Johnson

My Homelab Architecture

My homelab has evolved significantly over the years. Currently, it’s a mix of heavy iron and efficient ARM devices, all orchestrated with Ansible. The Fleet Mars (TrueNAS): The primary storage engine. Bulk ZFS datasets, backups, and media library. Saturn (FreeBSD 15): The CI/CD Core. Runs Gitea, Woodpecker, and DNS. Jupiter (FreeBSD 15): The heavy lifter. Runs local storage and media services. OPNsense: The perimeter. Handling the network, firewall rules, and VLANs. Pluto (FreeBSD 14): My dedicated test box. Sunshine (Synology DS418): Secondary backup server to Mars. Venus (Linux/Fedora): For the few things that absolutely refuse to run on FreeBSD (yet). PiAware: ADS-B flight tracker (built following this guide). Pibox (Linux/ARM64): My low-power, always-on utility box. Everything is managed via Ansible stored in a private Gitea repo. Secrets are vaulted. Deployment is a single playbook run.

January 12, 2026 · 1 min · Michael Johnson