Pi-Hole Alternative "AdGuard" in schlanker Alpine Linux VM

Hier zeige ich Euch wie Ihr unter Ubuntu den Adblocker „AdGuard“ in einer schlanken VM einrichtet.

Seit geraumer Zeit betreibe ich einen MiniPC als HTPC in meinem Wohnzimmer. Installiert ist dort die XFCE Variante von Ubuntu (Xubuntu). Da der Rechner sowieso 24h Stunden am Tag läuft bot sich hier natürlich die Installation eines Adblockers an. Normalerweise habe ich immer Pi-Hole benutzt. Allerdings habe ich das Problem, dass Port 53 (Standard für DNS Anfragen) vom systemeigenen Dienst „dnsmasq“ bereits verwendet wird. Alle Versuche ihm das irgendwie abzugewöhnen sind aber gescheitert. Ich bin sogar soweit gegangen, bei Systemstart diesen Task „abzuschiessen“ und direkt danach Pi-Hole zu starten. Das hat auch soweit funktioniert. Und ja, ich weiss, das ist alles andere als eine saubere Lösung. 🙂

Nun fungiert der MiniPC aber auch als Router. Hier ergab sich jetzt das Problem, dass das Internet-Sharing zwischendurch Aussetzer hatte. An dieser Stelle hat sich meine Quick&Dirty Lösung also direkt gerächt. Es wäre ja auch zu schön gewesen. 🙁 Also was tun? Weitere Stunden im WWW nach einer Lösung der dnsmaq-Problematik suchen und am Ende doch wieder ganz am Anfang zu stehen? Nein, dass muss auch anders gehen: In einer VM!

Auf der Suche nach einem geeignetem System welches sehr schlank und ressourcenschonend daherkommt bin ich auf „Alpine Linux“ gestossen. Also habe ich mir gedacht: „Prima, Pi-Hole dort installieren und los geht’s“. Leider wird Alpine Linux nicht offiziell von Pi-Hole unterstützt. Es fand sich aber schnell ein Script auf gitlab welches die Installation so patchte, dass Pi-Hole unter Alpine Linux nun doch läuft. Soweit funktioniert das auch. Allerdings stellte sich schnell heraus, dass es doch nicht so 100%ig läuft wie gedacht. Beim Versuch die Filterlisten zu aktualisieren kam immer der Fehler, dass die Filterlisten das falsche Format hätten. Das konnte ich aber definitiv ausschliessen, da ich diese Listen bereits zuvor schon in Verwendung hatte. Tja, war dann wohl auch nichts.

Aber da gibt es ja noch eine Pi-Hole Alternative: AdGuard Home. Dieser Blocker hat den Vorteil, dass er als sog. static Binary daherkommt. Sprich, er ist lediglich eine rund 35 MB große ausführbare Datei die keine weiteren Pakete oder gar einen extra Webserver (wie bei Pi-Hole) benötigt. Einfach entpacken und starten. Das klingt einfach. Und das ist es auch. Hier zeige ich Euch nun anhand von VirtualBox die Einrichtung einer solchen VM. Es sollte natürlich auch mit jeder anderer Virtualisierungssoftware funktionieren.

Was benötigt Ihr?

Als erstes benötigt Ihr VirtualBox:

sudo apt-get install virtualbox

Startet nun Virtualbox (oder direkt über Euren Launcher):

virtualbox &

Ihr solltet nun das VirtualBox Fenster vor Euch haben.

Klickt nun auf „Neu“

Definiert nun einen Namen (in meinem Fall Adguard) und wählt „Typ“ und „Version“ gemäß dem Bild aus.
Klickt nun auf „Weiter“.

Die vorgegebene RAM Größe von 1024 MB könnt Ihr so stehen lassen. Klickt auf „Weiter“.

Hier könnt Ihr ebenfalls alles so stehen lassen. Keine Sorge, die 8 GB Festplattengröße werden physisch nicht verwendet. Es ist lediglich eine Reservierte Größe. Die eigentliche Installation wird am Ende nur tats. rund 200-300 MB auf Eurer Festplatte belegen.

Hier könnt Ihr ebenfalls alles so lassen wie vorgegeben.

Wem das mit den 8 GB zu „unheimlich“ ist 🙂 , kann hier auf 1,00 GB herunterstellen. Klickt nun auf „Erzeugen“.

Nun ist die VM soweit angelegt.

