Mit dem Pi-hole einen Werbeblocker für das gesamte lokale Netz einrichten und dank UniFi Access Points nie mehr WiFi-Probleme [Tutorial]

Image for post
Image for post
Quelle: https://www.pexels.com/photo/apple-devices-books-business-coffee-572056/

Vor wenigen Wochen bin ich über das Open Source Projekt Pi-hole (“Network-wide Ad Blocking — A black hole for Internet advertisements”) gestolpert und habe sofort angebissen. Pi-hole musste bei mir zuhause eingerichtet und getestet werden. Am Ende wurde das komplette Netzwerk Setup auf den Kopf gestellt.

Wie mein Netzwerk nun aufgebaut ist und wie ihr es nachbauen könnt, zeige ich euch in diesem Artikel.

Bei Fragen hinterlasst mir einen Kommentar, kontaktiert mich auf Twitter oder auf Telegram. Ich freue mich auf jegliche Rückmeldung und versuche euch bei Problemen zu unterstützen.

Werfen wir gleich zu Beginn einen Blick auf die Hardware Liste. Folgende Produkte habe ich gekauft für dieses Projekt.

Alles in allem musste ich also mit einem Budget von rund € 387, — rechnen.

Teil 1 — Raspberry Pi und Pi-hole Setup

Image for post
Image for post
Raspberry Pi Model B+ mit Kühlkörper und Gehäuse

Für die Einrichtung von Pi-hole entschied ich mich für die Variante mit einem Raspberry Pi Model B+(Starterkit) mit dem aktuellen Raspbian OS.

Für die Einrichtung wird im Normalfall kein Bildschirm oder eine externe Tastatur benötigt. Nach dem Aufspielen des Raspberry Pi Images greifen wir über eine Secure Shell (SSH) auf den Pi zu.

Die Schritte im Detail:

  • SD Karte vorbereiten (auf Linux, Mac oder Windows) und SSH aktivieren (seit 2016 standardmässig deaktiviert)
  • anschließend SD Karte in den Raspberry Pi einführen und an die Stromzufuhr anschließen
  • nachdem er gestartet ist, müsst ihr seine IP Adresse (beispielsweise mit Angry IP Scanner) finden
  • verbindet euch nun mit dem Raspberry Pi. Die Standard Zugangsdaten lauten: User pi mit dem Passwort raspberry.
$ ssh pi:raspberry@<IP-Adresse>
$ passwd # ändert das Standard Passwort
$ sudo apt-get update -y
$ sudo apt-get upgrade -y
$ sudo apt-get autoremove
$ sudo apt-get autoclean

Es ist ebenfalls möglich mit sudo raspi-config diverse Einstellungen am Raspberry Pi vorzunehmen.

Eine weitere Massnahme zur Performance Verbesserung ist die Erstellung und Einrichtung von Swapping. Ich empfehle dies zu tun. Die Einrichtung sieht wie folgt aus:

# Status prüfen und swap-file bearbeiten
$ sudo service dphys-swapfile status
$ sudo nano /etc/dphys-swapfile
# standardmässig verwendet Raspbian 100MB für den Swap
CONF_SWAPSIZE=100
# Wenn ihr das ändern wollt, ändert die Zahl (Beispiel: 1024 = 1 GB), speichert die Änderung und startet den Service erneut
$ sudo /etc/init.d/dphys-swapfile restart
# überprüft ob es funktioniert hat mit folgendem Befehl
$ free
Image for post
Image for post
https://pi-hole.net/

Jetzt, da der Raspberry Pi eingerichtet ist, ist es an der Zeit Pi-hole zu installieren. Was mich vor allem überzeugt hat, ist die netzwerkseitige Lösung zum Blockieren von Werbung und Trackern. Im Klartext bedeutet das, dass Pi-hole Werbung für alle sich im eurem Netzwerk befindlichen Geräte blockieren kann. Das klingt sportlich — und funktioniert tatsächlich.

Pi-hole selbst wird seit 2015 von Jacob Salmela und diversen Contributoren entwickelt (Danke euch allen!). Der Source-Code ist auf GitHub einsehbar. Die Basis des Projektes bilden sowohl dnsmasq als auch der Web Server Lighttpd.

