Pi-Hole – Nginx als Webserver

Pi-Hole installiert (soweit ausgewählt) lighttpd als Webserver auf dem Linux-System. Damit wird ein sauberer Zugriff via Webinterface ermöglicht und die notwendigen Pakete automatisch aktualisiert.
Wer ein anderen Webserver verwenden möchte, z.B. in diesem Fall nginx, muss einige Anpassungen vornehmen, damit Pi-Hole sauber läuft.

Noch kein Pi-Hole installiert?
Ich habe ein Video-Tutorial dazu erstellt. Schau es dir doch einmal an 🙂

Noch kein Pi-Hole installiert, du kennst aber die Anleitung schon?
Sehr gut!
Du kannst während der Installation auswählen, das lighttpd NICHT installiert wird! Somit kannst du dir Schritt 1 sparen!

Das Ziel:

Das Webinterface von Pi-Hole über nginx betreiben.

Die Lösung:

1. Stoppen und deinstallieren von lighttpd
Es ist besser lighttpd direkt komplett zu deinstallieren, damit wir keine Probleme verursachen, wenn zwei Webserver laufen.

apt remove lighttpd*
apt purge lighttpd*

2. PHP ggf. updaten / installieren
Installiere nun die aktuellste php-Version.
apt install php7.3 php-fpm php7.3-bcmath php7.3-cgi php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-readline php7.3-sqlite3 php7.3-xml php7.3-zip

3. Installiere nginx
apt install nginx

4. Eine neue Config für Pi-Hole anlegen
nano /etc/nginx/sites-enabled/pihole

Ich habe hier einmal eine Beispielkonfiguration aufgeführt.
Passe diese einfach auf deine Vorgaben an.
In den meisten Fällen muss nur die PHP-FPM-Version angepasst werden.
Es wird Port 80 verwendet und der Server hat kein Name.
ACHTUNG: Soweit die „default“-Config noch aktiv ist, ändere entweder das Root-Verzeichnis oder den genutzt Port ab. Ansonsten kann es zu Fehler 403 kommen!
server {
listen 80;
listen [::]:80;

root /var/www/html;
autoindex off;

index pihole/index.php index.php index.html index.htm;

location / {
expires max;
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param FQDN true;
#auth_basic "Restricted"; #For Basic Auth
#auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}

location /*.js {
index pihole/index.js;
#auth_basic "Restricted"; #For Basic Auth
#auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}

location /admin {
root /var/www/html;
index index.php index.html index.htm;
#auth_basic "Restricted"; #For Basic Auth
#auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}

location ~ /\.ht {
deny all;
}
}

5. Berechtige www-data für die Webinterface-Daten
Das Webinterface wurde mit dem User Root angelegt, soweit du das Script zur Installation ausgeführt hast. Dies müssen wir ändern.
chown -R www-data:www-data /var/www/html/pihole
chown -R www-data:www-data /var/www/html/admin

6. Teste die nginx-Konfiguration und starte nginx neu
nginx -t
service nginx restart

Das Webinterface sollte nun via nginx zur Verfügung stehen!


Kennst du schon mein öffentliches Pi-Hole?
Damit kannst du von überall in der Welt den Mist blocken lassen!

Kommentar verfassen