How to Install Pi-hole on OpenMediaVault with Docker (Ad-Free Home Network Setup)
Want to block ads across your entire home network using your existing home server? In this guide, I’ll show you how to set up Pi-hole on OpenMediaVault using Docker, complete with router configuration and DNS optimization.
No need for a dedicated Raspberry Pi — if you're running OMV, this is the cleanest way to deploy Pi-hole with persistent storage and minimal host system interference.
✅ What You’ll Need
Before diving in, make sure you have:
- OpenMediaVault installed
- Docker and Docker Compose enabled (install via OMV plugins)
- Basic command-line access (SSH or local terminal)
🚀 Why Use Pi-hole with Docker on OpenMediaVault?
Setting up Pi-hole inside Docker offers several benefits:
- ✅ No extra hardware required
- ✅ Keeps host system clean
- ✅ Easily backup or migrate containers
- ✅ Full network-wide ad blocking
However, Pi-hole requires a secure DNS setup, and that means using ports 53 and optionally 67, which can be tricky on host systems without careful configuration.
Luckily, Docker helps isolate that, and OMV makes managing it a breeze.
📝 Step-by-Step: Pi-hole Docker Compose for OMV
Here’s the official Pi-hole Docker Compose file, modified for OpenMediaVault use:
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
# DNS Ports
- "53:53/tcp"
- "53:53/udp"
- "8000:80/tcp"
- "443:443/tcp"
- "67:67/udp"
environment:
TZ: 'Asia/Singapore'
FTLCONF_webserver_api_password: '<secure-password>'
FTLCONF_dns_listeningMode: 'all'
# Volumes store your data between container upgrades
volumes:
- '/path/on/host/etc-pihole:/etc/pihole'
cap_add:
- NET_ADMIN
- SYS_TIME
- SYS_NICE
restart: unless-stopped
🔐 Important Notes:
- Change port
8000:80
if OMV is using port 80. FTLCONF_WEBSERVER_API_PASSWORD
set your admin panel login password — use something strong.- Map host directories to
/etc/pihole
to retain settings and blocklists.
📂 Creating Docker Compose in OpenMediaVault
- Go to
Services > Compose > Files
- Click Add, paste the Docker Compose above
- Click Up on your new Pi-hole stack to start it
🧱 Fix: Port 53 Already in Use on Host
You may hit an error like: listen udp 0.0.0.0:53: bind: address already in use
This means systemd-resolved is occupying port 53. To fix it:
🔧 Steps:
-
Edit
/etc/systemd/resolved.conf
-
Change:
#DNSStubListener=yes
to:
DNSStubListener=no
(Remember to uncomment the line!)
-
Save and run:
sudo service systemd-resolved restart
Now Pi-hole should launch successfully.
🌐 Accessing Pi-hole Admin Panel
Open your browser and visit: http://<OMV-IP>:8000
Log in with the password you set in the Compose file.
📡 Configure Your Router to Use Pi-hole as DNS
To apply ad-blocking across your entire home network:
- Go to your router’s DHCP/DNS settings
- Set Primary DNS to your OMV server’s IP address
For my setup, I used a TP-Link Deco Mesh system and followed this Pi-hole TP-Link guide. They also have guides for other routers.
🧪 Testing If Pi-hole is Blocking Ads
Try visiting: https://www.cnn.com
If everything is working, you won’t see banner ads — they’ll be blocked at the DNS level before reaching your browser.
You can also view the Query Log in the Pi-hole dashboard to confirm real-time DNS activity and see what’s being blocked.
🧠 Final Thoughts
Deploying Pi-hole on OpenMediaVault using Docker is an efficient way to take back control of your internet. With a few configuration tweaks, you get:
- ✅ Network-wide ad blocking
- ✅ A secure, persistent DNS setup
- ✅ No dependency on a separate device like a Raspberry Pi
If you’ve got a home server running OMV, this is one of the best self-hosted tools you can add. It’s low-maintenance, improves performance, and enhances privacy — all in one.
Table of Contents
- ✅ What You’ll Need
- 🚀 Why Use Pi-hole with Docker on OpenMediaVault?
- 📝 Step-by-Step: Pi-hole Docker Compose for OMV
- 🔐 Important Notes:
- 📂 Creating Docker Compose in OpenMediaVault
- 🧱 Fix: Port 53 Already in Use on Host
- 🔧 Steps:
- 🌐 Accessing Pi-hole Admin Panel
- 📡 Configure Your Router to Use Pi-hole as DNS
- 🧪 Testing If Pi-hole is Blocking Ads
- 🧠 Final Thoughts