Skip to content

Wake on Lan Stopped Working in Latest release #1356

@adprom

Description

@adprom

Is there an existing issue for this?

The issue occurs in the following browsers. Select at least 2.

  • Firefox
  • Chrome
  • Edge
  • Safari (unsupported) - PRs welcome
  • N/A - This is an issue with the backend

Current Behavior

Version: dev-20251218-061658. Running in Docker on Synology (compose file via portainer). V25.10.1 this was working.

Since a recent update, Wake on Lan has stopped working. Have 2 different networks this behaviour has occurred on. Was working previously. Have also tested with alternate WOL utilities which wake the machines fine.

The interface says the WOL command was sent and no errors within.

I also tried a fresh instance rather than migrating from prior version byt same behaviour

Expected Behavior

Wake on Lan button to wake targert machine with a magic packet

Steps To Reproduce

Select a host a press the wake on lan button under tools

Relevant app.conf settings

#-----------------AUTOGENERATED FILE-----------------#
#                                                    #
#         Generated:  2025-12-15_22-06-23                 #
#                                                    #
#   Config file for the LAN intruder detection app:  #
#      https://github.com/jokob-sk/NetAlertX         #
#                                                    #
#-----------------AUTOGENERATED FILE-----------------#


# General
#---------------------------
LOADED_PLUGINS=['ARPSCAN','AVAHISCAN','CSVBCKP','DBCLNP','DIGSCAN','INTRNT','MAINT','NEWDEV','NBTSCAN','NSLOOKUP','NTFPRCS','SETPWD','SMTP','SYNC','VNDRPDT','WORKFLOWS','UI','CUSTPROP','UNFIMP']
LOADED_PLUGINS__metadata="{}"
DISCOVER_PLUGINS=True
DISCOVER_PLUGINS__metadata="{}"
SCAN_SUBNETS=['--localnet','192.168.1.0/24 --interface=eth0','192.168.1.0/24 --interface=eth1']
SCAN_SUBNETS__metadata="{}"
LOG_LEVEL='verbose'
LOG_LEVEL__metadata="{}"
TIMEZONE='Europe/Berlin'
TIMEZONE__metadata="{}"
PLUGINS_KEEP_HIST=250
PLUGINS_KEEP_HIST__metadata="{}"
REPORT_DASHBOARD_URL='update_REPORT_DASHBOARD_URL_setting'
REPORT_DASHBOARD_URL__metadata="{}"
DAYS_TO_KEEP_EVENTS=90
DAYS_TO_KEEP_EVENTS__metadata="{}"
HRS_TO_KEEP_NEWDEV=0
HRS_TO_KEEP_NEWDEV__metadata="{}"
HRS_TO_KEEP_OFFDEV=0
HRS_TO_KEEP_OFFDEV__metadata="{}"
CLEAR_NEW_FLAG=0
CLEAR_NEW_FLAG__metadata="{}"
REFRESH_FQDN=False
REFRESH_FQDN__metadata="{}"
API_CUSTOM_SQL='SELECT * FROM Devices WHERE devPresentLastScan = 0'
API_CUSTOM_SQL__metadata="{}"
VERSION='dev-20251212-053949'
VERSION__metadata="{}"
NETWORK_DEVICE_TYPES=['AP','Access Point','Gateway','Firewall','Hypervisor','Powerline','Switch','WLAN','PLC','Router','USB LAN Adapter','USB WIFI Adapter','Internet']
NETWORK_DEVICE_TYPES__metadata="{}"
GRAPHQL_PORT=20212
GRAPHQL_PORT__metadata="{}"
API_TOKEN='t_LBgNqDQeI8lOMZJhHGXp'
API_TOKEN__metadata="{}"

docker-compose.yml

