$ /mnt/data/
├── media/ # The unified directory
│ ├── movies/
│ └── shows/
└── nextcloud/ # Sovereign cloud data
/mnt/data/
├── media/ # The unified directory
│ ├── movies/
│ └── shows/
└── nextcloud/ # Sovereign cloud data
/mnt/data/
├── media/ # The unified directory
│ ├── movies/
│ └── shows/
└── nextcloud/ # Sovereign cloud data
services: your-app: init: true
services: your-app: init: true
services: your-app: init: true
CONTAINER ID IMAGE COMMAND STATUS
a3f1b2c9d4e5 grafana ... Exited (255) 87 days ago
CONTAINER ID IMAGE COMMAND STATUS
a3f1b2c9d4e5 grafana ... Exited (255) 87 days ago
CONTAINER ID IMAGE COMMAND STATUS
a3f1b2c9d4e5 grafana ... Exited (255) 87 days ago - Public routing: Cloudflare Tunnels handled inbound HTTP traffic (Nextcloud web interface, dashboards) without ever exposing my origin IP. No open ports required.
- Private routing: Tailscale handled everything that didn't need to be public — SMB shares, SSH, internal dashboards. - ❌ No ZFS bit-rot protection
- ❌ No RAID parity
- ❌ No snapshots
- ❌ No off-host backups of the database - Docker networking and Compose -weight: 500;">service dependencies
- Reverse proxying through CGNAT without opening a single port
- Linux process management (the hard way)
- Why storage architecture is not an afterthought