Nun muss noch die Alpine Linux ISO eingebunden und das Netzwerk eingestellt werden. Für die ISO klickt oben im Hauptfenster auf „Ändern“ und klickt dann auf den Punkt „Massenspeicher“. Dort könnt Ihr dann ganz rechts auf das CD Symbol klicken und das ISO Image auswählen.

Damit die VM auch aus dem gesamten Netzwerk erreichbar ist stellt Ihr im entsprechenden Bereich den Anschluss auf „Netzwerkbrücke“ und gebt das Device an mit dem Euer Hostrechner mit dem Internetrouter verbunden ist. Es wird somit eine physische Netzwerkkarte simuliert die vom Internetrouter eine entsprechende IP erhält.

Das war es soweit. Nun könnte Ihr die VM starten. Nach ein paar Sekunden begrüßt Euch der Alpine Installer. Loggt Euch als „root“ ein. Password wird keines benötigt

local login: root

Nun starten wir das Setup

setup-alpine

Bei den 2 folgenden Eingaben gib jeweils

de

ein. Es folgt die Nachfrage nach dem Hostnamen. Man kann ihn theor. auf localhost belassen allerdings würde ich ihm einen eindeutigen Namen, zwecks eindeutiger Identifikation im Netzwert geben. Geben wir also in diesem Fall

adguard

ein. Die Fragen nach
– Netzwerkinterface
– Addresse (DHCP)
– Netzwerkkonfiguration
bestätigen wir einfach mit Return. Nun vergeben wir ein neues Passwort. Bei Timezone geben wir

CET

an. Die nächsten 2 Fragen bestätigen wir wieder einfach mit Return. Danach werden wir nach dem Downloadmirror gefragt. Wir brechen die Liste mit „Q“ ab und wählen „5“ aus. Die nächsten 2 Fragen bestätigen wir wieder mit Return. Wir werden dann gefragt ob wir dem root-User mit dem eben vergebenen Passwort zugang gewähren möchten. Dies bestätigen wir mit „yes“. Die Frage noch dem SSH Key bestätigen wir mit Return.

Wir werden jetzt nach der Festplatte gefragt. Dort geben wir „sda“ an. Als nächstes „sys“ angeben. Die Installation beginnt nun. Die Frage nach Löschung der Festplatte bestätigen wir mit „y“.

Die Installation dauert nur ein paar Sekunden. Wenn sie durchgelaufen ist schalten wir die VM aus. Dazu einfach das VM Fenster schließen und die Nachfrage mit „die virtuelle Maschine ausschalten“ bestätigen. Nun geht ihr bei der VM wieder auf „Ändern“ und werft das Alpine Linux Image aus.

Nun könnt Ihr die VM wieder starten.

Wenn Ihr alles richtig gemacht habt, begrüßt Euch dieser Bildschirm. Ihr könnt Euch jetzt mit dem Terminal auf der VM mit der dort angezeigten IP (hier 192.168.178.28) einloggen. Übrigens könnte Ihr hier schon erkennen wie schlank Alpine Linux vom nackten System her unterwegs ist. Wenn das nicht genügsam ist weiss ich auch nicht. 😀

adguard:~# free -m
              total        used        free      shared  buff/cache   available
Mem:            984          52         894           0          38         844
Swap:          1967           0        1967

Kommen wir nun zum Installieren von AdGuard Home. Dazu müsst Ihr Euch erst einmal das Archiv auf deren Githubseite herunterladen, entpacken und an den entsprechenden Ort (hier „/opt“) verschieben. Natürlich könnte Ihr auch einen anderen Ort verwenden. „opt“ erachte ich aber als ziemlich passend dafür. Aber hier gilt: Geschmackssache. 🙂

wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.21/AdGuardHome_linux_amd64.tar.gz
tar xf AdGuardHome_linux_amd64.tar.gz
mv AdGuardHome /opt
rm AdGuardHome_linux_amd64.tar.gz
cd /opt/AdGuardHome
chmod +x AdGuardHome

Nun möchten wir natürlich das AdGuard bei jedem Neustart automatisch geladen wird. Dies erreichen wir hiermit:

./AdGuardHome -s install

Jetzt musst Du noch die Ersteinrichtung vornehmen. Dazu gehst Du mit dem Browser auf folgende Adresse:
http://IP_DER_VM:3000
und folgst den dortigen Anweisungen. Und das war es auch schon. Du musst jetzt nur noch die IP Adresse der VM in Deinem Router hinterlegen damit die DNS Anfragen über AdGuard gerouted werden.