Misschien word je lastiggevallen door pop-upadvertenties tijdens het lezen van een artikel op een website. Hoe kun je al die advertenties blokkeren? Installeer Pi-hole in Docker en gebruik Pi-hole als een netwerkbrede advertentieblokkeerder om je netwerkprestaties te verbeteren.
In deze tutorial leer je hoe je Pi-hole kunt instellen en uitvoeren in een Docker-container om advertenties en websites te blokkeren. Klinkt dat opwindend? Lees verder voor meer informatie!
Vereisten
Deze tutorial is een praktische demonstratie. Zorg ervoor dat je het volgende hebt als je wilt meedoen:
- Docker geïnstalleerd op Windows 10 (maar elk ondersteund besturingssysteem werkt).
- A Windows 10 PC – This tutorial uses Windows 10 OS Build 19042.1165.
Creëren van twee permanente Docker-volumes
Bij het opzetten van Pi-hole in een Docker-container moet je eerst een Docker volume aanmaken om de Pi-hole-toepassing en DNS-configuratie op te slaan.
Open PowerShell als beheerder, voer vervolgens de onderstaande commando’s uit voor Docker om twee volumes (volume create
) met de namen pihole_app
en dns_config
aan te maken. Je kunt ook de namen wijzigen naar jouw voorkeur.
Controleer vervolgens of de Docker-volumes succesvol zijn aangemaakt door het volgende commando uit te voeren, dat alle beschikbare Docker-volumes op je machine weergeeft.
Hieronder zie je twee nieuw aangemaakte volumes met de namen pihole_app
en dns_config
.

Het uitvoeren van Pi-hole in een Docker-container met omgevingsvariabelen
Nu je twee permanente volumes beschikbaar hebt, ben je klaar om een Docker-container uit te voeren met behulp van het basis-Docker-image van Pi-hole. Maar eerst moet je je lokale IP-adres noteren.
Voer het onderstaande commando uit om je lokale IP-adres te krijgen. Je lokale IP-adres is noodzakelijk om het enkele Docker-commando correct uit te voeren.
Voer vervolgens het onderstaande commando uit om het basisbeeld pihole/pihole
van Docker Hub te halen. Vervang de waarden zoals aangegeven in de onderstaande tabel. De tabel legt elk vlag van het commando uit.
Pi-hole Docker Command Flags
Command Flags | Definition |
—name=pihole | Names a Docker container as pihole. There will be an error if a container with the same name already exists on your machine |
-e TZ=Asia/Manila | Environment variable for time zone. Asia/Manila was used for this tutorial, but you can input anything that has the same format listed in on a GitHub gist. |
-e WEBPASSWORD=password | Sets a password for the Pi-hole interface. |
-e SERVERIP=YourIPAddressHere | Set your IP address for the Docker container. You will use this again later for making Pi-hole work. |
-v pihole_app:/etc/pihole | Mounts the volume pihole_app and use subdirectory /etc/pihole for storing the Pi-hole files |
-v dns_config:/etc/dnsmasq.d | Mounts the volume dns_config and use subdirectory /etc/dnsmasq.d for storing DNS configurations as required. |
p 81:80 -p 53:53/tcp -p 53:53/udp | Maps the ports of host machine to the ports of the Docker container (port 81 in host machine maps to port 80 of Docker container) |
—restart=unless-stopped | Sets a restart policy so the Docker container always restarts unless it is manually stopped by the user. |
pihole/pihole | Tells the docker run command to use the official pihole/pihole base image from Docker hub. |
Hieronder zie je de opdracht die de pihole/pihole
basisafbeelding van Docker Hub haalt. Zodra de pihole/pihole
afbeelding is gedownload op je machine, gaat de opdracht automatisch verder en volgt de parameters die je hebt ingesteld in de opdracht.

Na het ophalen van de pihole/pihole
basisafbeelding zie je een uitvoer zoals hieronder, wat aangeeft dat je al de Pi-hole dashboard kunt uitvoeren vanuit de container.

