Notefix/1.Projects/Персональний сайт портфоліо/Self Hosted/GPTWOL.md

88 lines
No EOL
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**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
```
```
```