Part 3 — Docker, Homeservers, and the Slow Descent Into Infrastructure
Every self-hosting journey begins with optimism.
And eventually arrives at:
“Why is localhost refusing to localhost?”
For me, the infrastructure side began innocently enough.
A Raspberry Pi 5.
An NVMe SSD.
Docker.
Portainer.
A few containers.
Nothing dramatic.
The original idea was simply to centralize media and services:
Jellyfin for movies and TV
Immich for photos
Nextcloud for files
Navidrome originally for music
eventually Needle backend and web player
At first, the homeserver felt like a side project.
But the moment multiple services start interacting, infrastructure becomes a system rather than a collection of apps.
And systems introduce entirely new categories of problems.
For example:
Docker networking
volume permissions
storage layouts
backup strategies
reverse proxies
internal vs external access
DNS
SSL certificates
service discovery
None of these problems appear when building a standalone desktop app.
But suddenly they become unavoidable.
One particularly educational moment involved Duplicati backups.
At some point I realized that years of carefully curated metadata, cleaned ID3 tags, album artwork, BPM analysis, and vinyl rips represented actual value.
Not financial value.
Personal value.
And personal value changes how you think about backups.
That realization led to:
external storage planning
off-site backup considerations
Docker volume mapping tricks
and several evenings spent staring at Linux mount permissions with existential fatigue.
Infrastructure has a unique way of humbling developers.
No matter how many applications you build, eventually Linux calmly informs you:
“Permission denied.”
And suddenly your entire evening belongs to the filesystem.
But slowly, something interesting began happening.
The infrastructure stopped feeling frightening.
Instead, it started feeling empowering.
That is the dangerous threshold.
Because once infrastructure starts feeling empowering, thoughts like these begin appearing:
“Maybe I should own my DNS.”
Which, naturally, is how the next chapter began.