p0thi

Members
  • Posts

    2
  • Joined

  • Last visited

Everything posted by p0thi

  1. Hi zusammen, Nochmal ich Auch für das Einstellen der Rewrites vom AdGuard habe ich ein Script geschrieben, das die Rewrites erstellt und bei jeder Ausführung die aktuelle Liste einspielt. Dazu wird das offizielle GitHub Repository verwendet, das auch standardmäßig von LanCache genutzt wird: uklans/cache-domains Zusammengefasst klonen wir das GitHub Repo auf unseren LXC Container, erstellen das Script und führen es aus. Das Script holt sich die aktuelle Liste, trägt die Cache Domains zusammen und fügt sie in die AdGuardHome config YAML Datei ein. Hier nun die Schritt für Schritt Anleitung, was man machen muss: Zuerst müssen wir yt im Container installieren, damit das Script mit yaml Strukturen arbeiten kann. Dazu nehmen wir nicht den Weg über apt-get, sondern installieren es direkt von GitHub. Als erstes müssen wir yq herunterladen: wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 Als nächstes müssen wir die eben heruntergeladene Datei ausführbar machen: chmod a+x /usr/local/bin/yq Nun wechseln wir in das Verzeichnis des root Users. Dorthin werden wir das cache-domains GitHub Repo klonen. Man kann auch einen beliebigen anderen Ort dafür wählen, jedoch sind die Befehle im weiteren Verlauf an diesen Ort angepasst: 1. Verzeichnis wechseln: cd /root/ 2. GitHub Repo klonen git clone https://github.com/uklans/cache-domains.git ACHTUNG: Dabei kann es vorkommen, dass man gefragt wird, ob man dem Fingerabdruck von GitHub vertraut und diesen speichern will. Das muss man mit "yes" bestätigen. Danach den "git clone ..." Befehl erneut ausführen. Jetzt wechseln wir in das neu geklonte Verzeichnis cd /root/cache-domains Jetzt muss man sich die folgende Datei herunterladen: create-rewrites.sh Nun erstellen wir eine Datei mit dem Namen create-rewrites.sh nano /root/cache-domains/create-rewrites.sh Jetzt öffnen man die heruntergeladene create-rewrites.sh, kopiert den kompletten Inhalt in die Zwischenablage, fügt dann den Inhalt der Zwischenablage im Terminal in Nano ein und drückt wieder "STRG + S" (zum speichern) und "STRG + X" (zum schließen) Jetzt müssen wir auch dieses Script noch ausführbar machen chmod +x /root/cache-domains/create-rewrites.sh Jetzt ist das setup schon fertig und das Script kann verwendet werden: cd /root/cache-domains/ && ./create-rewrites.sh <lancache_ip> /docker/adguard_home/c onfig/AdGuardHome.yaml WICHTIG: auch hier <lancache_ip> durch die IP des LXC Containers ersetzen. Jetzt kann man auch dafür einen Cronjob anlegen, der automatisch regelmäßig die rewrite Liste mit den aktuellen cache domains aktualisiert: Crontab öffnen: crontab -e Das Folgende ganz zum Schluss einfügen. WICHTIG: Auch hier wieder <lancache_ip> durch die IP eures LXC Containers ersetzen: 0 4 */10 * * cd /root/cache-domains/ && ./create-rewrites.sh <ip_address> /docker/adguard_home/config/AdGuardHome.yaml > /var/log/create-rewrites.log Nun ist alles fertig eingerichtet und die Rewrites des AdGuardHome aktualisiert sich automatisch. Anzumerken ist hierbei, dass Rewrites, die über das AdGuard Web-Interface hinzugefügt wurden, dadurch jedes mal überschrieben werden. Wer das nicht will sollte den Cronjob nicht anlegen und das Script nicht ausführen. Tip von mir: Ich ersetze <ip_address> durch folgendes: $(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) Dadurch wird automatisch die im lokalen Netzwerk sichtbare IP des Netzwerkadapters "eth0" verwendet, ohne, dass ich sie hier fix hinschreiben muss (eth0 sollte für dieses Setup immer der richtige Netzwerkadapter sein). Mein Cronjob sieht dann folgendermaßen aus: 0 4 */10 * * cd /root/cache-domains/ && ./create-rewrites.sh $(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) /docker/adguard_home/config/AdGuardHome.yaml > /var/log/create-rewrites.log Das ist aber nicht notwendig. Es funktioniert genauso gut, wenn man die IP einfach hinschreibt. Ich hoffe ich kann ein paar Menschen damit Helfen
  2. Hey @ich777, zu allererst: Tolle Arbeit mit der Anleitung. Hat bei mir alles auf Anhieb geklappt und funktioniert einwandfrei. 👍 💜 Allerdings ist mir aufgefallen, dass in der update-roothints.sh die Versionen der alten und der neuen root hints verglichen werden. Aktuell (zumindest ist es bei mir so) ist da jedoch kein String "related version of root zone" mehr drin. Darum updated dein Script bei mir nicht. Ich habe das Script bei mir jetzt angepasst, so dass es den hash wert der alten und neuen Datei vergleicht und die alte updated, wenn diese nicht gleich sind. Das sollte die root hints updaten, wenn es eine neue Version gibt, egal wie der Inhalt aussieht. Das script darf gerne in die Anleitung aufgenommen werden, falls andere auch selbe Problem wie ich haben. VG p0thi #!/bin/bash # Set Variables CONTAINER_NAME="Unbound" UB_FOLDER="/docker/unbound" FILE_NAME="root.hints" ROOT_HINTS_URL="https://www.internic.net/domain/named.root" # Calculate the hash for the current file CUR_HASH=$(sha256sum ${UB_FOLDER}/${FILE_NAME} | awk '{print $1}') # Download new root.hints cd ${UB_FOLDER} wget -q -O ${UB_FOLDER}/new.${FILE_NAME##*.} "${ROOT_HINTS_URL}" # Check if the download succeeded if [ $? -ne 0 ]; then echo "---Failed to download new file. Exiting.---" exit 1 fi # Calculate the hash for the new file LAT_HASH=$(sha256sum ${UB_FOLDER}/new.${FILE_NAME##*.} | awk '{print $1}') # Compare the hashes if [ -z "${LAT_HASH}" ]; then echo "---Can't calculate hash for new file. Exiting.---" exit 1 elif [ "${CUR_HASH}" != "${LAT_HASH}" ]; then echo "---Update found for ${FILE_NAME}, restarting container: ${CONTAINER_NAME}!---" cp ${UB_FOLDER}/new.${FILE_NAME##*.} ${UB_FOLDER}/${FILE_NAME} docker restart ${CONTAINER_NAME} else echo "---Nothing to do, ${FILE_NAME} is up-to-date!---" rm ${UB_FOLDER}/new.${FILE_NAME##*.} fi