DEV Community

Cover image for How I Transformed My Old Gaming PC into a Powerful Home Server
Kushagra Kasbi
Kushagra Kasbi

Posted on

How I Transformed My Old Gaming PC into a Powerful Home Server

A detailed breakdown of my first home server build using TrueNAS Scale, Docker, ZFS, and a suite of self-hosted applications for media, photos, and AI.

Introduction

After months of planning and learning, I finally completed my first home server build, and I wanted to document the entire process and final architecture. My primary goal was to repurpose an old gaming PC into a reliable, multi-functional server for my family's needs, focusing on data ownership and privacy. This post covers the hardware, storage strategy, software stack, and the intricate networking setup.

The Hardware

The foundation of this project is my retired gaming rig. It provides more than enough power for my use cases, especially with a dedicated GPU for video transcoding.

  • CPU: Intel i5-7600k
  • Motherboard: Gigabyte GA-B250M-D2V
  • RAM: 32GB DDR4
  • GPU: Zotac Geforce GTX 1060 3GB
  • PSU: Corsair VS550

The Operating System and Storage

I chose TrueNAS Scale as the host OS for its robustness, excellent ZFS support, and native Docker capabilities. My storage is configured as follows:

  • OS Drive: 500GB Crucial SATA SSD
  • andromeda Pool (4TB Mirror): Dedicated ZFS mirror for family photos and videos via Immich.
  • orion Pool (2TB Mirror): A ZFS mirror for all media files and, crucially, persistent storage for all Docker application configurations.
  • comet Pool (1TB Stripe): A single-disk pool for non-critical, temporary data.

The Self-Hosted Services (via Docker)

All services run as Docker containers, managed via the Portainer UI. My stack is built around three core use cases.

1. Automated Media Server

  • Streaming: Jellyfin (leveraging the GTX 1060 for hardware transcoding).
  • Automation: The full *Arr stack (Sonarr, Radarr, Bazarr, Prowlarr) for a "set it and forget it" media library.
  • Requests: Jellyseers provides a user-friendly request portal.
  • Privacy: All downloaders (qBittorrent, Sabnzbd) are routed through a Gluetun VPN container.

2. Private Photo Cloud

  • Immich: This is the star of the show. It provides a self-hosted Google Photos alternative, automatically backing up photos from our mobile devices.

3. Local AI Hub

  • OpenWebUI & LiteLLM: A powerful combination to create a local ChatGPT-like interface that can connect to multiple LLM APIs.

The Networking Architecture

This was the most challenging and rewarding part. I implemented a three-tiered access system using Nginx Proxy Manager, Cloudflare, and Tailscale.

  1. Local DNS (*.local.mydomain.com): For fast and reliable access on the home network.
  2. Tailscale VPN (*.tail.mydomain.com): Secure access from anywhere in the world by simply activating the VPN on a device.
  3. Cloudflare Tunnels (service.mydomain.com): For the few services I want to expose publicly, I use a secure Cloudflare Tunnel with Google OAuth for an extra layer of authentication. No open ports on my router!

What's Next?

The journey doesn't end here. My roadmap includes:

  • Home Assistant: For centralizing and automating smart home devices.
  • AdGuard Home: For network-wide ad and tracker blocking.
  • Robust Backups: Implementing a 3-2-1 backup strategy by using TrueNAS Cloud Sync to push encrypted snapshots of my andromeda (photos) and orion (app-configs) pools to Backblaze B2.

This project has been an incredible learning experience. Building and managing your own private cloud is a powerful way to take control of your data and learn a ton in the process.

Feel free to check out the full documentation on my GitHub! [https://github.com/kushagrakasbi/KryNet-Homelab/tree/main]

Let me know your thoughts or if you have any questions in the comments!

Top comments (0)