Hvad er Pi-hole?
Pi-hole er et DNS-filter der kører lokalt på dit netværk. Når en enhed slår et domæne op, går forespørgslen til Pi-hole. Kender Pi-hole domænet som en reklamegiver eller tracker, returnerer den 0.0.0.0. Kender den det ikke, videresender den forespørgslen til en rigtig DNS-resolver som 1.1.1.1 eller 9.9.9.9.
Pi-hole v6 udkom januar 2025 og er en komplet omskrivning. Den nye version har en ny webgrænseflade og kræver ikke længere lighttpd som separat service. Den medfølgende webserver er nu en integreret del af Pi-hole selv.
Pi-hole kræver ikke en Raspberry Pi. Den kører på enhver Linux-maskine. Men en Pi 3, 4 eller 5 er perfekt: lav strømforbrug, stille og mere end kraftfuld nok til at håndtere DNS for et hjemmenetværk.
Hvad du har brug for
- Raspberry Pi (3, 4 eller 5) med Raspberry Pi OS Bookworm/Bullseye, eller Ubuntu Server 22.04/24.04
- USB3 SSD-adapter + 120 GB+ SSD (stærkt anbefalet) eller SD-kort på mindst 8 GB (se næste afsnit)
- SSH-adgang eller en tilsluttet skærm og tastatur
- En statisk eller reserveret IP-adresse til Pi'en
SD-kort dør. Brug et SSD.
Pi-holes gravity.db er en SQLite-database der logger DNS-forespørgsler og opdaterer blocklister med jævne mellemrum. Det er ikke lejlighedsvis skrivning. Det er konstant I/O. SD-kort er ikke lavet til det, og de fleste dør inden for 6-18 måneder under Pi-hole-belastning. Man opdager det typisk om natten, når hele husstanden mister internet og man ikke forstår hvorfor.
Et USB3 SSD-adapter plus et 120 GB+ SSD er en engangsudgift på 200-300 DKK og løser problemet permanent. Samsung 870 Evo og Kingston A400 fungerer begge fint. Foretrækker du en mere kompakt løsning, er en USB-stick med høj endurance-rating et acceptabelt alternativ. Samsung FIT Plus og SanDisk Endurance-serien er begge velafprøvede.
På Pi 4 og Pi 5 kan du boote direkte fra USB SSD. Sæt boot-order til USB-first i raspi-config:
sudo raspi-config
# Advanced Options → Boot Order → USB Boot
Kopier OS-image direkte til SSD'et via Raspberry Pi Imager, og Pi'en starter fra SSD fremover. SD-kortet kan blive liggende men ignoreres.
Statisk IP til Pi'en
Pi-hole skal have en fast IP-adresse. Ellers ændrer den sig ved næste reboot, og dit netværk finder ikke DNS-serveren. Den nemmeste metode er en DHCP-reservation i din router: slå Pi'ens MAC-adresse op og tildel den samme IP hver gang.
Alternativt kan du sætte en statisk IP direkte i Pi OS. Åbn /etc/dhcpcd.conf og tilføj:
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=127.0.0.1 1.1.1.1
Erstat 192.168.1.100 med den IP du vil bruge og 192.168.1.1 med din routers adresse. Brug wlan0 i stedet for eth0 ved WiFi. Genstart efterfølgende:
sudo reboot
Installation
Den officielle installationsmetode er et enkelt kommando:
curl -sSL https://install.pi-hole.net | bash
Installationsprogrammet er interaktivt. Det spørger om upstream DNS-provider (vælg 1.1.1.1 eller 9.9.9.9), hvilken blockliste der skal starte med, og om webgrænsefladen skal installeres. Acceptér standardvalgene med mindre du har en specifik grund til at ændre dem. Til sidst viser installationen en adgangskode til admin-grænsefladen. Notér den.
Docker Compose (anbefalet)
Et enkelt docker run-kommando virker, men Docker Compose er langt bedre: nemmere at opdatere, genstarte og udvide med andre services. Med Docker Compose på SSD kan du køre Pi-hole, Portainer, Heimdall og AdGuard Home på den samme Pi uden konflikter.
Opret en mappe og en docker-compose.yml:
mkdir ~/pihole && cd ~/pihole
version: "3"
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: "Europe/Copenhagen"
WEBPASSWORD: "skift-dette"
volumes:
- ./etc-pihole:/etc/pihole
- ./etc-dnsmasq.d:/etc/dnsmasq.d
cap_add:
- NET_ADMIN
Skift skift-dette ud med en ordentlig adgangskode. Start Pi-hole:
docker compose up -d
Data gemmes i ./etc-pihole og ./etc-dnsmasq.d relativt til den mappe du kørte kommandoen fra. Med Docker Compose på SSD er det let at tilføje andre tjenester til den samme docker-compose.yml efterhånden som du har brug for dem.
Admin-grænsefladen og første login
Åbn en browser og gå til:
http://[pi-ip]/admin
Log ind med adgangskoden fra installationen. Har du glemt den, kan du sætte en ny via terminal:
pihole -a -p
Dashboardet viser forespørgsler i realtid, blokeringsrate og en Query Log hvor du kan se præcis hvad der er blokeret og hvad der er sluppet igennem.
Sæt routeren til at bruge Pi-hole som DNS
For at alle enheder på netværket automatisk bruger Pi-hole, skal du pege routerens DNS-indstilling på Pi'ens IP. Log ind på din routers admin-side (typisk 192.168.1.1 eller 192.168.0.1) og find DHCP-indstillingerne. Sæt primær DNS til Pi'ens IP.
Eksempel på routerindstilling:
Primær DNS: 192.168.1.100 (Pi'ens IP)
Sekundær DNS: 1.1.1.1 (Cloudflare fallback)
Når du har gemt indstillingerne, genstart enheder på netværket (eller forny DHCP-lease) for at de begynder at bruge Pi-hole.
Tilføj bedre blocklister
Pi-holes standardliste er StevenBlacks hosts-fil med ca. 120.000 domæner. Den er fin som start, men OISD Basic er bedre vedligeholdt, har over 1 million domæner og er kendt for lave false positives.
Gå til Settings, Adlists, og tilføj:
https://big.oisd.nl/
Klik Add, og kør derefter en gravity-opdatering for at Pi-hole downloader og behandler de nye lister:
pihole -g
Gravity-opdateringen tager typisk et par minutter. Bagefter viser dashboardet det opdaterede antal blokerede domæner.
Test at det virker
Fra en terminal på en hvilken som helst enhed på netværket:
nslookup doubleclick.net [pi-ip]
Returnerer forespørgslen 0.0.0.0 eller :: (IPv6), blokerer Pi-hole korrekt. Returnerer den en rigtig IP, er domænet ikke på blocklisten.
Tjek også Pi-holes dashboard under Query Log. Her kan du se forespørgslerne rulle ind i realtid og verificere at blokeringen sker.
Hvad Pi-hole IKKE gør
Pi-hole blokerer DNS-forespørgsler, ikke HTTPS-trafik. Det betyder at Pi-hole ikke kan blokere reklamer der er indlejret i selve applikationens kode frem for at komme fra et separat reklamedomain. YouTube-reklamer er et godt eksempel: de serveres fra Googles egne domæner og blokeres ikke.
Apps der bruger hardcoded DNS-servere (f.eks. 8.8.8.8 direkte i koden) omgår Pi-hole helt. Det er ikke almindeligt, men det sker. Du kan modvirke det med en DNS-interceptionsregel i din router, men det er udenfor denne guides scope.
Nyttige kommandoer
# Tjek status
pihole status
# Opdatér blocklister (gravity)
pihole -g
# Deaktivér midlertidigt i 5 minutter
pihole disable 5m
# Aktivér igen
pihole enable
# Whitelist et domæne
pihole -w example.com
# Vis de seneste 10 blokerede domæner
pihole -t
Holde Pi-hole opdateret
Pi-hole opdaterer sig selv via:
pihole -up
Kør det manuelt med jævne mellemrum, eller sæt det op som et cron-job.
Ofte stillede spørgsmål
Blokerer Pi-hole reklamer i apps?
Ja, for apps der kalder et separat reklamedomain. Apps der serverer reklamer fra eget domæne — typisk YouTube og Spotify — kan ikke blokeres via DNS alene. Det er en DNS-løsnings grundlæggende begrænsning.
Kan Pi-hole bremse min internetforbindelse?
Nej. Pi-hole er hurtigere end de fleste ISP-DNS-servere fordi det cacher svar lokalt. Du vil typisk opleve hurtigere DNS-opslag, ikke langsommere. Eneste undtagelse er hvis Pi'en er overbelastet med andre opgaver.
Hvad er den bedste blockliste at starte med?
Start med StevenBlack Unified (inkluderet som standard). Den er konservativ, veldokumenteret og har lavt falsk-positiv-niveau. Tilføj OISD Full når du er tryg med opsætningen. De mest aggressive lister blokerer for meget og er frustrerende at tune.