All apps · 0 apps
GPTWOL
Docker app from Mainfrezzer's Repository
Overview
Readme
View on GitHub
GPTWOL a simple Wake/Sleep On Lan docker GUI
GPTWOL is a simple and lightweight Wake/Sleep on Lan gui made with python to wake up and shutdown your computers on your LAN.
Screenshot
| Light Web | Dark Web |
|---|---|
![]() |
![]() |
| Light Mobile | Dark Mobile |
|---|---|
![]() |
![]() |
Features
- Docker Image to deploy
- Send Wake On Lan packets to wake up computers
- Send Sleep On Lan packets to shutdown computers
- Add or Delete Computer
- Computers status check with ping, arp or tcp request (timeout settings available)
- ARP-SCAN to add computers
- Very low power usage (20 mb RAM)
- Check if IP and MAC provided are valid
- cron job to wake up device
- Check if Cron provided is valid
- Search on computer Name, MAC or IP
- Dark mode
- Authentication (disable by default)
Special configuration you can change
- Ping Refresh to check Status availability
- Disable Delete or Add Computers
- Change the port of the Web UI
- Enable authentication (Local auth with only one user or OIDC)

Docker Configuration
[!NOTE]
It's recommended to use docker compose to run this application. Install documentation
[!CAUTION]
- The app container needs to run in host network mode to send the wakeonlan command on your local network.
- Make sure that the PORT you are using is free on your host computer
- Make sure that BIOS settings and remote OS is configure to allow Wake On Lan
- Don't expose gptwol directly on internet without proper authentication
With docker compose
Create docker-compose.yml file:
services:
gptwol:
container_name: gptwol
image: misterbabou/gptwol:latest
network_mode: host
restart: unless-stopped
environment:
- TZ=Europe/Paris #Set your timezone for Cron; default is UTC
#- PORT=5000 #Free Port on Your host; default is 5000
#- IP=0.0.0.0 #App listening IPV4 or IPV6 (ex [::]) address; default is 0.0.0.0
#- LOG_LEVEL=INFO #Can be DEBUG, INFO, WARN or ERROR
#- ENABLE_LOGIN=false # Enable or disable local login; You would be able to access with USERNAME and PASSWORD; default is false
#- USERNAME=admin # Set a username; default is admin
#- PASSWORD=admin # Set a password; default is admin
#- OIDC_ENABLED=false # Enable OIDC LOGIN; default is false
#- OIDC_ISSUER=https://auth.exemple.com # Base URL of the OIDC server - Should not include the `/.well-known/openid-configuration` part and no trailing `/`; default is not set
#- OIDC_CLIENT_ID=oidcclientid # Your OIDC client ID; default is not set
#- OIDC_CLIENT_SECRET=oidcclientsecret # Your OIDC Client Secret; default is not set
#- OIDC_REDIRECT_URI=http(s)://urlofyourgptwol(:port) # Base URL of your GPTWOL instance; default is not set
#- SCRIPT_NAME=/my-app # Uncomment this line to run the app under a prefix; default is not set
#- ENABLE_ADD_DEL=true # Enable or disable ADD computer and Delete computer buttons; default is true
#- ENABLE_REFRESH=true # Enable or disable automatic status refresh; default is true
#- REFRESH_INTERVAL=30 # Uncomment to change time between each status check for icmp, arp or tcp, can (in s); default value is 30 seconds
#- PING_TIMEOUT=300 #Uncomment to change the time to wait for a ping answer in (in ms); default value is 300 milliseconds
#- ARP_INTERFACE=eth0 #Uncomment this line to set an arp interface manually for scan and test; default is not set
#- ARP_TIMEOUT=300 #Uncomment to change the time to wait for a arp answer (in ms); default value is 300 milliseconds
#- TCP_TIMEOUT=1 #Uncomment to change the time to wait for a tcp check (in s); default value 1 second
#- ENABLE_L2_WOL_PACKET=false # Enable L2 WOL packet instead of L4, default is false
#- L2_INTERFACE=eth0 # Set the default interface for L2 WOL (set this only if you set ENABLE_L2_WOL_PACKET to true), default is eth0
volumes:
- ./appdata/db:/app/db
- ./appdata/cron:/etc/cron.d
Run the application
docker compose up -d
With docker
Run the application
docker run -d \
--name=gptwol \
--network="host" \
--restart unless-stopped \
-e PORT=5000 \
-e TZ=Europe/Paris \
-v ./appdata/db:/app/db \
-v ./appdata/cron:/etc/cron.d \
misterbabou/gptwol:latest
Configure Sleep on Lan
- Check the Sleep on Lan Github repo to download and configure
- GPTWOL send a reverse MAC wakeonlan packet on port 9 to shutdown your computer (you don't need to configure API)
Sleep on Lan for a debian based computer
sol.json
{
"Listeners": [
"UDP:9"
],
"LogLevel": "INFO",
"Commands": [
{
"Operation": "shutdown",
"Command": "poweroff",
"Default": true
}
]
}
Sleep on Lan for a windows based computer
sol.json
{
"Listeners": [
"UDP:9"
],
"LogLevel": "INFO",
"Commands": [
{
"Operation": "shutdown",
"Command": "shutdown /s /t 0 /f"",
"Default": true
}
]
}
- Configure Windows Defender Firewall by adding a new Inbound Rule (UDP port 9 to allow).
Configure OIDC
- You need to configure your OIDC provider to add new OIDC configuration. You need to enter
http(s)://yourgptwolurl(:port)/auth/oidc/callbackas Redirect URI - Configure the following ENV variables in docker compose:
OIDC_ENABLED OIDC_ISSUER OIDC_CLIENT_ID OIDC_CLIENT_SECRET OIDC_REDIRECT_URI(see default docker-compose.yml)
Roadmap
:heavy_check_mark: Add ARM version (Added in 1.0.1)
:heavy_check_mark: Add feature to plan automatic Wake on Lan (Cron) (Added in 1.0.3)
:heavy_check_mark: Add Search feature (Added in 1.0.4)
:heavy_check_mark: Remove Cron on Computer deletion (Added in 1.0.4)
:heavy_check_mark: Improve load page performance due to ping timeout. (added in 1.0.5)
:heavy_check_mark: Add a TCP port option to check availability without using ICMP (added in 2.0.1)
:heavy_check_mark: Run app on subpath (added in 2.1.0)
:heavy_check_mark: Make app responsive for smaller screen (added in 2.1.0)
:heavy_check_mark: Add Dark Mode Switch (added in 2.1.3)
:heavy_check_mark: move computers.txt in an other directory not to mount a file but a directory to the docker container (added in 4.0.0)
:heavy_check_mark: Shutdown computers with Sleep on LAN (added in 4.1.0)
:heavy_check_mark: Add optional simple authentication (added in 4.2.0)
:heavy_check_mark: Add ARP SCAN to add you computer of for availability check (added in 5.0.0)
:heavy_check_mark: Add Sort button to sort computer by Name, IP or MAC (added in 5.2.0)
:heavy_check_mark: Migrate computers to a SQLite database (added in 7.0.0)
:heavy_check_mark: OIDC sign in (added in 7.1.0)
Questions
Is there a GUI to configure automatic wakeup and shutdown?
Automatic shutdown and wakeup are made in the GUI using cron syntax. As I want to keep the application simple, I will not implement a GUI with a calendar, month an days. You can check this link to help you build your cron.
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allLinks
Details
misterbabou/gptwolRuntime arguments
- Web UI
http://[IP]:[PORT:5000]/- Network
host- Shell
bash- Privileged
- false
Template configuration
Free Port on your host system. The default is 5000
- Target
- PORT
- Default
- 5000
- Value
- 5000
Change this value to 1 to disable the ability to add or delete computers. The default is 0 to allow it
- Target
- DISABLE_ADD_DEL
- Default
- 0|1
- Value
- 0
Frequency of ping status checks. Can be 15 or 60 (seconds). The default value is 30 seconds
- Target
- REFRESH_PING
- Default
- 30
- Value
- 15
Change the time to wait for a ping answer in ms. The default value is 300 milliseconds
- Target
- PING_TIMEOUT
- Default
- 300
- Value
- 200
If you migrate from an earlier version, just move the old computer.txt to the new location
- Target
- /app/db
- Value
- /mnt/user/appdata/gptwol/db
- Target
- /etc/cron.d
- Value
- /mnt/user/appdata/gptwol/cron



