/ 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.