My homelab is a personal server that I built and maintain to learn real-world IT skills. It runs on Unraid OS and hosts services for myself, friends, and family - everything from media streaming and photo backup to game servers and project management tools.
The goal is simple: get hands-on experience with technologies that matter in professional IT environments. I treat this server like a production system, which means focusing on security, reliability, and proper organization. Every service I add teaches me something new about Linux, networking, Docker, or system administration - skills that directly translate to IT jobs.
| Component | Specification |
|---|---|
| Rosewill Helium Mid-Tower ATX 10x 3.5" + 3x 2.5" drive bays | |
| ASUS TUF B360M-PLUS GAMING S | |
| Intel Core i5-8400 6-Core @ 2.80GHz | |
| 32GB DDR4-2666MHz | |
| Nvidia GeForce GTX 1060 3GB For hardware transcoding | |
| TP-Link EAP610 WiFi 6, WPA3, PoE+ | |
| ISP-provided gateway | |
| IP KVM | |
| UPS Surge Protector |
Build Notes: This server was built primarily from spare PC parts with a few key upgrades (more RAM, GPU, storage). The GPU handles video transcoding for media services. The multi-tiered storage setup uses fast NVMe/SSD storage for frequently accessed data and Docker containers, while HDDs provide bulk storage protected by parity.
All services run in Docker containers, managed through Docker Compose with automated backups via Duplicati.
My server uses Unraid's flexible storage system, which combines drives of different sizes into a single protected array.
Provides fault tolerance for the entire array. If any single data drive fails, the parity drive can rebuild it. The parity drive must be equal to or larger than the biggest data drive.
Store all media, backups, and user files. Unlike traditional RAID, each drive contains its own filesystem and can be accessed individually if needed. Total usable storage: ~24TB.
Acts as a high-speed landing zone for new writes. Data gets written here first for speed, then moved to the array overnight. Dramatically improves performance for file transfers and application writes.
Dedicated SSD for Docker container persistent storage (databases, configurations, app data). Keeps container I/O fast and separate from the main array.
Unraid runs entirely from RAM but boots from USB. The USB drive stores the OS and configuration.
My network is relatively simple but effective:
I use a modern approach to security that focuses on secure tunneling and VPN access rather than exposing services directly:
Cloud Tunneling Service
Public-facing services (like Jellyfin, Immich, AFFiNE) are accessible via custom domains that route through Cloudflare's infrastructure. This means no ports are opened on my router, and Cloudflare provides DDoS protection and SSL encryption automatically.
Private VPN
All administrative interfaces and sensitive services are only accessible through Tailscale's mesh VPN. This includes server management panels, databases, and configuration tools. Even when I'm remote, I connect through Tailscale before accessing anything sensitive.
Access Control Strategy
Public services get Cloudflare domains for convenience. Private/admin services stay VPN-only. This keeps management interfaces completely isolated from the internet.
Container Security
Services run in isolated Docker networks with only necessary ports exposed to the host.
Planning to upgrade both the cache drive and appdata SSD to 1-2TB drives for increased capacity and performance as more services are added.
Exploring home automation technologies and integration with the homelab infrastructure.
Always looking to expand knowledge and implement new services that provide value while teaching practical IT skills.