services:
  netalertx:
  #use an environmental variable to set host networking mode if needed
    container_name: netalertx                       # The name when you docker contiainer ls
    image: ghcr.io/jokob-sk/netalertx-dev:latest
    network_mode: ${NETALERTX_NETWORK_MODE:-host}   # Use host networking for ARP scanning and other services

    read_only: true                                 # Make the container filesystem read-only
    cap_drop:                                       # Drop all capabilities for enhanced security
      - ALL
    cap_add:                                        # Add only the necessary capabilities
      - NET_ADMIN                                   # Required for ARP scanning
      - NET_RAW                                     # Required for raw socket operations
      - NET_BIND_SERVICE                            # Required to bind to privileged ports (nbtscan)

    volumes:
      - /volume1/docker/netalertx:/data:rw
      - /etc/localtime:/etc/localtime:ro

    # Example custom local folder called /home/user/netalertx_data
    # - type: bind
    #   source: /home/user/netalertx_data
    #   target: /data
    #   read_only: false
    # ... or use the alternative format
    # - /home/user/netalertx_data:/data:rw



      # Mount your DHCP server file into NetAlertX for a plugin to access
      # - path/on/host/to/dhcp.file:/resources/dhcp.file

    # tmpfs mount consolidates writable state for a read-only container and improves performance
    # uid=20211 and gid=20211 is the netalertx user inside the container
    # mode=1700 grants rwx------ permissions to the netalertx user only
    tmpfs:
      # Comment out to retain logs between container restarts - this has a server performance impact.
      - "/tmp:uid=20211,gid=20211,mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"

      # Retain logs - comment out tmpfs /tmp if you want to retain logs between container restarts
      # Please note if you remove the /tmp mount, you must create and maintain sub-folder mounts.
      # - /path/on/host/log:/tmp/log
      # - "/tmp/api:uid=20211,gid=20211,mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"
      # - "/tmp/nginx:uid=20211,gid=20211,mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"
      # - "/tmp/run:uid=20211,gid=20211,mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"

    environment:
      LISTEN_ADDR: ${LISTEN_ADDR:-0.0.0.0}                   # Listen for connections on all interfaces
      PORT: ${PORT:-20211}                                   # Application port
      GRAPHQL_PORT: ${GRAPHQL_PORT:-20212}                   # GraphQL API port (passed into APP_CONF_OVERRIDE at runtime)
  #    NETALERTX_DEBUG: ${NETALERTX_DEBUG:-0}                 # 0=kill all services and restart if any dies. 1 keeps running dead services.
    env_file:
      - stack.env
    # Resource limits to prevent resource exhaustion
    mem_limit: 1024m            # Maximum memory usage
    mem_reservation: 512m      # Soft memory limit
    cpu_shares: 512             # Relative CPU weight for CPU contention scenarios
    pids_limit: 512             # Limit the number of processes/threads to prevent fork bombs
    logging:
      driver: "json-file"       # Use JSON file logging driver
      options:
        max-size: "10m"         # Rotate log files after they reach 10MB
        max-file: "3"           # Keep a maximum of 3 log files

    # Always restart the container unless explicitly stopped
    restart: unless-stopped
    healthcheck:
       test: curl -f http://localhost:17811/ || exit 1
volumes:                        # Persistent volume for configuration and database storage
  netalertx_data:

# services:
#   netalertx:
#      container_name: netalertx
#      healthcheck:
#       test: curl -f http://localhost:17811/ || exit 1
#      mem_limit: 1g
#      cpu_shares: 768
#      security_opt:
#       - no-new-privileges:true
#      volumes:
#       - /volume1/docker/netalertx/config:/data/config:rw
#       - /volume1/docker/netalertx/db:/data/db:rw
#       - /volume1/docker/netalertx/logs:/tmp/log:rw
#      environment:
#       TZ: Australia/Melbourne
#       PORT: 17811
#       HOST_USER_ID: 1027
#       HOST_USER_GID: 100
#      network_mode: host
#      restart: on-failure:5
#      image: jokobsk/netalertx:latest
#      cap_drop:                                       # Drop all capabilities for enhanced security
#       - ALL
#      cap_add:                                        # Add only the necessary capabilities
#       - NET_ADMIN                                   # Required for ARP scanning
#       - NET_RAW                                     # Required for raw socket operations
#       - NET_BIND_SERVICE                            # Required to bind to privileged ports (nbtscan)

What installation are you running?

Dev (netalertx-dev)

Debug or Trace enabled

  • I have read and followed the steps in the wiki link above and provided the required debug logs and the log section covers the time when the issue occurs.

Relevant app.log section

Lines
100
Actions
 
 
 
      
--> first run config.sh 

