Pi-hole unter Raspbian Jessie Lite mit nginx und SSL betreiben

Pi-hole ist ein Werbeblocker auf DNS-Ebene. Das heißt Werbung wird auch geblockt, wenn kein Adblocker verwendet wird, da die anfragen zum Anzeigen der Werbung ins Leere laufen. Im Beitrag Pi-hole unter Raspbian Jessie Lite mit nginx und SSL betreiben habe ich beschreiben wie es unter Raspbian Jessie Lite installiert werden kann.

Pi-hole erlaubt es standardmäßig nicht, dass über SSL auf das Webinterface zugegriffen werden kann. Außerdem verwendet es den lighttpd Webserver. Ich würde die Webseite aber gerne nur über SSL erreichbar machen sowie nginx als Webserver verwenden. In diesem Beitrag beschreibe ich wie nginx installiert und konfiguriert werden kann damit die pi-hole Webseite darüber via SSL erreichbar ist.

lighttpd stoppen und deinstallieren

Zuerst sollte der aktuelle Webserver lighttpd gestoppt und anschließend deinstalliert werden, da er auf Port 80 lauscht, welcher auch von nginx benutzt werden wird.

$ sudo service lighttpd stop
$ sudo apt-get remove lighttpd

nginx und PHP installieren und konfigurieren

Wie nginx und PHP unter Raspbian installiert und konfiguriert werden können habe ich bereits im Beitrag nginx unter Raspbian Jessie Lite mit sicherer SSL Konfiguration und PHP installieren und konfigurieren beschrieben. Anschließend muss noch die nginx Konfiguration für Pi-hole angepasst werden. Ich verwende nachfolgende Konfiguration.

server  {
        listen          80;
        listen          [xxx:xxx:xxx::42]:80;

        server_name     pi-hole.example.com;
        return          301 https://$server_name$request_uri;
}

server  {
        listen          443 ssl;
        listen          [xxx:xxx:xxx::42]:443 ssl;

        server_name     pi-hole.example.com;

        ssl_certificate         /etc/letsencrypt/live/com.example.pi-hole/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/com.example.pi-hole/privkey.pem;
        add_header              Strict-Transport-Security "max-age=63072000; includeSubdomains;";

        root    /var/www/html/admin;

        index   index.php;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass the PHP scripts to FastCGI server
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

        # snippet for updating letsencrypt certificates
        include snippets/certbot-webroot.conf;
}

Nachdem die Konfiguration wie oben beschrieben angepasst wurde muss sie nur noch von nginx neu geladen werden. Bevor sie geladen wird sollte allerdings noch geprüft werden, ob sie Fehler enthält.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo /etc/init.d/nginx reload
[ ok ] Restarting nginx (via systemctl): nginx.service.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.