VM – Adguard

Erstellt: 2025-11-25

Als Basis verwende ich einen vollständigen Klon meines vorinstallierte Alpine-VMs. Folgende Ressourcen werden benötigt:

Disk Size: 3 GB | CPU-Cores: 1 | Ram: 512 MB


System auf aktuellem Stand bringen:

sudo apk update && sudo apk upgrade

Firewall installieren und einrichten:

sudo apk add ufw

Alle Ports schließen:

sudo ufw default deny incoming && sudo ufw default allow outgoing

Folgende Ports öffnen:

sudo ufw allow 80/tcp
sudo ufw allow 53
sudo ufw allow 3000/tcp
sudo ufw allow 22/tcp

Firewall aktivieren:

sudo ufw enable

Status ansehen:

sudo ufw status verbose

IPV6 deaktivieren:

sudo nano /etc/ufw/ufw.conf

Suche nach:

IPV6=yes

ändern zu:

IPV6=no

Strg+x, y, Enter

Ist die Zeile nicht vorhanden, dann am Ende IPV6=no hinzufügen.

sudo ufw disable
sudo ufw enable

Prüfen:

sudo ufw status verbose

Statische IP-Adresse vergeben:

Adapterbezeichnung herausfinden:

ip a

Meine Bezeichung ist eth0.

sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.10.230
netmask 255.255.255.0
gateway 192.168.10.1
dns-nameservers 1.1.1.1 8.8.8.8

Strg+x, y, Enter

sudo rc-service networking restart

Mit der neuen IP-Adresse im Terminal einloggen.


AdGuard Installation:

sudo apk update && sudo apk upgrade
sudo apk add wget tar

AdGuard Home herunterladen

cd /opt && \
sudo wget \
    https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_arm64.tar.gz && \
sudo tar -xvf \
    AdGuardHome_linux_arm64.tar.gz && \
cd AdGuardHome

Setup starten

sudo ./AdGuardHome -s install

Web‑Interface unter http://<VM-IP>:3000.


Wurde Adguard eingerichtet, ist es nun unter folgender Adresse erreichbar:

http://<VM-IP>

Nun die Firewall anpassen – Port 3000 wird nicht mehr benötigt:

sudo ufw delete allow 3000/tcp
sudo ufw status

OpenRC‑Service einrichten

sudo nano /etc/init.d/adguardhome
#!/sbin/openrc-run
description="AdGuard Home DNS Filter"
command="/opt/AdGuardHome/AdGuardHome"
command_args="-s run"
command_background=true
pidfile="/run/$RC_SVCNAME.pid"

depend() {
need net
provide dns
after firewall
}

Strg+x, y, Enter

sudo chmod +x /etc/init.d/adguardhome

Service aktivieren

sudo rc-update add adguardhome default
sudo rc-service adguardhome start

Die Meldung:

"/usr/libexec/rc/sh/gendepends.sh: line 12: network-online.target: not found" 

kann ignoriert werden. Das kommt daher, dass OpenRC versucht eine Abhängigkeit zu prüfen, die es nur bei systemd gibt. Alpine/OpenRC ignoriert das einfach, und der Dienst startet trotzdem erfolgreich.

Automatische Aktualisierung:

sudo nano /usr/local/bin/update-system-adguard.sh
#!/bin/sh
#
# Automatisches Update für Alpine Linux + AdGuard Home
# Läuft später per Cronjob (z. B. täglich um 01:00 Uhr)

LOGFILE="/var/log/system-adguard-update.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

echo "=== Update gestartet: $DATE ===" >> $LOGFILE

# 1. Alpine Systemupdate
echo "[INFO] Starte apk update/upgrade..." >> $LOGFILE
/sbin/apk update >> $LOGFILE 2>&1
/sbin/apk upgrade -U >> $LOGFILE 2>&1
echo "[INFO] Systemupdate abgeschlossen." >> $LOGFILE

# 2. AdGuard Home Update
echo "[INFO] Lade neueste AdGuard Home Version..." >> $LOGFILE
TMPDIR=$(mktemp -d)
wget -q https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_amd64.tar.gz -O $TMPDIR/AdGuardHome.tar.gz

if [ -s $TMPDIR/AdGuardHome.tar.gz ]; then
echo "[INFO] Entpacke neue Version..." >> $LOGFILE
tar -xzf $TMPDIR/AdGuardHome.tar.gz -C $TMPDIR
cp -r $TMPDIR/AdGuardHome/* /opt/AdGuardHome/
echo "[INFO] Neustart von AdGuard Home..." >> $LOGFILE
rc-service adguardhome restart >> $LOGFILE 2>&1
echo "[INFO] AdGuard Home erfolgreich aktualisiert." >> $LOGFILE
else
echo "[WARN] Konnte AdGuard Home nicht herunterladen." >> $LOGFILE
fi

rm -rf $TMPDIR

DATE_END=$(date '+%Y-%m-%d %H:%M:%S')
echo "=== Update beendet: $DATE_END ===" >> $LOGFILE
echo "" >> $LOGFILE

Strg+x, y, Enter

sudo chmod +x /usr/local/bin/update-system-adguard.sh
sudo EDITOR=nano crontab -e
0 1 * * * /usr/local/bin/update-system-adguard.sh

Strg+x, y, Enter

Um das Script manuell aufzurufen:

sudo /usr/local/bin/update-system-adguard.sh

Log aufrufen:

sudo tail -n 20 /var/log/system-adguard-update.log

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten