Instalação do Servidor Remoto Wake-on-LAN (Docker + Python)
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:
- Executa continuamente em um sistema Linux (recomendado: Raspberry Pi)
- Escuta por requisições HTTP na porta 5000
- Recebe um endereço MAC via HTTP POST
- Envia um pacote mágico Wake-on-LAN dentro da rede local
- Habilita o Wake-on-LAN remoto quando usado junto com uma VPN (ex. Tailscale)
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:
-
Raspberry Pi OS (ou outra distribuição Linux compatível) → Instalação do Raspberry Pi OS
-
Docker (necessário para executar o contêiner do servidor WOL) → Instalação do Docker no Linux
-
Tailscale (necessário para acesso remoto via VPN) → Instalação do Tailscale
O dispositivo host deve:
- Estar ligado o tempo todo
- Estar conectado à rede local
- Estar conectado à VPN (Tailscale)
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.