GPTWOL

GPTWOL

Docker app from Mainfrezzer's Repository

Overview

GPTWOL is a simple and lightweight Wake on Lan GUI made with python to wake up your computers on your LAN.

GPTWOL a simple Wake/Sleep On Lan docker GUI


Docker Pulls GitHub Release GitHub last commit MIT Licensed

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/callback as 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.

Install GPTWOL on Unraid in a few clicks.

Find GPTWOL in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for GPTWOL Review the template variables and paths Click Install

Download Statistics

602,081
Total Downloads
54,223
This Month
50,432
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Details

Repository
misterbabou/gptwol
Last Updated2026-03-17
First Seen2024-12-30

Runtime arguments

Web UI
http://[IP]:[PORT:5000]/
Network
host
Shell
bash
Privileged
false

Template configuration

WebUI PortVariable

Free Port on your host system. The default is 5000

Target
PORT
Default
5000
Value
5000
Disable EditingVariable

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
Ping FrequencyVariable

Frequency of ping status checks. Can be 15 or 60 (seconds). The default value is 30 seconds

Target
REFRESH_PING
Default
30
Value
15
Ping TimeoutVariable

Change the time to wait for a ping answer in ms. The default value is 300 milliseconds

Target
PING_TIMEOUT
Default
300
Value
200
ConfigPathrw

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
CronPathrw
Target
/etc/cron.d
Value
/mnt/user/appdata/gptwol/cron