Building a Reliable Homelab: From Raspberry Pi to a Full-Stack Server
A Moscow-based data engineer transformed basic Linux knowledge into a full-fledged home lab over two years. Starting with a Raspberry Pi 5 and a 1 TB SSD via SMB shares, they gradually scaled up to a multi-disk NAS, then migrated to an Intel Core i7-13700 for resource-intensive workloads. This shift enabled self-hosting critical services, reducing reliance on cloud providers.
The initial Raspberry Pi 5 setup included a SATA connector for four SSDs. However, platform limitations—weak 4K HEVC transcoding, insufficient RAM, and unreliable SD cards for database storage—forced a major overhaul.
New Configuration:
- CPU: Intel Core i7-13700 (LGA1700)
- Motherboard: Asus ROG STRIX B760-I GAMING WIFI (mini-ITX)
- RAM: 32 GB DDR5 Kingston 5600 MHz
- SSD: Adata LEGEND 860 1 TB PCIe 4.0
- Case: Jonsbo N3 with 8 hot-swap HDD bays
- PSU: 750W 80+ Platinum
OS: Fedora without GUI. Automation via bash scripts, systemd timers, zsh with Oh My Zsh and Powerlevel10k. All services run in Docker containers managed by Portainer.
Self-Hosted Services Stack
The deployed applications cover essential use cases:
- Jellyfin: Media streaming with transcoding
- Navidrome: Music server
- filebrowser-quantum: File manager (14 TB storage)
- Immich: Self-hosted photo and video backup
- mscmanager: Control panel for Minecraft and Terraria
- Transmission: Torrent client
- Vaultwarden: Password manager with SSH key support
- dnsmasq: Local DNS for domain override
- Home Assistant: IoT device management
- Termix: SSH manager
- WireGuard: Secure VPN access
- Nginx: Reverse proxy (planned migration to Caddy with ACME)
Network Setup and Accessibility
The network architecture ensures stable access both locally and remotely:
- Domain on Cloudflare points to the router’s static IP (192.168.0.1).
- Port 443 is forwarded to the internal router (192.168.2.1, OpenWRT with Xray).
- Reverse proxy on the server (192.168.2.10) routes traffic by subdomain (e.g., immich:2283).
- Local dnsmasq in Docker overrides domains to internal IPs; upstream resolvers are 1.1.1.1 and 8.8.8.8.
- Router DHCP assigns local DNS to all clients.
Firewall blocks external access to local ports except localhost. This eliminates downtime from ISP outages—domains resolve locally at home.
Backups and Fault Tolerance
No RAID: five copies of data across three locations using rsync scripts triggered by systemd timers. Scripts monitor changes in /etc and other directories, including hot-configs. Git integration is planned.
Learning networking fundamentals: OSI model, VLANs, managed switches. LazyVim for editing, advanced CLI commands for system control.
Key Takeaways
- Scaling from RPi to x86 resolves performance bottlenecks without compromise.
- Docker + Portainer simplifies deployment and monitoring of self-hosted stacks.
- Local DNS + reverse proxy enables seamless access from home or outside.
- Bash scripts and systemd automate backups, minimizing data loss risks.
- Self-hosting reduces dependency on external services during unstable internet conditions.
This infrastructure suits mid-to-senior-level professionals who want full control over their data and services.
— Editorial Team
No comments yet.