Zum Inhalt

UpSnap per Docker installieren: PCs und Heimserver sicher per Wake-on-LAN starten

Veröffentlicht am 24. Oktober 2026 · Geschätzte Lesezeit: 6 Minuten

UpSnap bietet ein lokales Web-Dashboard, mit dem du kompatible Rechner per Wake-on-LAN (WoL) einschaltest. Dafür sendet der Server ein sogenanntes Magic Packet an die Netzwerkkarte des Zielgeräts; plane für Docker, BIOS-/UEFI-Einstellungen und den Funktionstest etwa 25 bis 45 Minuten ein.[1][2] Die Compose-Angaben wurden am 24. Oktober 2026 mit der offiziellen Projektvorlage abgeglichen.[2]

Voraussetzungen

  • Ein Linux- oder NAS-System mit Docker Engine und Docker Compose
  • UpSnap-Server und Zielrechner im selben lokalen Netzwerksegment
  • Zielrechner mit Ethernet-Anschluss und unterstütztem Wake-on-LAN
  • Zugriff auf BIOS/UEFI und gegebenenfalls Netzwerktreiber des Zielrechners
  • MAC-Adresse des kabelgebundenen Netzwerkadapters

1. Wake-on-LAN am Zielgerät aktivieren

Aktiviere im BIOS/UEFI eine Option wie Wake on LAN, PCI-E Wake oder Power on by PCI-E. Die Bezeichnung unterscheidet sich je nach Hersteller. In Windows kann zusätzlich in den Eigenschaften des Ethernet-Adapters die Option zum Aufwecken durch ein Magic Packet erforderlich sein. Prüfe die Anleitung des Geräteherstellers; nicht jedes Gerät kann aus jedem ausgeschalteten Zustand geweckt werden.

Notiere die MAC-Adresse des Ethernet-Adapters, nicht die eines WLAN-Adapters. Unter Windows kannst du sie anzeigen lassen:

ipconfig /all

Suche im Abschnitt des Ethernet-Adapters nach Physische Adresse. Unter Linux zeigt dieser Befehl die Schnittstellen und deren MAC-Adressen:

ip link

Eine MAC-Adresse sieht beispielsweise wie AA:BB:CC:DD:EE:FF aus. Das ist nur ein Formatbeispiel, keine echte Geräteadresse.

2. Projektordner und Datenspeicher anlegen

Lege einen eigenen Projektordner an und wechsle hinein. Ersetze <projektpfad> durch einen Ordner, in dem du Docker-Projekte ablegst:

mkdir -p <projektpfad>/upsnap/data
cd <projektpfad>/upsnap

Das Unterverzeichnis data speichert die UpSnap-Datenbank dauerhaft auf dem Host. Der offizielle Compose-Vorschlag bindet dieses Verzeichnis im Container unter /app/pb_data ein.[1][2]

3. UID und GID des Benutzers ermitteln

UpSnap kann mit einem nicht privilegierten Benutzer laufen. Ermittle zuerst deine Benutzer- und Gruppenkennung; die Projektvorlage zeigt den optionalen Betrieb als numerischer Benutzerkennung.[2]

id

Notiere die Zahlen hinter uid= und gid=. Verwende im nächsten Schritt diese tatsächlichen Werte statt der Platzhalter. Auf NAS-Systemen können sie von 1000 abweichen. Die UpSnap-Vorlage kommentiert den optionalen Benutzer 1000:1000; die passenden Rechte des Datenordners müssen dazu passen.[2][3]

4. Compose-Datei erstellen

Erstelle im Projektordner eine Datei compose.yaml mit folgendem Inhalt:

services:
  upsnap:
    image: ghcr.io/seriousm4x/upsnap:5
    container_name: upsnap
    network_mode: host
    user: "<UID>:<GID>"
    cap_add:
      - NET_RAW
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    environment:
      TZ: "<zeitzone>"
      UPSNAP_HTTP_LISTEN: "<server-lan-ip>:8090"
      UPSNAP_SCAN_RANGE: "<lan-netz-cidr>"
      UPSNAP_LOG_LEVEL: "INFO"
    volumes:
      - ./data:/app/pb_data
    restart: unless-stopped

