Monday at 09:38 PM4 days Hallo zusammen,sicherlich kennen einige von euch das Problem: Wenn man Docker-Container über das Netzwerk eines VPN-Containers (wie z. B. Gluetun via --net=container:gluetun) routet, verlieren die abhängigen Container die Verbindung oder stürzen ab, sobald der VPN-Container neu gestartet wird (z. B. durch ein Update oder manuellen Neustart).Damit man die abhängigen Container nicht jedes Mal manuell neu starten muss, habe ich ein kleines Bash-Script geschrieben. Es lauscht über docker events auf den Start des VPN-Containers, wartet kurz und startet alle verknüpften Container automatisch neu. Sollte sich durch ein Update die Container-ID/der Network-Namespace geändert haben und ein Start fehlschlagen, wird direkt eine Unraid-Systembenachrichtigung (Alert) ausgelöst.Das Script lässt sich bequem über das Plugin User Scripts einbinden (Einstellung: At Startup of Array oder als Hintergrundtask im Script).Viel Spass damit!#!/bin/bash# Name des VPN-ContainersVPN_CONTAINER="gluetun"# Abhängige Container hier eintragenDEPENDENT_CONTAINERS=("qbittorrent"# "sabnzbd")echo "$(date): Docker Watcher aktiv. Überwache Container: $VPN_CONTAINER"docker events --filter "container=$VPN_CONTAINER" --filter "event=start" | while read event; doecho "$(date): $VPN_CONTAINER gestartet. Warte 3 Sekunden auf VPN-Tunnel..."sleep 3for container in "${DEPENDENT_CONTAINERS[@]}"; doecho "$(date): Stoppe $container..."docker stop "$container" 2>/dev/nullecho "$(date): Starte $container neu..."# Ausgabe abfangen, um Fehler zu erkennenSTART_OUTPUT=$(docker start "$container" 2>&1)# Prüfen, ob der Namespace-Fehler (neue ID) aufgetreten istif [[ "$START_OUTPUT" == *"No such container"* ]] && [[ "$START_OUTPUT" == *"network namespace"* ]]; thenecho "$(date): FEHLER! Die ID von $VPN_CONTAINER hat sich geändert. $container startet nicht."# Sendet eine rote Warn-Benachrichtigung in das Unraid Web-Interface/usr/local/emhttp/webGui/scripts/notify -e "Docker Watcher" -s "Netzwerk-Fehler bei $container" -d "Der VPN Container hat eine neue ID bekommen (Update/Bearbeitung). Bitte bearbeite $container in Unraid und klicke auf FERTIG." -i "alert"elif [[ -n "$START_OUTPUT" && "$START_OUTPUT" != "$container" ]]; then # Andere unerwartete Fehler loggenecho "$(date): Unerwarteter Fehler: $START_OUTPUT"elseecho "$(date): $container erfolgreich neu gestartet."fidonedone Edited Monday at 09:45 PM4 days by guybrush2012
Tuesday at 04:26 AM4 days hier noch 2 andere scriptshttps://gist.github.com/gmantoha/ba6418f3d24dccb9f09264423acff9aehttps://github.com/DyonR/docker-passthroughvpn?tab=readme-ov-file#installing-the-auto-restart-script
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.