Technischer Hintergrund
Ihr fragt euch an der Stelle vielleicht, wie Pi-hole technisch funktioniert. Lasst uns ein Beispiel ansehen. Nehmen wir dazu eine kostenlose App mit In-App Werbung.

Bei der Nutzung der App nimmt sie eine Verbindung zu einem Advertising-Server mit der Domain “werbung.anbieter.com” auf. Das Ergebnis der Anfrage wird meistens in Form eines Banners in der App dargestellt.

Damit die App weiß, wohin dieser und andere Domainnamen verweisen, muss die Domain zunächst in eine IP-Adresse umgewandelt werden. Der Dienst, der diese Umwandlung vornimmt, heißt Domain Name System (DNS) und ist einer der wichtigsten Dienste im Internet. Bei jeder Eingabe einer URL, wird die Domain übersetzt. Warum das ganze? Ganz einfach, weil wir uns Namen leichter merken als IP-Adressen. Oder geben Sie 172.217.23.174 ein anstelle von google.com? In der Regel muss ein Nutzer sich nicht um die DNS-Servern kümmern, da der Router automatisch DNS-Server seinen Clients zuweist.

Und genau da kommt Pi-Hole ins Spiel. Pi-hole macht sich das DNS-Prinzip zunutze. Nutzen die Geräte im Netzwerk den DNS-Server Pi-hole, so wird die Adresse „werbung.anbieter.com” mit einer internen Blacklist des Pi-hole verglichen. Sollte die Adresse blockiert sein, so wird anstelle der Werbung ein kleines transparentes GIF vom Pi-hole Server ausgliefert. Die Anfrage erreicht so nie den Tracker oder Advertiser. Tada!

Installation auf dem Raspberry Pi

Ein Befehl auf der Konsole des Raspberry Pi’s genügt. Die Installation wird vollautomatisch durchgeführt:

$ curl -sSL https://install.pi-hole.net | bash

Nachdem alle notwendigen Pakete und Abhängigkeiten installiert sind, öffnet sich der Konfigurator. Ich habe mich für folgende Einstellungen entschieden:

  • Select Upstream DNS Provider: Cloudflare (1.1.1.1 und 1.0.0.1)
  • Select Lists: ich habe alle Ad- bzw. Tracking-Blocking-Listen ausgewählt
  • Select Protocols: IPv4 und IPv6 (sofern eure Geräte IPv6 unterstützen)
  • Do you want to use your current network settings as a static address: Hier habe ich die statische IP des Raspberry Pis und die Adresse des Routers angegeben.
  • Do you wish to install the web admin interface: Ja
  • Do you wish to install the web server (lighttpd): Ja
  • Do you want to log queries: Ja
  • Select a privacy mode for FTL: “Show everything”

