Pi-hole.
0) Co będzie potrzebne
Raspberry Pi 3/4/5, karta micro-SD (min. 16 GB), zasilacz 5 V.
Połączenie z routerem (najlepiej kablem Ethernet).
System Raspberry Pi OS Lite (64-bit) lub Docker (jeśli wolisz kontenery).
Dostęp do konfiguracji routera, aby zmienić DNS albo zgoda na uruchomienie DHCP z Pi-hole.
1) Plan sieci (ustal przed instalacją)
Nadaj Pi stały adres IP, np. 192.168.1.2.
Wybierz sposób działania DNS:
1. Najlepiej – w routerze ustaw DNS na Pi-hole.
2. Jeśli router nie pozwala – Pi-hole przejmuje DHCP i rozsyła siebie jako DNS.
3. Ostateczność – ustaw DNS ręcznie na każdym urządzeniu.
IPv6: jeśli operator wymusza IPv6, trzeba także ustawić Pi-hole jako DNS IPv6 albo wyłączyć IPv6 w sieci.
2A) Instalacja na Raspberry Pi OS (bez Dockera)
1. Wgraj Raspberry Pi OS Lite na kartę SD i uruchom Pi. Zaloguj się.
2. Nadaj statyczny IP (przykład dla 192.168.1.2 i bramy 192.168.1.1):
sudo -s
apt update && apt -y full-upgrade
raspi-config nonint do_hostname pihole
cat >> /etc/dhcpcd.conf <<'EOF'
interface eth0
static ip_address=192.168.1.2/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1 1.0.0.1
EOF
systemctl restart dhcpcd
3. Zainstaluj Pi-hole:
curl -sSL https://install.pi-hole.net | bash
W instalatorze wybierz:
Serwer DNS (np. Cloudflare, Quad9).
Domyślne listy blokowania.
Panel WWW – tak.
Adres panelu: http://192.168.1.2/admin. Hasło można zmienić: pihole -a -p.
2B) Instalacja w Dockerze (opcjonalnie)
1. Instalacja Dockera:
curl -fsSL https://get.docker.com | sh
usermod -aG docker $USER
2. Plik docker-compose.yml:
services:
pihole:
image: pihole/pihole:latest<br />
container\_name: pihole<br />
hostname: pihole<br />
restart: unless\-stopped<br />
networks: \{ lan: \{ ipv4\_address: 192\.168\.1\.2 \} \}<br />
ports:<br />
\- "53:53/tcp"<br />
\- "53:53/udp"<br />
\- "80:80/tcp"<br />
environment:<br />
TZ: "Europe/Warsaw"<br />
WEBPASSWORD: "ZmienMnie\!"<br />
FTLCONF\_LOCAL\_IPV4: "192\.168\.1\.2"<br />
volumes:<br />
\- \./etc\-pihole:/etc/pihole<br />
\- \./etc\-dnsmasq\.d:/etc/dnsmasq\.d<br />
networks:
lan:
driver: bridge<br />
ipam:<br />
config: \[\{ subnet: 192\.168\.1\.0/24 \}\]<br />
3. Uruchom:
docker compose up -d
3) Skierowanie ruchu przez Pi-hole
Opcja A – DNS w routerze (najlepsza):
W ustawieniach DHCP routera ustaw DNS = 192.168.1.2. Usuń zapasowy DNS.
Opcja B – Pi-hole jako DHCP:
W panelu Pi-hole → Settings → DHCP → włącz serwer DHCP, podaj zakres adresów i bramę. Wyłącz DHCP w routerze.
Opcja C – ręcznie na urządzeniach:
Na komputerach/telefonach wpisz DNS = 192.168.1.2.
4) (Opcjonalnie) Prywatne i bezpieczne DNS
A) Unbound (lokalny resolver)
Instalacja:
sudo apt -y install unbound
sudo wget -O /var/lib/unbound/root.hints https://www.internic.net/domain/named.root
Plik /etc/unbound/unbound.conf.d/pi-hole.conf:
server:
interface: 127.0.0.1
port: 5335
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
cache-min-ttl: 60
cache-max-ttl: 86400
qname-minimisation: yes
root-hints: "/var/lib/unbound/root.hints"
Włącz usługę:
sudo systemctl enable --now unbound
W panelu Pi-hole ustaw 127.0.0.1#5335 jako jedyny serwer DNS.
B) DNS-over-HTTPS (Cloudflared)
wget -O cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb
sudo dpkg -i cloudflared.deb
Plik /etc/cloudflared/config.yml:
proxy-dns: true
proxy-dns-port: 5053
proxy-dns-address: 127.0.0.1
upstream:
- https://1.1.1.1/dns-query
- https://1.0.0.1/dns-query
Uruchom:
sudo systemctl enable --now cloudflared
W Pi-hole ustaw 127.0.0.1#5053 jako DNS.
5) Listy blokowania i dostrajanie
Domyślne listy wystarczą na start. Popularne dodatkowe: StevenBlack, OISD full. Whitelist – tylko gdy coś się psuje.
Regex – np. (\.|^)adservice\.google\.com$.
Conditional Forwarding pozwala widzieć nazwy hostów lokalnych.
6) Test działania
Na komputerze:
nslookup pi-hole.net 192.168.1.2
nslookup doubleclick.net 192.168.1.2
W panelu sprawdź, czy zapytania rosną i czy są blokady.
7) Aktualizacje i kopie zapasowe
Aktualizacja:
sudo apt update && sudo apt -y full-upgrade
pihole -up
Kopia: Settings → Teleporter.
Jeśli Docker – kopia katalogów etc-pihole i etc-dnsmasq.d.
8) Typowe problemy
Router wymusza DNS operatora → użyj Pi-hole jako DHCP.
Reklamy przez IPv6 → ustaw DNS IPv6 albo wyłącz IPv6.
Portale logowania w hotelach/na gościnnym Wi-Fi → tymczasowo wyłącz Pi-hole (przycisk Disable).
Wolne odpowiedzi przy Unbound – normalne przy pierwszych zapytaniach (cache się rozgrzewa).
9) Jak wyłączyć / wycofać
Przywróć DNS w routerze na automatyczne.
Jeśli Pi-hole działało jako DHCP – wyłącz i włącz DHCP w routerze.
Zatrzymaj Dockera lub sudo systemctl stop pihole-FTL.