Toegang tot de Pi-hole Dashboard Webinterface
Zodra de Docker-container die je hebt gemaakt actief is, kun je nu toegang krijgen tot het Pi-hole dashboard. Het Pi-hole dashboard is een grafische interface waarmee je kunt configureren welke advertenties moeten worden geblokkeerd, ofwel via je eigen zwarte lijst of door gemeenschapsonderhouden zwarte lijsten.
Navigeer naar http://localhost:81 in je browser omdat je eerder poort 81
van de hostmachine hebt gemapt naar poort 80
van de Docker-container. Op deze manier stuurt je webbrowser de pagina door naar het Pi-hole dashboard.
Als je een andere poort hebt ingesteld bij het uitvoeren van de vorige
docker
opdracht, verander dan de poort om toegang te krijgen tot het Pi-hole dashboard. Bijvoorbeeld, http://localhost:n waarbij ‘n’ het poortnummer vertegenwoordigt.
Log nu in op het Pi-hole dashboard met het wachtwoord dat je hebt ingesteld bij het uitvoeren van de docker
opdracht in de sectie “Pi-hole Docker-container uitvoeren met omgevingsvariabelen”. Voor deze tutorial is het wachtwoord “wachtwoord” (zonder aanhalingstekens).

Zoals je hieronder ziet, blokkeert de Pi-hole-container advertenties niet actief en staat deze stand-by te wachten op wat het “queries” of advertentieverzoeken noemt om te evalueren.

Door de DNS-server van de host naar het IP-adres van Pi-hole te verwijzen
Met de Pi-hole-server actief, hoe blokkeer je advertenties op je lokale systeem? Je moet je lokale systeem vertellen om alle verzoeken naar het IP-adres van Pi-hole te routeren en alle overeenkomende advertenties te blokkeren. Lees verder om te leren hoe!
1. Klik met de rechtermuisknop op het pictogram van je netwerkinstellingen in het systeemvak van Windows en kies Netwerk- en internetinstellingen openen om de lijst met alle netwerkadapters op je computer te zien.

2. Klik vervolgens met de rechtermuisknop op je netwerkadapter en kies Eigenschappen. Het venster met de instellingen van je netwerkadapter wordt geopend.

3. Selecteer Internet Protocol Version 4 (TCP/IPv4) uit de lijst onder het tabblad Netwerken en klik vervolgens op de knop Eigenschappen.

4. Configureer de IPv4-eigenschappen als volgt:
- Selecteer de optie Gebruik het volgende IP-adres om een statisch IP-adres in te stellen. De statische IP-toewijzing aan de hostmachine maakt het mogelijk dat andere apparaten verbinding maken en de adblocker gebruiken. De standaardgateway voor de router verschilt afhankelijk van de instellingen van je internetprovider in jouw land.
- Selecteer de optie Gebruik de volgende DNS-serveradressen om je DNS-server te configureren, en voeg een DNS-server toe in het veld Voorkeurs-DNS-server. Voer het Docker-server-IP-adres in dat je hebt ingesteld vanuit het vorige
docker
-commando onder de sectie “Running Pi-hole Docker Container with Environment Variables”. - Voeg een alternatieve server toe, zoals Google-server 8.8.8.8, in het veld Alternatieve DNS-server, en klik op OK. De alternatieve DNS-server fungeert als een DNS-server voor het geval de Pi-hole Docker-container om een bepaalde reden uitvalt. Je kunt een andere waarde geven aan de alternatieve DNS-server die je verkiest.

Het configureren van de DNS van één enkel apparaat
Stel, je hebt een smartphone of een ander apparaat dat verbonden is met hetzelfde netwerk, dan kun je de DNS-server van dat apparaat wijzen naar het IP-adres van de host. In deze tutorial is een smartphone verbonden met hetzelfde netwerk.
1. In de draadloze netwerkinstellingen van de smartphone, tik op Handmatig en voer het IP-adres van de hostmachine in. Je kunt ook alternatieve IP-adressen toevoegen voor het geval Pi-hole uitvalt.
De interface van draadloze netwerkinstellingen op smartphones verschilt van elkaar.

2. Bezoek nu enkele websites die veel advertenties bevatten in de webbrowser van je smartphone.
Voor dit voorbeeld werden de websites van Daily Mail en de New York Times herhaaldelijk bezocht gedurende 5-10 minuten. De live browserbeheerder op het Pi-hole-dashboard toont het aantal geblokkeerde advertenties van het apparaat, zoals hieronder wordt getoond.
De staafdiagrammen zijn een recente toevoeging aan de nieuwste versie van Pi-hole op het moment van dit schrijven. Sommige oudere versies hebben lijndiagrammen in plaats daarvan.

