Beginner Homelab Setup
I’ve always been curious about how servers and hosting actually work, so I decided to stop just reading and start building something myself. I didn’t want to spend much, so I started with a small machine I already had. Also, this blog is actually hosted on my own homelab 🙂. Topology of my setup :
%% ===================== %% EXTERNAL %% ===================== Internet["🌐 Internet"] VPN["🔒 VPN Provider"]
Internet <-->|Traffic| VPN
%% ===================== %% NETWORK LAYER %% ===================== subgraph NET["🏠 Home Network (192.168.50.0/24)"] R["Router (VPN client)"] PC["Workstation"] PVE["Proxmox Host\n192.168.50.200"] end
VPN <-->|Encrypted tunnel| R R --> PC R --> PVE
%% ===================== %% COMPUTE LAYER %% ===================== subgraph COMPUTE["🖥️ Proxmox Guests"] CT101["CT101\nAdGuard"] CT102["CT102\nJellyfin + Samba\n192.168.50.76"] VM100["VM100\nUbuntu + Nginx\n192.168.50.146"] end
PVE --> CT101 PVE --> CT102 PVE --> VM100
%% ===================== %% SERVICES LAYER %% ===================== subgraph SERVICES["⚙️ Services"] DNS["DNS"] JF["Jellyfin :8096"] SMB["Samba :445"] NG["Nginx :80"] end
CT101 --> DNS CT102 --> JF CT102 --> SMB VM100 --> NG
%% ===================== %% STORAGE LAYER %% ===================== subgraph STORAGE["💾 Storage"] SSD["SSD (Proxmox OS)"] HDD1["4TB HDD (/mnt/hdd)"] HDD2["4TB HDD (/mnt/hdd2)"] end
SSD --> PVE HDD1 --> PVE HDD2 --> PVE
%% ===================== %% DATA FLOW %% ===================== subgraph DATA["📂 Data Usage"] D1["HDD → Media"] D2["HDD2 → Media"] end
HDD1 --> D1 --> CT102 HDD2 --> D2 --> CT102
%% ===================== %% MONITORING %% ===================== subgraph MON["📊 Monitoring"] SCR["Scrutiny :8080"] TEL["Telegram Health Script"] end
PVE --> SCR PVE --> TEL
Hardware used is Dell Wyse 7040 (mini PC). Decent spec for RM300.
- Intel i5-6500TE
- 8GB RAM
- 500GB SSD
Nothing powerful, but it gets the job done. Everything runs on Proxmox, which lets me split services cleanly. Right now, I’m running:
- AdGuard for DNS filtering
- Jellyfin as a media server
- Samba for file sharing
- Ubuntu VM with Nginx (this blog is hosted here)
For networking, I enabled a VPN on the router. That way, all outbound traffic goes through it without needing to configure each service individually. Storage is still a bit messy. I’m using the SSD for the system and a couple of external HDDs for media storage, currently formatted as NTFS and exFAT. It’s not the best setup for Linux, but it works for now and I’ll improve it later. The goal is to slowly turn this into a proper NAS. I plan to add a drive enclosure, expand the number of disks, and move to a better filesystem like ZFS or ext4. I didn’t go for a prebuilt NAS since it’s expensive, and I prefer building things myself. I’m planning to set up Immich as a self-hosted alternative to Google Photos. The idea is to keep my photos locally while still having a backup in the cloud, so I’m not relying on a single storage location.
It’s not perfect, but it works, and I understand it.
Comments
💬 Comments are powered by Utterances, a lightweight comments widget built on GitHub issues. To comment, you'll need a GitHub account.