Nachdem ihr eure Einstellungen gesetzt habt, wird euch die Adresse (Beispiel: http://192.168.0.212/admin) und das Login-Passwort für das Web-Interface angezeigt. Das Pi-Hole UI sieht dann so aus:

Image for post
Image for post
Pi-hole Admin UI

Pi-hole Auto-Update
Als letzten Schritt, richten wir das Auto-Update von Pi-hole ein:

$ sudo nano /etc/cron.d/pihole# tragt folgende Zeile am Ende der Datei ein, um Pi-hole
# jeden Sonntag um 2:30 zu aktualisieren
30 2 * * 7 root PATH="$PATH:/usr/local/bin/" pihole updatePihole
# startet crond einmal neu
$ sudo service cron restart

Wer weitere pihole Kommandos sehen will, kann sich hier ein Bild davon machen.

Jetzt stehen euch 3 Möglichkeiten zur Verfügung, um Werbung auf allen Geräten blockiert wird. Dazu müsst ihr den Pi euren Geräten als DNS-Server bekannt machen.

Entweder tragt ihr den (1) DNS Server manuell bei allen Geräten ein (zeitaufwendig), nutzt (2) Pi-hole als DHCP Server (kuketz erklärt wie) oder euer (3) Router nutzt den Pi-hole als neuen DNS-Server. Für letzteres habe ich mich entschieden.

Image for post
Image for post
Connect Box — https://www.upc.at/internet/wlan/

Gleich zu Beginn war ich mit einem Problem konfrontiert. Der bereitgestellte Router Connect Box meines Internet Anbieters T-Mobile (ehemals UPC) erlaubt keine DNS Änderungen.

So ist es beispielsweise nicht möglich die DNS von Cloudflare (1.1.1.1) oder Google (8.8.8.8) im gesamten Netzwerk mühelos zu nutzen...

Einen Umweg gibt es. Dafür muss jeder Client manuell eingerichtet werden (Beispiel für iPhone). Das kann bei einer Vielzahl von Geräten wie gesagt sehr schnell umständlich werden.

Der Kundensupport hat mich schlussendlich darauf hingewiesen, dass der Router auch im Modem (Bridge) Modus bedient werden kann. Nur so, kann hinter der Connect Box ein eigener Router (beispielsweise eine FRITZ!Box von AVM) verwendet werden.

Problem gelöst. Doch nun musste ich mich für einen passenden Router entscheiden! 😅

Teil 2— UniFi Netzwerk Setup

Nach einer Recherche mit wenig Tiefgang, habe ich zuerst mit dem Gedanken gespielt, eine FRITZ!Box zu kaufen.

Doch dann, bin ich über den Tweet von Oleg gestolpert:

Ich war neugierig. Denn schließlich riet er Kitze ab sich mit der vielversprechenden Home Wifi Solution von Google abzumühen. Also begann ich mit meiner Recherche erneut.

Nach dem ich einige vielversprechende Tutorials, Screenshots und Videos gefunden hatte, war die Entscheidung gefallen. Es wird ein Ubiquiti Setup.

Die Produkte von Ubiquiti versprechen Enterprise-Lösungen zu günstigen Consumer-Preisen. Die Controller Software zur Steuerung der Geräte und zur Verwaltung des Netzwerks selbst ist kostenlos und komplett ohne Lizenzgebühren. Eine Demo ist hier verfügbar: https://unifi.ubnt.com/.

Klingt doch schon mal sehr vielversprechend.

Image for post
Image for post
https://www.ui.com/unifi/unifi-ap/

Schnell war die Hardware-Liste aufgestellt. Mein neues Netzwerk-Setup wird folgende Hardware umfassen:

  • die aktuelle Connect Box von T-Mobile als Modem,
  • sowie einen Router und Security Gateway (Ubiquiti USG)
  • mit zwei Access Points (UniFi UAP-AC-LITE) für eine bessere WLAN Abdeckung.

Eine umfangreiche Zusammenfassung aller Produkte und deren Leistung habe ich übrigens von assmann24 gefunden. Danke an der Stelle! Tolle Arbeit.

Der Raspberry Pi ist bereits mit Pi-hole im Einsatz. Bedeutet es fehlt lediglich die UniFi Controller Software. Na dann los!

Die Installation der UniFi Controller Software gestaltete sich, trotz des umfassenden Step-by-Step Guides (mit Install- als auch Update-Script), als holprig.

Folgt am besten der Anleitung bis Schritt 9 (incl. 9.1 oder 9.2). Alternativ könnt ihr die von SmokingCrop bereit gestellten Scripts nutzen:

Im Artikel wird deren Einsatzmöglichkeit beschrieben. Sobald die Installation abgeschlossen ist, solltet ihr den erstellten Applikation Ordner von UniFi auf eurem Pi sehen.

$ sudo ls -lha /usr/lib/unifi

Soweit so gut. Sofern ihr nicht die gleichen Probleme wie ich hattet, solltet ihr den Controller nun in eurem Browser öffnen können. Die Adresse sieht wie folgt aus: https://192.168.0.212:8443 (mit eurer Pi IP).

Das hat bei mir nicht auf Anhieb geklappt. Der UniFi Controller startete nicht...

Troubleshooting

Es sah so aus, als ob ich das gleiche Java Problem hatte, wie einige andere Nutzer. Den auch sie berichteten von einem “CrashOnOutOfMemoryError”, der in den Logs vorkam.

$ sudo cat /usr/lib/unifi/logs/server.log

Die Lösungen von danielmconrad und Glenn R haben mir schlussendlich geholfen. Dazu war folgendes notwendig:

# siehe https://nttr.st/2v9B5Qp
$ sudo apt purge oracle-java8-jdk -y
# siehe https://nttr.st/2VJu30F (oder https://nttr.st/2P7E59r)
$ sudo apt-get install dirmngr -y
$ sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com EEA14886
$ echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/webupd8team-java.list
$ echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee -a /etc/apt/sources.list.d/webupd8team-java.list
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer -y

Jedoch hat das alleine nicht ausgereicht. Die Performance auf dem Raspberry Pi musste zusätzlich verbessert werden. Dieser Post und dieses Script waren sehr hilfreich in dem Punkt. Mit den folgenden Befehlen, wird die “maximum memory allocation” gesetzt. Beachtet, dass sie mindestens 1024 MB sein muss!

# zuerst ändern wir die memory allocation
$ cd /usr/lib/unifi/data
$ cat system.properties > /dev/null
$ echo unifi.xms=256 | sudo tee -a /usr/lib/unifi/data/system.properties
$ echo unifi.xmx=1024 | sudo tee -a /usr/lib/unifi/data/system.properties
# und anschließend geben wir dem unifi die notwendigen Rechte
# ansonsten seht ihr einen java.io.FileNotFoundException Fehler
$ sudo chown unifi:unifi /usr/lib/unifi/data/system.properties

Nachdem ich den Raspberry Pi neu gestartet hatte, schien alles zu funktionieren. Der Controller ist bereit!

Sollte das bei euch immer noch nicht der Fall sein, so helfen euch vielleicht diese Links weiter:

Image for post
Image for post
UniFi Setup Wizard (Quelle: https://nguvu.org/ubiquiti%20unifi/ubiquiti-unifi-setup/)

Die Einrichtung des Controllers erwies sich als sehr einfach. Im ersten Screen wählt ihr euer Land und die Zeitzone aus. Vergesst nicht “Enable Auto Backup” auszuwählen.

Image for post
Image for post
Schritt 2 — Configure devices (Quelle: https://nguvu.org/ubiquiti%20unifi/ubiquiti-unifi-setup/)

Im nächsten Schritt könnt ihr die Access Points und/oder den Controller konfigurieren. Ich habe in diesem Schritt kein Gerät ausgewählt. Denn schließlich muss ich zuerst die IP Adresse des Netzwerks (ist zu Beginn 192.168.1.x und meins ist 192.168.0.x) ändern. Das wird auch im Tutorial “UniFi — USG: How to Adopt a USG into an Existing Network” empfohlen.

Image for post
Image for post
Schritt 3 — Configure Wifi (Quelle: https://nguvu.org/ubiquiti%20unifi/ubiquiti-unifi-setup/)

Die Einrichtung des WiFis habe ich übersprungen. Auch das nehmen wir im Controller selber später vor.

Image for post
Image for post
Schritt 4 — Controller Access (Quelle: https://nguvu.org/ubiquiti%20unifi/ubiquiti-unifi-setup/)

Im abschließenden Schritt gebt ihr die Zugangsdaten für einen Admin und einen Super-Admin ein, bevor ihr nach dem Klick auf “Next” auf den Abschluss-Screen kommt. Bestätigt alle Einstellungen und schon ist die Einrichtung abgeschlossen!

Bis zu diesem Zeitpunkt habe ich noch kein Gerät angeschlossen. Der Grund dafür war das Netzwerk. Dann ist es jetzt an der Zeit das zu ändern.

Das heißt wir wählen im “Settings -> Networks” Menü das Netzwerk “LAN” aus. Das ist das Standard-Netz des LAN 1 Anschlusses des Routers. Ich habe Gateway/Subnet, DHCP Range und DHCP Name Server geändert. Das sah am Ende so aus:

Image for post
Image for post

Beachtet, dass der erste DNS-Server die IP meines Pi-hole Servers ist. Da müsst ihr die IP eures Pi-hole Servers einsetzen. Nun wird Pi-hole für alle Geräte im Netzwerk genutzt und ich habe wieder die gleichen Einstellungen (Bsp. 192.168.0.x IP Adressen) wie in meinem existierenden, alten Netzwerk.

Nachdem der Controller nun funktionstüchtig und das Netzwerk eingerichtet ist, ist es an der Zeit den USG Router anzuschließen.

Dazu muss der alte Router bereits im Modem(Bridge-)-Modus sein! Stellt also sicher, dass ihr diesen Schritt zuerst abgeschlossen habt. Für T-Mobile (ehemals UPC) Kunden in Österreich mit der weißen Connect-Box, wird das in der Anleitung beschrieben.

Sobald der alter Router aktualisiert wurde, schließt das Modem an den WAN Port des USG und ein weiteres Kabel vom LAN 1 Stecker des USG an einen Switch (Bsp.: einen von Netgear). Denn das restliche LAN Netz, wird nurmehr über den LAN 1 Anschluss versorgt. An den Strom anschließen und schon arbeitet der Router brav vor sich hin.

Image for post
Image for post
Das linke Kabel des USG ist am Modem angeschlossen, das rechte am Netgear Switch.

Soweit so gut. Nun stand ich vor einem weiteren Problem. Der USG kommt standardmässig mit der statischen IP 192.168.1.1 daher. Mein Netz besteht aber aus 192.168.0.x Adressen. Hieß also erst mal meinen Mac direkt mit dem Router verbinden (LAN 1), die IP des Macs statisch auf 192.168.1.2 (Gateway: 192.168.1.1, Subnetz: 255.255.255.0) setzten und dann per SSH auf den USG drauf um die Firmware updaten (zu den Firmware Download Links).

$ ssh ubnt:ubnt@192.168.1.1
$ upgrade LINK_TO_FIRMWARE_HERE

Eine Anleitung zum Firmware-Upgrade findet ihr hier. Ubiquti empfiehlt an der Stelle, den Standard Zugang des USG zu ändern! Denn der Username ubnt und das Passwort ubnt ist nicht gerade sicher.

Im nächsten Schritt ändern wir die IP Adresse:

$ ssh ubnt:ubnt@192.168.1.1
$ configure
$ set interfaces ethernet eth1 address 192.168.0.1/24
$ delete interfaces ethernet eth1 address 192.168.1.1/24
$ commit

Nachdem der USG neu gestartet wurde, kann er im UniFi Controller adoptiert werden. Dazu öffne ich den “Devices” Punkt im Sidebar Menü. Wähle den USG aus und drücke auf den “Adopt” Button. Das dauert etwas, anschließend wird er vom Controller verwaltet.

Mehr ist nicht notwendig. Denn der alte Router ist schon im Modem(Bridge)-Modus und per WAN mit dem USG verbunden. Der Zustand von vorhin ist wieder hergestellt. Alle LAN Geräte sind wieder mit dem Internet verbunden und nutzen Pi-hole! Zeit für mein Wifi Setup und die zwei Wireless Access Points.

Der Access Points UniFi Lite wird mittels Power-Over-Ethernet (PoE) betrieben. Dazu ist im Lieferumfang ein Adapter beigelegt. Ihr werdet 2 Ethernet Kabel benötigen. Eines für den Strom und eines um den Access Point an den Switch zu schließen. Das ist zumindest für den ersten, den zentralen AP notwendig. Der zweite Access Point kann mittels Wireless Uplink verbunden werden. So ist nur 1 Ethernet Kabel für den Strom notwendig.

Sobald der AP eingestalten und angeschlossen ist könnt ihr ihn wie den USG adoptieren. Aktualisiert bei dieser Gelegenheit auch seine Firmeware!

Nachdem der erste AP bereit steht, ist die Einrichtung eines WLANs der nächste Schritt. Dazu öffnet den Menüpunkt “Settings” in der Sidebar und dann “Wireless Networks”. Erstellt euer altes (oder neues) WLAN mit der gleichen SSID und Passwort. Weiters könnt ihr zusätzliche Wifi-Netzwerke, wie etwa für Gäste oder IoT Geräte, erstellen.

Image for post
Image for post

Bis hierher hat sich die Einrichtung des Controllers, der Geräte und der Netzwerke als sehr einfach erwiesen. Auch das Hinzufügen des zweiten Access Points war sehr einfach.

Einrichtung des APs

Ich habe ihn im ersten Schritt direkt an den Switch per Ethernet verbunden und im Controller adoptiert. Wie beim ersten AP, wurde auch seine Firmeware aktualisiert. Soweit so gut. Nun habe ich mir einen geeignete Platz ausgesucht, von dem aus er das WiFi erweitern soll. Nurmehr ein Ethernet Kabel für die Stromzufuhr ist notwendig.

Mesh-Netzwerk

Des öfteren habe ich mich über die Qualität und Reichweite meines WLANs beschwert. Abhilfe soll nun ein Mesh-Netzwerk der APs schaffen. t3n hat die Funktionsweise eines Mesh-Netzwerks im ersten Teil des Artikel “Mesh-WLAN-Router: Was ist das, welche gibt es?” ausführlich erklärt. Die Einrichtung sieht wie folgt aus.

Image for post
Image for post
Links: der Haupt-Access Point | Rechts: jeder weitere Access Point

Sobald beide APs aktiv sind, wird der Haupt-AP als Mesh-Netzwerk-Startknoten eingerichtet. Dazu wählen wir ihn im Menü aus und öffnen das Settings-Menü. Im Menü “Radios” werden beide “Allow meshing from other access points” aktiviert. In allen anderen APs wird unter “Settings->Wireless Uplinks” die Option “Allow meshing to another access point” eingeschaltet.

Das war’s. Das Mesh-Netzwerk ist nun eingerichtet und funktionstüchtig.

Wer mehr dazu wissen will, findet auf der Hilfe-Seite “UniFi — UAP: Configuring Wireless Uplink” Antworten.

Teil 3 — Das Ergebnis & Fazit

Es hat mich am Ende ein paar Stunden gekostet, das Internet für alle Geräte wiederherzustellen. Hauptsächlich die Einrichtung des USG Routers, hat mich Zeit gekostet. Sobald er lief, näherte ich mich sehr schnell dem Ende.

Einzig mein Sony Bravia Smart TV hat mich geärgert. Ich musste ihn mit Hilfe eines Soft Resets neustarten um ihn im neuen Pi-hole und UniFi Setup zum Laufen zu bringen. Alle anderen Geräte machten das selbstständig.

Nichtsdestotrotz bin ich mehr als zufrieden mit dem Ergebnis. Ich sehe eine Vielzahl von Statistiken von meinem Netzwerk. Wie etwa: welche App nutzt wie viel Volumen meines Internets, welche Clients sind die aktivsten, wie sieht das Ergebnis des Speedtests aus und vieles mehr. Und das beste — ohne Werbung und Tracker! Zusätzlich gibt es eine Smartphone-App (iOS und Android), mit derer die Statistiken angesehen werden können.

Image for post
Image for post
Am Ende sieht das Dashboard des Controllers bei mir so aus.

Es ist weiters sehr nützlich, das ich alle Einstellungen mit dem Unfi Controller mit wenigen Klicks nach belieben ändern kann. So habe ich in wenigen Minuten die alte Port Forwarding Rules eingerichtet und statische IPs vergeben.

Die Möglichkeit VLANs (beispielsweise für IoT Geräte aus China) zu erstellen habe ich noch gar nicht getestet. Mit diesen VLANs könnt ihr fremde Geräte in eigene abgeschottete Netzwerke packen. In den verlinkten Artikels am Ende des Texts, seht ihr wie das funktioniert und weitere Einsatzmöglichkeiten.

Ich bin mehr als nur zufrieden und vermisse die alten Zeiten mit dem eingeschränkten Standard-Router meines Internet Service Providers keines Wegs. Mehr Details, mehr Kontrolle und Einsatzmöglichkeiten. Das hat überzeugt.

Wie sieht euer Netzwerk-Setup aus? Nutzt ihr auch Produkte von Ubiquiti? Lasst es mich wissen. Ich freue mich auf jeglichen Austausch.

An der Stelle noch ein großer Dank an Lukas für seine Hilfe beim Schreiben des Artikels!

Appendix — Backups

Während ich den Artikel geschrieben habe, hat sich mein Raspberry Pi verabschiedet. Nach einem Hard Reboot (Stromzufuhr kappen und wieder einstecken), lies sich der Pi nicht mehr starten. Die Daten auf der SD Karte waren kaputt…

Ein guter Grund mein eigenes Tutorial selbst zu testen. Am Ende hat alles geklappt und mein Controller und Pi-hole laufen wieder. So habe ich einiges gelernt, wie ich das Pi-hole und UniFi Setup sichern muss.

Image for post
Image for post
In den Einstellungen findet ihr den Teleporter (Beispiel: http://192.168.0.212/admin/settings.php?tab=teleporter), welcher sowohl Exports als auch Imports von Backups bereitstellt.

Pi-hole lässt sich entweder im Browser im Admin Interface (Settings > Teleporter), oder in der Konsole mit dem folgenden Kommando sichern:

$ pihole -a teleporter

Dieses Kommando erstellt ein Backup all eurer Einstellungen in einer Datei mit einem Namen ähnlich wie: pi-hole-teleporter_2019–04–30_18–44–40.zip.

Ihr könnt das Backup der Dateien auch selbst erstellen. Eine Liste aller Dateien die Pi-hole anlegt und nutzt findet ihr hier.

Im UniFi Controller ist das Erstellen eines Backups einfach. Nach einem kurzen Blick auf die Hilfe-Seite “How to Create and Restore a Backup” bedarf es weniger Klicks zum Ziel: Settings > Maintenance > Backup und “Download Backup” auswählen. Ihr könnt hier auch bestimmen wie viele Tage euer Statistiken ihr ins Backup einbeziehen wollt.

Beim Wiederherstellen wählt ihr im Setup Wizard die vorher erstellte UniFi backup file (.unf) Datei aus und wartet ab. Nach ein paar Minuten sieht alles wie zuvor aus.

Image for post
Image for post
UniFi Controller — Auto Backup Einstellung

Um nicht zu vergessen hin und wieder Backup zu erstellen, schaut euch den Artikel “How to Configure Auto Backup” genauer an. Auf den Auto Backups baut auch meine Backup Strategy mit der Cloud auf. Mehr dazu jetzt.

Diese Backups auf der SD Karte werden nur bedingt helfen, wenn die Daten auf der SD Karte selbst kaputt geht. Aus diesem Grund habe ich mir im nächsten Schritt Tools wie Rclone und gdrive (Tutorial) angesehen, um die Dateien in der Cloud zu sichern. Natürlich kann auch ein USB angesteckt, oder die Dateien auf einem NAS im Netzwerk gesichert werden.

Da ich Google Drive nutze, habe ich mich für gdrive (Open Source, MIT) entschieden. Die Installation und der Upload sieht wie folgt aus:

Nun, da ich weiß der Upload funktioniert, richte ich mir noch einen passenden cronjob ein. Dieser soll sowohl Pi-hole als auch UniFi regelmässig sichern und den dafür erstellen ~/backups Ordner synchronisieren.

Zuerst müsst ihr euch darum kümmern, dass der Ordner auf Google Drive synchronisiert wird. Bei mir sah das so aus:

Im Anschluss habe ich mir folgendes backup.sh gebastelt. Es sammelt zuerst alle Dateien von Pi-hole und UniFi und synchronisiert sie dann mit Google Drive.

Nun fehlt lediglich der Eintrag im crontab und schon werden die Backups automatisch durchgeführt.

$ crontab -e# und dann folgende Zeile einfügen
15 2 * * * ~/backup.sh

Jetzt wird das Backup jeden Tag um 02:15 erstellt. Top!

Written by

I am a Software Engineer from Austria 🇦🇹. I write about JavaScript, TypeScript, ReactJS and NodeJS. 📧 Weekly NL Series: https://newsletter.natterstefan.me

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store