Het inschakelen van blokkering over het hele thuisnetwerk via routerinstellingen
Probeer in plaats van een DNS-server op een enkel apparaat te configureren, DNS-servers te configureren voor alle apparaten in uw routerinstellingen. Afhankelijk van uw router, kan er al dan niet een voorziening zijn voor het gebruik van het IP-adres.
Voor deze demo liet de router geen toegang toe tot het wijzigen van DNS-servers en DHCP. Daarom werd thuisnetwerken niet in volledig detail onderzocht in deze tutorial vanwege routerbeperkingen.
In een voorbeeldweergave van de beheerder kunt u mogelijk de DNS-server-IP coderen op dezelfde manier als het werd gedaan in een enkel apparaat. Deze demo maakt gebruik van een Prolink PRS1841U-v2 router die is vergrendeld voor ISP.
De DNS-configuratie-interface verschilt van router tot router, maar de instellingen zien eruit als die hieronder.

Je kunt ook de DHCP-server uitschakelen in de router en vervolgens de DHCP-server in Pi-hole inschakelen. Een voorbeeldgesprek in de Pi-hole-community laat dit gedetailleerder zien.
Websites blokkeren via het Pi-hole-dashboard
De standaardinstallatie van Pi-hole blokkeert standaard ongeveer 92.725 websites, maar je kunt ook meer websites toevoegen via blacklists van de maker van Pi-hole en andere lijsten gedeeld door Pi-hole-fans.
1. Sla de te blokkeren websites op in een tekstbestand met de door jou gewenste naam. Voor dit voorbeeld is het bestand genaamd blocklist.txt.
2. Voer de docker
-opdracht hieronder uit om het bestand blocklist.txt te kopiëren (cp blocklist.txt
) naar het volume van de Docker-container in een bestand genaamd blacklist.txt. Bewaar het bestand blacklist.txt op het Docker-volume, zodat Pi-hole het automatisch detecteert.
3. Navigeer ten slotte opnieuw naar het beheerdersdashboard van Pi-hole. Klik op het Tools-menu in het linkervenster en vervolgens op de link Update Gravity. Klik tot slot op Update om een bijgewerkte lijst met URL’s op te halen die Pi-hole moet blokkeren.

A successful update will look like the one below.

Het bijwerken van de lijst met geblokkeerde websites via de console
Mogelijk geeft u de voorkeur aan het uitvoeren van console-opdrachten in plaats van navigeren naar het Pi-hole-dashboard. In dat geval kunt u een docker-opdracht uitvoeren in PowerShell om websites te blokkeren. Voer de docker exec
-opdracht hieronder uit om een interactieve terminalsessie te maken naar de Docker-container pihole_app
, waarmee u opdrachten kunt uitvoeren.
Zodra de terminalsessie is geopend, voert u de onderstaande opdracht uit om de zwarte lijst van URL’s van Pi-hole bij te werken.
Voer
pihole -g
regelmatig opnieuw uit zodat uw ad-blocker up-to-date blijft.
Websites blokkeren via door de community onderhouden zwarte lijsten van URL’s
Sommige URL’s worden regelmatig bijgewerkt door hun bijdragers, en sommige niet, dus het uploaden van een zwarte lijst vanuit een oude lijst weerspiegelt mogelijk niet de nieuwste wijzigingen.
Maak gebruik van de functie voor het beheren van Adlist-bloklijstgroepen van Pi-hole. Klik op het Pi-hole-dashboard op Group Management → Adlists in het linkervenster en klik vervolgens op Add om de lijst met URL’s te kiezen die u aan Pi-hole wilt toevoegen.

Conclusie
In deze tutorial heb je geleerd hoe je een Pi-Hole Docker-image kunt downloaden, een actieve Pi-hole webinterface kunt testen, en een extern apparaat kunt testen om verbinding te maken met Pi-hole. Je hebt ook geleerd hoe je advertenties en websites kunt blokkeren en hebt het Pi-hole dashboard in actie gezien terwijl het ze blokkeert.
Met deze kennis, waarom zou je geen gebruik maken van een willekeurige hostmachine om advertenties te blokkeren voor andere verbonden apparaten in hetzelfde netwerk?