Remote Wake-on-LAN Server-Installation (Docker + Python)
Diese Anleitung erklaert, wie Sie den Remote Wake-on-LAN (WOL) Server installieren und ausfuehren, der von Turn Off PC verwendet wird.
Dieser Server fungiert als Bruecke zwischen dem VPN und dem lokalen Netzwerk und ermoeglicht es Geraeten ausserhalb des Heimnetzwerks, Computer per Wake-on-LAN aufzuwecken.
Der Dienst ist als Python HTTP-Server implementiert, der in einem Docker-Container laeuft.
Was dieser Server tut
Der WOL-Server:
- Laeuft kontinuierlich auf einem Linux-System (empfohlen: Raspberry Pi)
- Wartet auf HTTP-Anfragen auf Port 5000
- Empfaengt eine MAC-Adresse ueber HTTP POST
- Sendet ein Wake-on-LAN Magic Packet innerhalb des lokalen Netzwerks
- Ermoeglicht Remote Wake-on-LAN in Kombination mit einem VPN (z.B. Tailscale)
Voraussetzungen
Stellen Sie vor der Installation des Remote Wake-on-LAN Servers sicher, dass folgende Komponenten bereits auf dem Host-Geraet installiert und funktionsfaehig sind:
-
Raspberry Pi OS (oder eine andere unterstuetzte Linux-Distribution) -> Raspberry Pi OS Installation
-
Docker (erforderlich zum Ausfuehren des WOL-Server-Containers) -> Docker Installation unter Linux
-
Tailscale (erforderlich fuer den Fernzugriff ueber VPN) -> Tailscale Installation
Das Host-Geraet muss:
- Jederzeit eingeschaltet sein
- Mit dem lokalen Netzwerk verbunden sein
- Mit dem VPN (Tailscale) verbunden sein
Resultierende Projektstruktur
Nach Abschluss dieser Anleitung wird die Verzeichnisstruktur wie folgt aussehen:
wol-server/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── wol_server.py
Schritt 1: Das Projektverzeichnis erstellen
Erstellen Sie ein Verzeichnis fuer den WOL-Server und wechseln Sie hinein:
mkdir -p ~/wol-server
cd ~/wol-server
Schritt 2: Das Python-Server-Skript erstellen
Erstellen Sie das Haupt-Python-Skript:
nano wol_server.py
Fuegen Sie folgenden Code ein:
from flask import Flask, request
import os
app = Flask(__name__)
@app.route("/wake", methods=["POST"])
def wake():
data = request.get_json()
mac = data.get("mac")
if not mac:
return "No MAC address provided", 400
os.system(f"wakeonlan {mac}")
return f"Magic packet sent to {mac}", 200
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
Speichern und beenden: Ctrl + O -> Enter Ctrl + X
Schritt 3: Die Python-Abhaengigkeitsdatei erstellen
Erstellen Sie die requirements.txt-Datei:
nano requirements.txt
Fuegen Sie die erforderliche Abhaengigkeit hinzu:
Flask==2.3.3
Speichern und beenden: Ctrl + O -> Enter Ctrl + X
Schritt 4: Das Dockerfile erstellen
Erstellen Sie das Dockerfile:
nano Dockerfile
Fuegen Sie folgenden Inhalt ein:
FROM python:3.11-slim
RUN apt-get update && \
apt-get install -y wakeonlan && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
COPY wol_server.py .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
CMD ["python3", "wol_server.py"]
Speichern und beenden: Ctrl + O -> Enter Ctrl + X
Schritt 5: Die Docker Compose-Datei erstellen
Die Verwendung von Docker Compose vereinfacht die Verwaltung und stellt sicher, dass der Container automatisch neu gestartet wird.
Erstellen Sie die Datei:
nano docker-compose.yml
Fuegen Sie folgende Konfiguration ein:
version: "3"
services:
wol-server:
build: .
network_mode: "host" # Verwendet das Host-Netzwerk (erforderlich fuer Broadcast)
cap_add:
- NET_ADMIN # Erlaubt das Senden von Broadcast-Paketen
restart: unless-stopped
Speichern und beenden: Ctrl + O -> Enter Ctrl + X
Warum network_mode: host erforderlich ist Wake-on-LAN verwendet Broadcast-Pakete.
Das Standard-Bridge-Netzwerk von Docker kann Broadcast-Pakete nicht korrekt senden. Die Verwendung von Host-Networking ermoeglicht es dem Container:
Direkt auf das physische Netzwerk zuzugreifen
WOL-Pakete an das lokale LAN zu senden
Sich wie ein nativer Dienst zu verhalten
Schritt 6: Den Container erstellen und starten
Fuehren Sie aus dem wol-server-Verzeichnis heraus aus:
docker compose up -d
Docker wird:
Das Image erstellen
Abhaengigkeiten installieren
Den Server im Hintergrund starten
Schritt 7: Ueberpruefen, ob der Server laeuft
Laufende Container ueberpruefen:
docker ps
Sie sollten eine Ausgabe aehnlich der folgenden sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4XXXXXX31ba4 wol-server-wol-server "python3 wol_server.py" 4 minutes ago Up 4 minutes wol-server-wol-server-1
Wenn der Container laeuft, ist der Server aktiv.
Wie der Server verwendet wird Der Server hoert auf:
http://<SERVER_IP>:5000/wake Er erwartet eine HTTP POST-Anfrage mit JSON-Daten:
{
"mac": "AA:BB:CC:DD:EE:FF"
}
Schritt 8: Remote WOL in Turn Off PC aktivieren (Mobile-App)
Oeffnen Sie Turn Off PC auf Ihrem Telefon
Gehen Sie zur Bearbeitung Ihres Geraets
Aktivieren Sie Remote WOL
Geben Sie die Raspberry Pi IP im Feld fuer die externe Server-IP ein
Speichern Sie die Konfiguration
Das war's. Remote Wake-on-LAN ist jetzt aktiviert.