══════════════════════════════════════════════════════════════════════════════

🆕  First run detected. Default configuration written to /data/config/app.conf.

    Review your settings in the UI or edit the file directly before trusting

    this instance in production.

══════════════════════════════════════════════════════════════════════════════

--> first run db.sh 

══════════════════════════════════════════════════════════════════════════════

🆕  First run detected — building initial database at: /data/db/app.db

    Do not interrupt this step. When complete, consider backing up the fresh

    DB before onboarding sensitive or critical networks.

══════════════════════════════════════════════════════════════════════════════

--> mandatory folders.sh 

    * Creating NetAlertX log directory.

    * Creating NetAlertX API cache.

    * Creating System services runtime directory.

    * Creating nginx active configuration directory.

    * Creating Plugins log.

    * Creating System services run log.

    * Creating System services run tmp.

    * Creating DB locked log.

    * Creating Execution queue log.

--> writable config.sh 

--> apply conf override.sh 

APP_CONF_OVERRIDE is not set. Skipping override config file creation.

--> nginx config.sh 

--> user netalertx.sh 

--> host mode network.sh 

--> layer 2 capabilities.sh 

--> excessive capabilities.sh 

--> appliance integrity.sh 

--> ports available.sh 

Setting APP_CONF_OVERRIDE to {"GRAPHQL_PORT":"20212"}

Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &

Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &

Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)

Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &

Successfully updated IEEE OUI database (112254 entries)

Caught signal, shutting down services...

Service signal exited with status 143.

Supercronic stopped! (exit 143)

nginx stopped! (exit 143)

php-fpm stopped! (exit 143)

All services stopped.

\033[1;31m

 _   _      _    ___  _           _  __   __

| \ | |    | |  / _ \| |         | | \ \ / /

|  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 

| .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 

| |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 

\_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/

\033[0m   Network intruder and presence detector. 

   https://netalertx.com

Startup pre-checks

--> storage permission.sh 

--> data migration.sh 

--> mounts.py 

 Path                     | Writeable | Mount | RAMDisk | Performance | DataLoss 

--------------------------+-----------+-------+---------+-------------+----------

 /data                    |     ✅    |   ✅  |    ➖   |      ➖     |    ✅     

 /data/db                 |     ✅    |   ✅  |    ➖   |      ➖     |    ✅     

 /data/config             |     ✅    |   ✅  |    ➖   |      ➖     |    ✅     

 /tmp/run/tmp             |     ✅    |   ✅  |    ✅   |      ✅     |    ✅     

 /tmp/api                 |     ✅    |   ✅  |    ✅   |      ✅     |    ✅     

 /tmp/log                 |     ✅    |   ✅  |    ✅   |      ✅     |    ✅     

 /tmp/run                 |     ✅    |   ✅  |    ✅   |      ✅     |    ✅     

 /tmp/nginx/active-config |     ✅    |   ✅  |    ✅   |      ✅     |    ✅     

--> first run config.sh 

--> first run db.sh 

--> mandatory folders.sh 

    * Creating NetAlertX log directory.

    * Creating NetAlertX API cache.

    * Creating System services runtime directory.

    * Creating nginx active configuration directory.

    * Creating Plugins log.

    * Creating System services run log.

    * Creating System services run tmp.

    * Creating DB locked log.

    * Creating Execution queue log.

--> writable config.sh 

--> apply conf override.sh 

APP_CONF_OVERRIDE is not set. Skipping override config file creation.

--> nginx config.sh 

--> user netalertx.sh 

--> host mode network.sh 

--> layer 2 capabilities.sh 

--> excessive capabilities.sh 

--> appliance integrity.sh 

--> ports available.sh 

Setting APP_CONF_OVERRIDE to {"GRAPHQL_PORT":"20212"}

Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &

Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &

Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)

Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &

Successfully updated IEEE OUI database (112310 entries)

Docker Logs

  PASTE DOCKER LOG HERE. Using the triple backticks preserves format. 

Metadata

Metadata

Assignees

No one assigned

    Labels

    Docker 🐋Docker relatedbug 🐛Something isn't workingnext release/in dev image 🚀This is coming in the next release or was already released if the issue is Closed.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions