My Homeserver & VPS
Overview
This is where I document my journey into self-hosting and infrastructure. I run a homeserver at home with a dual-path setup for exposing services.
Why self-host at all?
- Control: My data stays on my hardware
- Learning: Hands-on experience with networking, Linux, Docker
- Cost: Long-term, most services are cheaper to self-host
- Fun: It's a hobby that actually produces useful things
The Setup
Hardware
- Homeserver:
- VPS:
Network Architecture
I use a dual-path approach to expose my services:
HOMESERVER
┌───────────────────────────────────────────────────────────┐
│ ┌────────────┐ ┌─────────────┐ ┌────────────┐ │
│ │ Web Apps │ │ Gameserver │ │ Other │ │
│ │ (Tunnel) │ │ (VPS Path) │ │ Services │ │
│ └────────────┘ └─────────────┘ └────────────┘ │
└───────────┬────────────────────────────────┬──────────────┘
│ │
│ Primary Path │ Secondary Path
│ (HTTP/HTTPS) │ (non-HTTP, Games)
▼ ▼
┌───────────────────────┐ ┌───────────────────────┐
│ Cloudflare │ │ VPS + WireGuard │
│ (Tunnel + Proxy) │ │ (public IP) │
└───────────────────────┘ └───────────────────────┘
Path 1: Cloudflare Tunnel (Primary)
Most services go through Cloudflare Tunnels — no ports to open and free DDoS protection.
Why Cloudflare Tunnel as primary?
- No port forwarding: Works behind any NAT/firewall
- DDoS protection: Cloudflare absorbs attacks
- Static home IP not needed: Tunnel handles dynamic IPs
- Proxy benefits: Caching, WAF, analytics
Path 2: WireGuard + VPS (Secondary)
For services that Cloudflare doesn't allow or can't handle (non-HTTP traffic like game servers), I route through my VPS via WireGuard.
When do I use the VPS path?
- Game servers: UDP traffic, custom ports
- Non-HTTP services: Mail, FTP, custom protocols
- High-bandwidth: Video streaming, large file transfers (violates Cloudflare TOS)
- Unrestricted ports: Cloudflare Tunnel only supports certain ports
Services I Run
Currently Running
- AdGuard Home:
- Traefik:
- Cloudflare Tunnel:
- WireGuard:
- Obsidian LiveSync:
- Portainer:
Planned
- [ ] Homepage dashboard
- [ ] Uptime Kuma
Deep Dives
- AdGuard Home Setup
- WireGuard: VPS ↔ Homeserver
- Traefik Reverse Proxy
- Cloudflare Tunnel
- Obsidian LiveSync
Lessons Learned
- Document as you go, not "later" because later never comes.
- Expose only what you use; keep the rest private.
- Small, reversible changes are easier to debug than big rewrites.
- It's remarkable how the Internet just works. You can use it every day without knowing all the inner details.
Future Plans
- [ ] Automated encrypted backups
- [ ] Write deep dive guides
- [ ] Document setup on website