Pi-hole, detta är ju helt genialt!! 🙂

Är du trött på webbsidor, till exempel Expressens hemsida, fyllda med reklam som pockar på din uppmärksamhet? Eller på att kanske (yngre?) familjemedlemmar tittar allt för mycket på avklädda människor i olika intima situationer? Då kan det vara en idé att installera en eller flera, för redundansens skull, egna filtrerande namnservrar, så kallade DNS:er (Domain Name Server). På så sätt kan man, lite ”fult” men oftast fullt fungerande, göra så att man filtrerar bort alla förfrågningar för namn man vill undvika, till exempel ads.google.com eller www.pornhub.com, så att datorn, plattan eller telefonen får ett svar tillbaka från namnservern som säger att sidan inte kan hittas. Oj, tänker du kanske, då måste man ha servrar, man måste ha en hel infrastruktur med licenser för allt …. ojojoj, det blir hur dyrt som helst men det kan jag berätta att det inte blir. Lovar!

Det du behöver, för att komma igång, är till exempel antingen en enkortsdator från Raspberry, en nyare Raspberry Pi. Med alla tillbehör ligger den på runt 700:- och den kommer att fungera utmärkt. Alternativet är om du har en gamma dator med Windows 10 som står i en hörna? Denna fungerar precis lika bra och den känns kanske som ett enklare val i det fall du inte känner dig bekväm med att ”drifta” en Linuxbaserad enkortsdator.

Docker för desktop

Vi utgår från Windows 10-datorn och att du har en fungerande sådan. Om du inte redan gjort det, börja med att konfigurera alla dina IP-inställningar manuellt så att du säkert vet vilken IP-adress datorn har.

Du behöver därefter skapa en virtuell miljö i vilken du kan starta mjukvaran Pi-hole, denna är ju gjord för att köras i Linuxmiljö och den finns portad för Docker vilket är jättebra! Gå till Docker.com, skapa ett konto, logga in och ladda ner Docker Desktop för din Windowsversion.

Under installationen av Docker Desktop, undvik att klicka i att du vill köra Windows Containers för det vill du inte, Linux är standardvärdet. I övrigt, med den nya WSL 2-tekniken så behöver du inte konfigurera mer, tidigare var man tvungen att definiera antal virtuella CPU:er, mängd minne med mera men det behöver du inte nu.

Efter att du installerat Docker Desktop, och startat om din dator, så laddar du med fördel ner Pi-hole-kontainern med följande kommando i Windows kommandotolk startad med adminrättigheter.

docker pull pihole/pihole

För att starta Pi-hole, nu när du laddat ner containern, så måste du ange ett startskript, detta gör du i samma eller en ny kommandotolk startad med adminrättigheter.

docker run -d –name pihole -e ServerIP=<din dators statiska IP-adress> -e WEBPASSWORD=<DittHemligaLösenord> -e TZ=<DinTidszonITZformat> -e DNS1=127.17.0.1 -p 80:80 -p 53:53/tcp -p 53:53/udp -p 443:443 –restart=unless-stopped pihole/pihole:latest

Ersätt <din dators statiska IP-adress> samt <DittHemligaLösenord> och <DinTidszonITZformat> med det som gäller för dig. Ett exempel kan vara …

docker run -d –name pihole -e ServerIP=192.168.100.203 -e WEBPASSWORD=qwerty -e TZ=Europe/Copenhagen -e DNS1=127.17.0.1 -p 80:80 -p 53:53/tcp -p 53:53/udp -p 443:443 –restart=unless-stopped pihole/pihole:latest

Ändra inte värdet för DNS1, det måste vara 127.17.0.1 vilket är Pi-hole:s interna IP-adress i Dockermiljön. Du kan ange fler namnservrar med

-e DNSx=<IP-adress>

… där x=2, 3 osv.

Om du inte stött på några problem har nu Pi-hole startats i Dockermiljön och din DNS är igång och fungerar. Dags nu att gå tillbaka till dina statiska IP-inställningar i Windows 10, ange nu den statiska IP-adress du gav datorn även som DNS så att även servern använder Pi-hole.

I fallet ovan kan du nu logga in i din nystartade Pi-hole från ett webbläsarfönster med http://192.168.100.203/admin och sedan välja ”Login” och ange ”password”.

Dina DHCP-inställningar

