← All work

Self-hosted media and photo stack on commodity hardware

Photos, music broadcasting, remote desktop and dashboards, all served from a home rack with no cloud dependency — including the edge, the identity and the monitoring.

ProxmoxDockerCIFSTraefikCloudflareNetdataUptime Kuma
Role
Sole engineer
Result
20+ services · single-command recovery · zero monthly cloud spend

Context

The goal was to replace paid cloud services with a self-hosted equivalent across photos, media, streaming, remote access and monitoring, while keeping the whole estate recoverable by one person.

Constraints

  • Commodity hardware with a single hypervisor — no redundancy at the physical layer.
  • Storage shared to containers over the network, so mount ordering affects service startup.
  • Public access needed without exposing the home IP.

Decisions

Push the edge to the provider, keep the data local

All public hostnames terminate at a hosted tunnel, so no inbound ports are open and the home address is never published. The origin remains entirely local.

Make startup ordering explicit

Remote storage mounts must exist before dependent containers start. Discovering this through failed restarts produced a documented dependency order rather than a hopeful `docker start -a`.

Monitor the whole path, not just the process

A container can be running and still be unusable. Health checks are modelled on the user-visible path so a green process does not mask a broken service.

Outcome

  • Photos, broadcast audio, remote desktop, dashboards and monitoring all served from one host.
  • No inbound firewall ports; every published service reachable through the tunnel only.
  • Full recovery demonstrated after hardware failure, including database repair and re-mounting remote storage.

What it taught me

Self-hosting is an operations discipline, not a hosting choice. The value is in the recovery path, not the uptime chart.

Addresses, hostnames and identifiers in this write-up are abstracted or generalised. If you would like the specific detail, ask — I am happy to walk through it directly.

← Back to all work