Lightweight Wake-on-LAN web dashboard with device management, watchdog automation, user roles, and SQLite storage.
- Python 94.9%
- Shell 5.1%
| app.py | ||
| install.sh | ||
| README.md | ||
Simple WOL
A lightweight Wake-on-LAN web dashboard.
Features:
- Wake devices from a browser
- Ping-based online/offline status
- SQLite storage
- Web-based first admin setup
- User roles
- Watchdog auto-wake
- Device add/edit/delete
- YAML import/export
- Event history
- Dark mode
- systemd + gunicorn deployment
Permissions
| Role | Wake | Watchdog | Manage Devices | Import/Export | Manage Users |
|---|---|---|---|---|---|
| No login | Yes | No | No | No | No |
| User | Yes | Yes | No | No | No |
| Admin | Yes | Yes | Yes | Yes | Yes |
On first launch, the web UI asks you to create the first admin user.
Requirements
Debian/Ubuntu packages:
apt install -y python3 python3-venv python3-full wakeonlan iputils-ping
Python packages:
flask
pyyaml
gunicorn
werkzeug
Quick Install
git clone https://git.micin.cz/stalker/simplewol.git
cd simplewol
chmod +x install.sh
sudo ./install.sh
Then open:
http://SERVER-IP:80
Manual Install
mkdir -p /opt/simplewol
cd /opt/simplewol
Copy app.py into /opt/simplewol/app.py.
Create virtual environment:
python3 -m venv venv
./venv/bin/pip install --upgrade pip
./venv/bin/pip install flask pyyaml gunicorn werkzeug
Run manually:
SIMPLE_WOL_SECRET_KEY="$(openssl rand -hex 32)" \
./venv/bin/gunicorn app:app --bind 0.0.0.0:80 --workers 1
systemd Service
Create:
nano /etc/systemd/system/simplewol.service
Example:
[Unit]
Description=Simple Wake-on-LAN Web UI
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/simplewol
Environment=SIMPLE_WOL_DIR=/opt/simplewol
Environment=SIMPLE_WOL_DB=/opt/simplewol/simplewol.db
Environment=SIMPLE_WOL_SECRET_KEY=replace-with-random-secret
ExecStart=/opt/simplewol/venv/bin/gunicorn app:app --bind 0.0.0.0:80 --workers 1
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Enable:
systemctl daemon-reload
systemctl enable --now simplewol.service
Logs:
journalctl -u simplewol.service -f
Important
Use only one gunicorn worker:
--workers 1
The watchdog runs in-process. Multiple workers would duplicate watchdog checks.
Database
SQLite database location:
/opt/simplewol/simplewol.db
Backups are stored in:
/opt/simplewol/backups/
Import / Export
Admins can import/export devices.yaml from the web UI.
Example format:
devices:
- id: desktop-pc
name: Desktop PC
mac: "AA:BB:CC:DD:EE:FF"
ip: "192.168.1.50"
broadcast: "192.168.1.255"
description: Main workstation
Troubleshooting
Check service:
systemctl status simplewol.service
Check logs:
journalctl -u simplewol.service -n 100 --no-pager
Test WOL manually:
wakeonlan AA:BB:CC:DD:EE:FF
Check app files:
du -h --max-depth=1 /opt/simplewol | sort -hr
Reset First Admin
Stop service:
systemctl stop simplewol.service
Delete database:
rm /opt/simplewol/simplewol.db
Start service:
systemctl start simplewol.service
Then open the web UI and create a new first admin.
Warning: this removes devices, users, watchdog state, and history.