Ersetze <UID>:<GID> durch die Zahlen aus Schritt 3, <zeitzone> durch eine Zeitzone wie Europe/Berlin, <server-lan-ip> durch die feste oder reservierte LAN-Adresse des Docker-Hosts und <lan-netz-cidr> durch den tatsächlichen Netzbereich, etwa 192.168.1.0/24 nur wenn dies deinem Netz entspricht. Ersetze die Beispieladresse keinesfalls ungeprüft.

Die offizielle Vorlage empfiehlt Host-Netzwerkmodus für WoL und NET_RAW für privilegierte Ping-/Netzwerkerkennungsfunktionen; zugleich entfernt cap_drop: ALL nicht benötigte Linux-Capabilities.[2] no-new-privileges ergänzt eine weitere Begrenzung.[2] Host-Netzwerkmodus bedeutet, dass Docker keine getrennte Container-IP und keine ports:-Weiterleitung verwendet.[2] Binde den Webdienst daher an die LAN-IP des Hosts und gib den Port nicht über den Router ins Internet frei.

Nicht blind übernehmen

Wird UPSNAP_HTTP_LISTEN auf eine IP gebunden, die der Host nicht besitzt, kann der Dienst möglicherweise nicht starten. Wenn dein System die Bindung an die LAN-IP nicht unterstützt, verwende die zur Plattform passende sichere Bindung und beschränke den Zugriff mit Host-Firewall und Netzwerkregeln. Prüfe nach dem Start, auf welcher Adresse der Dienst lauscht.

5. Konfiguration prüfen und UpSnap starten

Lass Compose die Datei auf Syntax- und Konfigurationsfehler prüfen:

docker compose config --quiet

Bei erfolgreicher Prüfung startet der Dienst mit diesem Befehl:

docker compose up -d

Das Image wird mit dem offiziellen Major-Tag 5 angegeben, wie in der Projektvorlage. Dieses Tag kann bei einem späteren Pull auf eine neuere Version zeigen; prüfe vor Updates die Release-Hinweise und sichere die Daten.[2][3]

6. Erreichbarkeit und Logs kontrollieren

Prüfe, ob der Container läuft:

docker compose ps

Zeige die letzten Protokollzeilen an:

docker compose logs --tail=100 upsnap

Rufe anschließend im Browser http://<server-lan-ip>:8090/ auf. Ersetze <server-lan-ip> durch die LAN-Adresse aus Schritt 4. Lege beim ersten Zugriff ein Administratorkonto an, verwende ein einzigartiges starkes Passwort und richte keinen öffentlichen Internetzugriff ein. Das Projekt dokumentiert ein Web-Dashboard und geschützte Benutzerverwaltung.[1]

7. Zielgerät in UpSnap eintragen

Melde dich an und trage ein Gerät manuell ein. Verwende die MAC-Adresse des kabelgebundenen Adapters aus Schritt 1. Wenn du eine IP-Adresse, einen Anzeigenamen oder eine Scan-Option einträgst, müssen diese zu deinem lokalen Netz passen. Der Netzwerkscan ist optional; du kannst die Geräteinformationen auch manuell erfassen.[1]

Teste zunächst einen Rechner, auf den du direkt zugreifen kannst. Führe keine Fernabschaltung oder beliebigen benutzerdefinierten Kommandos ein, solange du deren Wirkung nicht genau geprüft hast.

8. Backup vor Änderungen erstellen

Stoppe den Dienst kurz, damit die Datenbank während des Archivierens nicht beschrieben wird, und sichere den Datenordner:

docker compose stop
tar -czf "upsnap-data-backup-$(date +%F).tar.gz" data
docker compose start

Der führende Abstand vor tar ist in Bash üblicherweise unschädlich, kann aber verwirren; falls dein Terminal ihn nicht akzeptiert, führe die Zeile ohne den Abstand aus. Die Sicherung enthält Konten und Geräteeinträge und ist entsprechend vertraulich aufzubewahren. Prüfe, ob das Archiv erstellt wurde:

