Als erstes erstellen wir dafür einen Schlüssel
ssh-keygen -t rsaFür meine Homelab verwende ich kein extra Passwort aus Bequemlichkeit, wäre aber sicher Sinnvoll bei Server wie vom Internet her erreichbar sind.
Der Key wird immer User Ordner unter .ssh erstellt mit eurem gewählten Namen. Eine ohne Endung und der andere mit .pub Endung.
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.41Wenn ihr mehrere SSH Keys habe müsst ihr für jeden Server eure Config noch anpassen. server1 und server2 kann beliebig gewählt werden.
nano ~/.ssh/config
Host server1
HostName SERVER1_IP_ODER_DNS
User user1
Port 22
IdentityFile ~/.ssh/id_rsa_server1
IdentitiesOnly yes
Host server2
HostName SERVER2_IP_ODER_DNS
User user2
Port 22
IdentityFile ~/.ssh/id_rsa_server2
IdentitiesOnly yesDanach müsst ihr noch die richtigen Rechte auf das File angewenden.
chmod 600 ~/.ssh/configHier ist nun das Script. Das Script updatet den Server und überprüft ob beide Versionen gleich sind. Nur wenn eure beide Instanzen von Adguard die gleiche Versionen haben werden die Datei kopiert und synchronisiert.
Unter USER und PASS müsst ihr eure Logindaten des Adguard eintragen. Unter INSTANCES werden die beiden IP der Instanzen eurer Adguard eingetragen.
#!/bin/bash
# update adguard
ssh server1 -t "/root/AdGuardHome/AdGuardHome --update"
set -euo pipefail
# Konfiguration
USER="admin"
PASS="passwort"
INSTANCES=(
"http://192.168.11.40"
"http://192.168.11.41"
)
REF=""
OK=true
echo "=== AdGuard Home Versionscheck (Basic Auth) ==="
for BASE in "${INSTANCES[@]}"; do
ver=$(curl -s -u "$USER:$PASS" "$BASE/control/status" | jq -r '.version // empty')
if [[ -z "$ver" ]]; then
echo "❌ $BASE → keine Version erhalten"
OK=false
else
echo "✅ $BASE → $ver"
[[ -z "$REF" ]] && REF="$ver"
[[ "$ver" != "$REF" ]] && OK=false
fi
done
echo "=============================================="
if $OK; then
echo "🎉 Alle Instanzen Version: $REF"
# copy config to new path
scp /mnt/user/appdata/adguard_home/config/AdGuardHome.yaml server1:/root/AdGuardHome/
# restart adguardhome
ssh server1 -t "/root/AdGuardHome/AdGuardHome -s restart"
exit 0
else
echo "⚠️ Unterschiede gefunden."
exit 1
fi
Meine erste Instanz ist ein Docker und das aktualisiere ich automatisch über das GUI deshalb fehlt es hier. Falls ihr 2 Mal Adguard Home über Github installiert habt könnt ihr die erste Instanz auch hinzufügen zum updaten.
Ihr müsst die Pfade natürlich euren Bedürfnisen angepassen aber der Rest sollte ohne Probleme funktionieren.