I turned a Raspberry Pi into a fully-featured home server running 10+ Docker services — from ad blocking and network monitoring to a personal dashboard accessible from anywhere via my own domain.
Why a Home Server?
As someone who works with cloud infrastructure daily, I wanted to bring some of that power home. A Raspberry Pi is the perfect starting point — low power consumption, silent, and surprisingly capable. The goal was to build a self-hosted setup that handles ad blocking, monitoring, and useful developer tools — all managed through Docker.
The Stack
Everything runs in Docker containers, making it easy to deploy, update, and manage services. Here's what's running:
Ad Blocking — Pi-hole
The first thing I set up was Pi-hole — a network-wide ad blocker that works as a DNS sinkhole. Once configured as the DNS server on my router, every device on the network benefits from ad blocking without needing browser extensions. It blocks thousands of ad and tracking domains daily.
Dashboard — Homepage
Homepage by gethomepage is a beautiful, customizable dashboard that serves as the central hub for all my services. It shows widgets with real-time data from Pi-hole, system temperature, and links to every service. I configured it with a custom avatar and bookmarks, and it's the first thing I see when I open my home server.
Monitoring
- Netdata — real-time system monitoring with detailed CPU, RAM, disk, and network metrics
- Uptime Kuma — monitors all services and alerts me if anything goes down
- Speedtest Tracker — automated internet speed tests with historical graphs
- NetAlertX — scans the network and notifies me when new devices connect
Docker Management
- Portainer — web UI for managing Docker containers, images, and volumes
- Watchtower — automatically updates containers daily at 4 AM and cleans up old images
- Dozzle — real-time Docker log viewer in the browser
- What's Up Docker — tracks available updates for all running containers
Developer Tools — IT Tools
IT Tools provides 50+ utilities right in the browser — Base64 encoding, JWT decoding, hash generators, UUID generators, and more. Super handy for quick tasks without leaving the terminal or opening random websites.
Exposing It to the Internet
The most interesting part was making the dashboard accessible from outside my local network. Instead of opening ports on my router (which is a security risk), I used Cloudflare Tunnel.
Cloudflare Tunnel creates a secure outbound connection from the Pi to Cloudflare's network. No port forwarding, no exposed IP. I pointed my domain to the tunnel and set up Nginx as a reverse proxy to route subdomains to the right services:
home.pavlohorniak.me— Homepage dashboardpavlohorniak.me— my portfolio (GitHub Pages)
Security with Cloudflare Access
To protect the dashboard, I configured Cloudflare Zero Trust Access with a one-time PIN sent to my email. This means even if someone finds the URL, they can't access it without the PIN. No VPN needed, no extra software on my devices — just a simple email verification step.
System Setup
The Pi runs a standard Raspberry Pi OS with SSH enabled for remote access. I set up a
shell alias so I can connect with a single command. For system monitoring on the Pi itself,
btop gives a great overview of CPU, RAM, and running processes.
The Cloudflare Tunnel runs as a systemd service, so it starts automatically
on boot. Combined with Watchtower auto-updating all containers, the server is mostly
maintenance-free.
Final Service Map
| Service | Purpose |
|---|---|
| Pi-hole | Network-wide ad blocking |
| Homepage | Central dashboard |
| Netdata | System monitoring |
| Portainer | Docker management UI |
| Speedtest Tracker | Internet speed history |
| Uptime Kuma | Service uptime monitoring |
| IT Tools | 50+ developer utilities |
| Watchtower | Auto-update containers |
| Dozzle | Docker log viewer |
| What's Up Docker | Container update tracker |
| NetAlertX | Network device monitoring |
| Cloudflare Tunnel | Secure external access |
| Nginx | Reverse proxy |
What's Next
The server is stable and running 24/7, but there's always more to add. Some ideas I'm considering:
- Jellyfin — a self-hosted media server (personal Netflix)
- Vaultwarden — self-hosted password manager (Bitwarden compatible)
- Immich — automatic photo backup from my phone
- Telegram bot — daily stats with Pi-hole data, temperature, and uptime
This project was a great way to combine my professional backend/DevOps skills with a fun personal project. If you have a spare Raspberry Pi lying around, I highly recommend giving it a try.