ls -lh upsnap-data-backup-*.tar.gz

9. Risiken und Sicherheitsgrenzen beachten

Wake-on-LAN funktioniert üblicherweise nur, solange die Netzwerkkarte im betreffenden Schlaf- oder Ausschaltzustand noch mit Strom versorgt wird. Kabelgebundenes Ethernet ist die belastbare Standardvoraussetzung; WoL über WLAN hängt von speziellen Gerätefunktionen ab und darf nicht vorausgesetzt werden.[3] Ein Magic Packet aus einem anderen Subnetz wird nicht automatisch über Router hinweg weitergeleitet.[3]

Host-Netzwerkmodus lässt den Container das Netzwerk des Hosts verwenden. Beschränke den Zugriff auf das vertrauenswürdige Heimnetz, nutze eine Host-Firewall und richte keine Router-Portweiterleitung auf den UpSnap-Port ein.[2] Ein Reverse Proxy mit Anmeldung und HTTPS ersetzt keine sorgfältige Zugriffsbeschränkung. Mounts des Host-D-Bus für .local-Namensauflösung sind in der Grundkonfiguration absichtlich nicht aktiviert; die UpSnap-Vorlage weist auf mögliche Sicherheitsfolgen hin.[2]

10. Typische Fehler beheben

  • Der Rechner wacht nicht auf: BIOS-/UEFI-Option, Betriebssystem-Treiber, Stromversorgung der Netzwerkkarte und Ethernet-MAC-Adresse prüfen. Manche Geräte benötigen einen anderen Energiezustand.
  • UpSnap ist nicht erreichbar: LAN-IP, Port 8090, Firewall und Logs prüfen. Sicherstellen, dass die angegebene Bind-IP tatsächlich auf dem Docker-Host eingerichtet ist.
  • permission denied im Datenordner: UID/GID aus Schritt 3 mit dem Eigentümer des Ordners vergleichen. Passe die Rechte gezielt an; verwende nicht pauschal chmod 777.
  • Geräte werden beim Scan nicht gefunden: CIDR-Platzhalter mit dem tatsächlichen LAN-Netz vergleichen. Netzwerksegmentierung und lokale Firewall können Scans verhindern. Ein manueller Geräteeintrag kann ausreichen.
  • Container startet nicht: docker compose logs --tail=100 upsnap lesen und insbesondere Bind-Adresse, UID/GID und YAML-Einrückung prüfen.
  • Wake klappt nur gelegentlich: Energiesparmodus, Schnellstart, ErP-Einstellung und Treiberoptionen des Zielgeräts einzeln testen.

11. Rückweg oder Deinstallation

Um UpSnap zu stoppen und den Container zu entfernen, ohne die gespeicherten Daten zu löschen, führe im Projektordner aus:

docker compose down

Der Ordner data und das Backup-Archiv bleiben dabei erhalten. Um UpSnap erneut zu starten, wechsle in denselben Projektordner und führe docker compose up -d aus. Lösche den Datenordner nur, wenn du sicher bist, dass du Konten und Geräteeinträge nicht mehr benötigst.

Fertig

Die Einrichtung ist geprüft, wenn docker compose ps den Container als laufend zeigt, die Weboberfläche nur im vorgesehenen LAN erreichbar ist, ein Testgerät gespeichert bleibt und ein kontrollierter WoL-Test den Rechner tatsächlich startet. Starte danach UpSnap einmal neu und kontrolliere, dass Konto und Gerät weiterhin vorhanden sind.

Sources

[1] https://github.com/seriousm4x/UpSnap/blob/master/README.md — UpSnap README [2] https://raw.githubusercontent.com/seriousm4x/UpSnap/HEAD/docker-compose.yml — UpSnap official Compose file [3] https://tailscale.com/blog/wake-on-lan-tailscale-upsnap — Tailscale: Wake-on-LAN with UpSnap