Uzaktan Wake-on-LAN Sunucusu Kurulumu (Docker + Python)
Bu kılavuz, Turn Off PC tarafından kullanılan uzaktan Wake-on-LAN (WOL) sunucusunun nasıl kurulacağını ve çalıştırılacağını açıklar.
Bu sunucu, VPN ile yerel ağ arasında köprü görevi görerek ev ağı dışındaki cihazların Wake-on-LAN kullanarak bilgisayarları uyandırmasına olanak tanır.
Servis, bir Docker konteyneri içinde çalışan bir Python HTTP sunucusu olarak uygulanmaktadır.
Bu sunucunun yaptıkları
WOL sunucusu:
- Bir Linux sisteminde (önerilir: Raspberry Pi) sürekli çalışır
- 5000 numaralı portta HTTP isteklerini dinler
- HTTP POST aracılığıyla bir MAC adresi alır
- Yerel ağ içinde bir Wake-on-LAN sihirli paketi gönderir
- Bir VPN ile birlikte kullanıldığında (örn. Tailscale) uzaktan Wake-on-LAN'ı etkinleştirir
Ön Koşullar
Uzaktan Wake-on-LAN sunucusunu kurmadan önce, ana cihazdaki aşağıdaki bileşenlerin zaten kurulup çalışır durumda olduğundan emin olun:
-
Raspberry Pi OS (veya desteklenen başka bir Linux dağıtımı) → Raspberry Pi OS Kurulumu
-
Docker (WOL sunucu konteynerini çalıştırmak için gerekli) → Linux'a Docker Kurulumu
-
Tailscale (VPN üzerinden uzaktan erişim için gerekli) → Tailscale Kurulumu
Ana cihaz şu özelliklere sahip olmalıdır:
- Her zaman açık
- Yerel ağa bağlı
- VPN'e (Tailscale) bağlı
Oluşan proje yapısı
Bu kılavuzu tamamladıktan sonra dizin yapısı şöyle olacak:
wol-server/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── wol_server.py
Adım 1: Proje dizinini oluşturun
WOL sunucusunu barındıracak bir dizin oluşturun ve içine girin:
mkdir -p ~/wol-server
cd ~/wol-server
Adım 2: Python sunucu betiğini oluşturun
Ana Python betiğini oluşturun:
nano wol_server.py
Aşağıdaki kodu yapıştırın:
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)
Kaydedin ve çıkın: Ctrl + O → Enter Ctrl + X
Adım 3: Python bağımlılıkları dosyasını oluşturun
requirements.txt dosyasını oluşturun:
nano requirements.txt
Gerekli bağımlılığı ekleyin:
Flask==2.3.3
Kaydedin ve çıkın: Ctrl + O → Enter Ctrl + X
Adım 4: Dockerfile oluşturun
Dockerfile'ı oluşturun:
nano Dockerfile
Aşağıdaki içeriği yapıştırın:
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"]
Kaydedin ve çıkın: Ctrl + O → Enter Ctrl + X
Adım 5: Docker Compose dosyasını oluşturun
Docker Compose kullanmak, yönetimi kolaylaştırır ve konteynerin otomatik olarak yeniden başlatılmasını sağlar.
Dosyayı oluşturun:
nano docker-compose.yml
Aşağıdaki yapılandırmayı yapıştırın:
version: "3"
services:
wol-server:
build: .
network_mode: "host" # Ana bilgisayar ağını kullanır (yayın için gerekli)
cap_add:
- NET_ADMIN # Yayın paketleri göndermeye izin verir
restart: unless-stopped
Kaydedin ve çıkın: Ctrl + O → Enter Ctrl + X
network_mode: host neden gereklidir Wake-on-LAN, yayın paketleri kullanır.
Docker'ın varsayılan köprü ağı, yayın paketlerini doğru şekilde gönderemez. Ana bilgisayar ağını kullanmak, konteynerin şunları yapmasına olanak tanır:
Fiziksel ağa doğrudan erişim
WOL paketlerini yerel LAN'a gönderme
Yerel bir servis gibi davranma
Adım 6: Konteyneri oluşturun ve başlatın
wol-server dizininin içinden şunu çalıştırın:
docker compose up -d
Docker şunları yapacak:
İmajı oluşturma
Bağımlılıkları yükleme
Sunucuyu arka planda başlatma
Adım 7: Sunucunun çalıştığını doğrulayın
Çalışan konteynerleri kontrol edin:
docker ps
Şuna benzer bir çıktı görmelisiniz:
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
Konteyner çalışıyorsa sunucu etkindir.
Sunucu nasıl kullanılır Sunucu şu adreste dinler:
http://<SUNUCU_IP>:5000/wake JSON verisi içeren bir HTTP POST isteği bekler:
{
"mac": "AA:BB:CC:DD:EE:FF"
}
Adım 8: Turn Off PC'de Uzaktan WOL'u etkinleştirin (mobil uygulama)
Telefonunuzda Turn Off PC'yi açın
Cihazınızı düzenlemeye gidin
Uzaktan WOL'u etkinleştirin
Raspberry Pi IP'sini harici sunucu IP'sine girin
Yapılandırmayı kaydedin
Hepsi bu kadar. Uzaktan Wake-on-LAN artık etkinleştirildi.