Jag förutsätter att dina klienter i ditt nätverk, det vill säga dina datorer, plattor, telefoner, smarta enheter och andra enheter som begär IP-adresser får dessa tilldelade av din router eller din internetleverantörs tjänstefördelare. Som en del av att tilldela IP-adresser till de enheter som begär det så anges också vilken IP-adress namnservern i nätverket har. Normalt är det samma IP-adress som router eller tjänstefördelare men nu vill du ändra det till IP-adressen din Windows 10-dator som kör Docker/Pi-hole har. Hur du gör det vet jag inte men min router, som kör DD-WRT som routermjukvara, kör DNSMASQ som DHCP-server vilket innebar att jag fick lägga till följande kommandrader i tjänsteuppgifterna för DNSMASQ.

dhcp-option=6,192.168.100.203

Du kan självklart ange andra options också men det får bli en annan artikel, detsamma gäller alla inställningar och anpassningar man kan göra i Pi-hole, det får också bli ett annat tillfälle men med denna grundinstallation tar du bort det mesta i reklamväg utan några synbara problem för den ”vanlige surfaren” om man säger så.

Vassego …

Tillägg 2021-03-12: Efter senaste uppdateringen till Docker Desktop ver. 3.2.1 så binder Docker, med hjälp av WSL2, port 53 till wildcardinterfacet 0.0.0.0 vilket gör att ”-p 53:53/tcp -p 53:53/udp” ofelbart kommer att ge ett felmeddelande vid uppstart av PI-Hole i Docker. Använd istället ”-p 127.0.0.1:53:53/tcp -p 127.0.0.1:53:53/udp”, ”-p 127.17.0.1:53:53/tcp -p 127.17.0.1:53:53/udp” eller kanske det egna interfacets yttre IP. Internet är fullt av felrapporter angående detta, vissa har lyckats backa till en tidigare Docker-version där det inte sker medan andra, som jag, istället fått laborera med annat än wildcard-IP.

Tillägg 2021-04-26: Hur uppdaterar man Pi-hole enklast i Docker-miljön? Jag gör som såhär …

  • Loggar först in i webbgränssnittet för Pi-hole, går in under inställningar och sedan fliken Teleporter. Väljer att göra en backup, du får då en .tar-fil i mappen för nedladdade filer. Du behöver sedan köra Gzip på filen så att den komprimeras och får ändelsen .tar.gz …
  • Går in i hosten som kör Docker, öppnar upp Docker Dashboard och stoppar Pi-hole-instansen i Docker, väljer sedan att radera hela instansen efter att den stoppat.
  • I Docker Dashboard, gå till Images och radera den Pi-hole-image du har.
  • Starta Powershell som administratör, ladda ned senaste Pi-hole-imagen med kommandot ”docker pull pihole/pihole”, sedan uppstartkommandot ”docker run …” enligt beskrivningen ovan.
  • Logga in på nytt i webbgränssnittet för Pi-hole, gå till inställningar, fliken Teleporter och läs tillbaka de flesta inställningarna via din sparade fil.
  • Under inställningar, fliken DNS, gör de inställningar som behövs här.

Tillägg 2021-08-12: Tilläggskonfig utöver default?

Utöver deafult-konfig i Pi-Hole så lägger jag till följande.

En svenskanpassad blocklist:

  • https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Hosts-File.txt

Följande svartlistas med hjälp av regexp:s..

  • ^(.+[-.])??adse?rv(er?|ice)?s?[0-9][-.]
  • ^(.+[-.])??m?ad[sxv]?[0-9][-.]
  • ^adim(age|g)s?[0-9][-.]
  • ^adtrack(er|ing)?[0-9][-.]
  • ^advert(s|is(ing|ements?))?[0-9][-_.]
  • ^aff(iliat(es?|ion))?[-.]
  • ^analytics?[-.]
  • ^banners?[-.]
  • ^beacons?[0-9][-.]
  • ^count(ers?)?[0-9][-.]
  • ^pixels?[-.]
  • ^stat(s|istics)?[0-9][-.]
  • ^telemetry[-.]
  • ^track(ers?|ing)?[0-9]*[-.]
  • ^traff(ic)?[-.]

Följande väljer jag att wildcard-vitlista.

  • apple.com
  • analytics.google.com

Tillägg 2021-12-20

Apple Private Relay för Safari fungerar inte bra med tidigare versioner av Pi-hole men efter att ha uppdaterat till senaste release (FTL ver. 5.10 eller senare) så kan man ange i /etc/pihole/pihole-FTL.conf följande.

  • BLOCK_ICLOUD_PR=false

I min uppsättning kommer dessutom alla DNS-uppslag från en klient varför jag väljer att inte ha kvar den ursprungliga begränsningen om 1000 förfrågningar per 60 sekunder per klient.

  • RATE_LIMIT=0/0

Tillagt 20240811: Se också om hur man med fördel kan köra Pi-Hole tillsammans med Unbound för ännu bättre privatliv på Internet …