Instalação do Servidor Remoto Wake-on-LAN (Docker + Python)

Voltar ao Guia de Conexão

Este guia explica como instalar e executar o servidor remoto Wake-on-LAN (WOL) usado pelo Turn Off PC.

Este servidor atua como uma ponte entre a VPN e a rede local, permitindo que dispositivos fora da rede doméstica liguem computadores usando Wake-on-LAN.

O serviço é implementado como um servidor HTTP Python executando dentro de um contêiner Docker.


O que este servidor faz

O servidor WOL:


Pré-requisitos

Antes de instalar o servidor remoto Wake-on-LAN, certifique-se de que os seguintes componentes já estão instalados e funcionando no dispositivo host:

O dispositivo host deve:


Estrutura do projeto resultante

Após completar este guia, a estrutura de diretórios será:

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

Passo 1: Criar o diretório do projeto

Crie um diretório para hospedar o servidor WOL e entre nele:

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

Passo 2: Criar o script do servidor Python

Crie o script principal Python:

nano wol_server.py

Cole o seguinte código:

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)

Salve e saia: Ctrl + O → Enter Ctrl + X


Passo 3: Criar o arquivo de dependências Python

Crie o arquivo requirements.txt:

nano requirements.txt

Adicione a dependência necessária:

Flask==2.3.3

Salve e saia: Ctrl + O → Enter Ctrl + X


Passo 4: Criar o Dockerfile

Crie o Dockerfile:

nano Dockerfile

Cole o seguinte conteúdo:

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

Salve e saia: Ctrl + O → Enter Ctrl + X


Passo 5: Criar o arquivo Docker Compose

Usar Docker Compose simplifica o gerenciamento e garante que o contêiner reinicie automaticamente.

Crie o arquivo:

nano docker-compose.yml

Cole a seguinte configuração:

version: "3"

services:
  wol-server:
    build: .
    network_mode: "host"        # Usa a rede do host (necessário para broadcast)
    cap_add:
      - NET_ADMIN               # Permite enviar pacotes broadcast
    restart: unless-stopped

Salve e saia: Ctrl + O → Enter Ctrl + X

Por que network_mode: host é necessário Wake-on-LAN usa pacotes broadcast.

A rede bridge padrão do Docker não consegue enviar pacotes broadcast corretamente. Usar rede do host permite que o contêiner:

Acesse a rede física diretamente

Envie pacotes WOL para a LAN local

Se comporte como um serviço nativo


Passo 6: Construir e iniciar o contêiner

De dentro do diretório wol-server, execute:

docker compose up -d

O Docker irá:

Construir a imagem

Instalar as dependências

Iniciar o servidor em segundo plano


Passo 7: Verificar se o servidor está em execução

Verifique os contêineres em execução:

docker ps

Você deve ver uma saída similar 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

Se o contêiner estiver em execução, o servidor está ativo.

Como o servidor é usado O servidor escuta em:

http://<SERVER_IP>:5000/wake Ele espera uma requisição HTTP POST com dados JSON:

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

Passo 8: Habilitar WOL Remoto no Turn Off PC (aplicativo móvel)

Abra o Turn Off PC no seu celular

Vá para editar seu dispositivo

Habilite WOL Remoto

Insira o IP do raspberry no campo IP do servidor externo

Salve a configuração

Isso é tudo. O Wake-on-LAN remoto agora está habilitado.