/ 02 — Infra / Self-hosting

CM3588 Homelab

A complete, reproducible self-hosted stack on a single FriendlyElec CM3588 board — 20+ services, fully containerized, documented to rebuild from scratch.

Role
Maintainer
Timeframe
2024 — present
Status
Shipped
CasaOS dashboard on the CM3588 — CPU/RAM gauges, storage health and apps including Nginx Proxy Manager, Jellyfin, AdGuard Home, Immich, Seafile and Tailscale
DockerDocker ComposeLinuxCasaOS
01 / Problem

I wanted my photos and files on hardware I own, backed up where no unwanted eyes can reach them, instead of renting that trust from Google. I also wanted a playground: a standing excuse to learn Linux as a server, Docker networking, and everything in between. The usual fate of a setup like this is a pile of undocumented containers that nobody can rebuild after a disk dies, including future-you.

02 / Approach

I treated the homelab as a living blueprint. Every service is a sanitized Docker Compose file, every decision is written down, and the whole stack can be reproduced from a freshly flashed board. CasaOS sits on top for day-to-day management; twenty numbered guides carry the actual knowledge, from flashing the board and laying out storage to VPN routing and troubleshooting.

03 / What I built
▸

Containerized service stack

Media (Jellyfin/Plex + the *arr stack), photos (Immich), home automation (Home Assistant), personal cloud (Seafile), DNS-level ad-blocking (AdGuard Home) and more — all as Compose files.

▸

Kill-switched downloads

qBittorrent and slskd forced through ProtonVPN WireGuard via Gluetun, so traffic drops dead if the tunnel does.

▸

Secure remote access

Nginx Proxy Manager, Cloudflare Tunnel and Tailscale for getting in from anywhere without exposing the box directly.

▸

One small board, real storage

A FriendlyElec CM3588 — 8-core Rockchip RK3588, 16 GB RAM — running Ubuntu 22.04, with four NVMe drives laid out by role and a 2 TB USB drive on scheduled backups. No rack required.

04 / Outcome
20+
self-hosted services
1
ARM board — 8-core, 16 GB
20
numbered guides to rebuild it
05 / Learnings

The docs ended up mattering more than the containers. Writing each step down as I went, to the point a stranger could reproduce the stack, is why I trust this board with my actual photo library. It also keeps the whole thing a playground: I can try a new service, break it, and rebuild it without fear.