Installation du Serveur Wake-on-LAN Distant (Docker + Python)

Retour au Guide de Connexion

Ce guide explique comment installer et executer le serveur Wake-on-LAN (WOL) distant utilise par Turn Off PC.

Ce serveur agit comme un pont entre le VPN et le reseau local, permettant aux appareils situes en dehors du reseau domestique de reveiller des ordinateurs en utilisant le Wake-on-LAN.

Le service est implemente sous forme d'un serveur HTTP Python fonctionnant a l'interieur d'un conteneur Docker.


Ce que fait ce serveur

Le serveur WOL :


Prerequis

Avant d'installer le serveur Wake-on-LAN distant, assurez-vous que les composants suivants sont deja installes et fonctionnels sur l'appareil hote :

L'appareil hote doit :


Structure du projet resultante

Apres avoir complete ce guide, la structure des repertoires sera :

wol-server/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── wol_server.py

Etape 1 : Creer le repertoire du projet

Creez un repertoire pour heberger le serveur WOL et entrez-y :

mkdir -p ~/wol-server
cd ~/wol-server

Etape 2 : Creer le script du serveur Python

Creez le script Python principal :

nano wol_server.py

Collez le code suivant :

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)

Sauvegardez et quittez : Ctrl + O → Entree Ctrl + X


Etape 3 : Creer le fichier de dependances Python

Creez le fichier requirements.txt :

nano requirements.txt

Ajoutez la dependance requise :

Flask==2.3.3

Sauvegardez et quittez : Ctrl + O → Entree Ctrl + X


Etape 4 : Creer le Dockerfile

Creez le Dockerfile :

nano Dockerfile

Collez le contenu suivant :

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"]

Sauvegardez et quittez : Ctrl + O → Entree Ctrl + X


Etape 5 : Creer le fichier Docker Compose

L'utilisation de Docker Compose simplifie la gestion et garantit que le conteneur redemarre automatiquement.

Creez le fichier :

nano docker-compose.yml

Collez la configuration suivante :

version: "3"

services:
  wol-server:
    build: .
    network_mode: "host"        # Uses the host network (required for broadcast)
    cap_add:
      - NET_ADMIN               # Allows sending broadcast packets
    restart: unless-stopped

Sauvegardez et quittez : Ctrl + O → Entree Ctrl + X

Pourquoi network_mode: host est necessaire Le Wake-on-LAN utilise des paquets broadcast.

Le reseau bridge par defaut de Docker ne peut pas diffuser correctement les paquets broadcast. L'utilisation du reseau hote permet au conteneur de :

Acceder directement au reseau physique

Envoyer des paquets WOL vers le LAN local

Se comporter comme un service natif


Etape 6 : Construire et demarrer le conteneur

Depuis le repertoire wol-server, executez :

docker compose up -d

Docker va :

Construire l'image

Installer les dependances

Demarrer le serveur en arriere-plan


Etape 7 : Verifier que le serveur fonctionne

Verifiez les conteneurs en cours d'execution :

docker ps

Vous devriez voir une sortie similaire a :

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

Si le conteneur est en cours d'execution, le serveur est actif.

Comment le serveur est utilise Le serveur ecoute sur :

http://<SERVER_IP>:5000/wake Il attend une requete HTTP POST avec des donnees JSON :

{
  "mac": "AA:BB:CC:DD:EE:FF"
}

Etape 8 : Activer le WOL Distant dans Turn Off PC (application mobile)

Ouvrez Turn Off PC sur votre telephone

Allez modifier votre appareil

Activez le WOL Distant

Entrez l'IP du Raspberry Pi dans le champ IP du serveur externe

Sauvegardez la configuration

C'est tout. Le Wake-on-LAN distant est maintenant active.