4.4 KiB
GPTWOL (Simple Wake/Sleep On LAN Docker GUI) — це легковажний веб-інтерфейс (GUI) на Python у Docker-контейнері, призначений для дистанційного вмикання (Wake-on-LAN) та вимикання (Sleep-on-LAN) комп'ютерів у локальній мережі.
Функціонал досить простий :
-
Керування живленням:
-
Для того щоб включити комп’ютер чи сервер потрібно надіслати спеціальний пакет Wake On LAN (L4 або L2 пакет) для передачі команди на запуск. На комп’ютері в Біосі має бути налаштована така опція. А також включена підтримка у налаштуваннях мережевого адаптера в ОС.
-
Для переведення комп’ютера у режим сну потрібно відправити вже інший пакет Sleep On LAN (UDP-пакет на порт 9) підтримуються ОС Linux/Debian та Windows. Але на практиці Windows 10 чи 11 це працює через раз.
-
Моніторинг стану:
-
На сторінці інтерфейсу можна перевірка доступності пристроїв у мережі за допомогою ICMP (ping), ARP або TCP-запитів (із налаштуванням таймаутів).
-
Додавання пристроїв:
-
Сканування локальної мережі через ARP-SCAN для швидкого виявлення та додавання пристроїв.
-
Перевірка коректності введених IP та MAC-адрес.
-
Автоматизація:
-
Вбудований Cron для планування автоматичного вмикання/вимикання за розкладом.
-
Інтерфейс та безпека:
-
Інтерфейс підтримує Dark Mode, пошук та сортування (за ім’ям, IP або MAC).
-
Авторизація: за замовчуванням вимкнена, але підтримує локальний логін/пароль або OIDC (OpenID Connect).
-
Низьке споживання ресурсів (~20 MB RAM).
Особливості розгортання:
- Ставиться з Docker-образу (misterbabou/gptwol).
- Список пристроїв зберігається у базі даних SQLite.
- Є тільки одна особливість сервіс вимагає мережевого режиму network_mode: host для коректної відправки WOL-пакетів у локальну мережу
version: "3.9"
services:
gptwol:
container_name: gptwol
image: misterbabou/gptwol:latest
# gptwol працює тільки в host-режимі
network_mode: host
restart: unless-stopped
environment:
# Часовий пояс — рекомендовано для cron
TZ: "Europe/Kyiv"
# Ввімкнути локальну авторизацію
ENABLE_LOGIN: "true"
# Зміни ці параметри
USERNAME: "admin"
PASSWORD: "rZ1byF9knX4dmI2y"
# Дозволити додавати/видаляти комп'ютери з інтерфейсу
ENABLE_ADD_DEL: "true"
# Автоматичне оновлення статусу (ping/arp/tcp)
ENABLE_REFRESH: "true"
# Інтервал оновлення статусу в секундах
REFRESH_INTERVAL: "30"
# Таймаути для перевірок
PING_TIMEOUT: "80"
ARP_TIMEOUT: "80"
TCP_TIMEOUT: "1"
GUNICORN_CMD_ARGS: "--timeout 120 --workers 2"
# Використовувати WOL L2 пакети (краще для локальних мереж)
ENABLE_L2_WOL_PACKET: "false"
L2_INTERFACE: "enp0s31f6"
volumes:
# Тут зберігається база даних (список комп'ютерів)
- /home/admin/gptwol/appdata/db:/app/db
# Тут зберігаються CRON-завдання (автовмикання/вимкнення)
- /home/admin/gptwol/appdata/cron:/etc/cron.d