-
-
Notifications
You must be signed in to change notification settings - Fork 346
Open
Labels
Workaround provided ⚒️A workaround for the issue was provided so no further actions will be taken.A workaround for the issue was provided so no further actions will be taken.bug 🐛Something isn't workingSomething isn't workingnext release/in dev image 🚀This is coming in the next release or was already released if the issue is Closed.This is coming in the next release or was already released if the issue is Closed.
Description
What installation are you running?
Production (netalertx) 📦
Is there an existing issue for this?
- I have searched the existing open and closed issues and I checked the docs https://docs.netalertx.com/
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
When navigating to Maintenance/Tools and clicking "Delete all devices", it just pops up a message in the browser:
Error: Validation Error: Input should be a valid list
No devices are deleted.
Expected Behavior
I expect all devices to be deleted.
Steps To Reproduce
I have tried to find a way to clear all devices, but with no success. So for me this always happens, 100% of the time. I did try disabling a few plugins (specifically OMDSDNOPENAPI), but that didn't change anything either.
This is basically a test-installation to see if it does what I need. It's relatively bare bones and not a lot of settings have been adjusted. Not quite "stock", but very close.
Relevant app.conf settings
LOADED_PLUGINS=['ARPSCAN','CSVBCKP','DBCLNP','DIGSCAN','MAINT','NEWDEV','NBTSCAN','NSLOOKUP','NTFPRCS','SETPWD','SMTP','SYNC','VNDRPDT','WORKFLOWS','UI','CUSTPROP','OMDSDNOPENAPI','INTRNT','ICMP','SNMPDSC']
(If any more parts/sections would be helpful, just let me know)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: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)
- CHOWN # Required for root-entrypoint to chown /data + /tmp before dropping privileges
- SETUID # Required for root-entrypoint to switch to non-root user
- SETGID # Required for root-entrypoint to switch to non-root group
volumes:
- type: volume
source: netalertx_data
target: /data
read_only: false
# 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
- type: bind
source: /etc/localtime
target: /etc/localtime
read_only: true
# 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/gid default to the service user (NETALERTX_UID/GID, default 20211)
# mode=1700 grants rwx------ permissions to the runtime user only
tmpfs:
# Comment out to retain logs between container restarts - this has a server performance impact.
- /tmp:uid=${NETALERTX_UID:-20211},gid=${NETALERTX_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=${NETALERTX_UID:-20211},gid=${NETALERTX_GID:-20211},mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"
# - "/tmp/nginx:uid=${NETALERTX_UID:-20211},gid=${NETALERTX_GID:-20211},mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"
# - "/tmp/run:uid=${NETALERTX_UID:-20211},gid=${NETALERTX_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.
# PUID: 20211 # Runtime PUID override, set to 0 to run as root
# PGID: 20211 # Runtime PGID override
# Resource limits to prevent resource exhaustion
mem_limit: 2048m # Maximum memory usage
mem_reservation: 1024m # 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
volumes:
# Persistent volume for configuration and database storage
netalertx_data: nullDebug 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
13:36:30 [API] Update API starting
13:36:30 [API] periodic_write is already running.
13:36:30 [SSE] Broadcasted event: state_update
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_appevents.json|2653925397721363331|2653925397721363331)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_devices.json|-7714812334277170245|-7714812334277170245)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_events_pending_alert.json|-4748823668498910014|-4748823668498910014)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_settings.json|-5434946670036614569|-5434946670036614569)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_events.json|-4748823668498910014|-4748823668498910014)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_history.json|-6392182191413410779|-6392182191413410779)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_objects.json|-8250939578330521192|-8250939578330521192)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_language_strings.json|-9117770155166865930|-9117770155166865930)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_notifications.json|-313760943203148307|-313760943203148307)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_online_history.json|-7663158852817754842|-7663158852817754842)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_devices_tiles.json|7357630314619815947|7357630314619815947)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_devices_filters.json|-293370180942433435|-293370180942433435)
13:36:30 [API] api_endpoint_class: Hashes (file|old|new): (table_custom_endpoint.json|-244111573474368263|-244111573474368263)
13:36:30 [SSE] Broadcasted event: state_update
13:36:30 [WF] get_new_app_events - new events count: 0
13:36:30 [MAIN] Processing WORKFLOW new_events from get_new_app_events: 0
13:36:30 [Plugins] Should I update API (userUpdatedDevices): False
13:36:32 [HTTP] DELETE /devices from 127.0.0.1
13:36:32 [HTTP] Headers: {'Host': 'RealServerFQDN', 'X-Real-Ip': 'RealServerIP', 'X-Forwarded-For': 'RealServerIP', 'X-Forwarded-Proto': 'http', 'Content-Length': '13', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0', 'Accept': '*/*', 'Accept-Language': 'en-US,en;q=0.9,de-DE;q=0.8,de;q=0.7', 'Accept-Encoding': 'gzip, deflate', 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest', 'Origin': 'http://RealServerFQDN:20211', 'Dnt': '1', 'Sec-Gpc': '1', 'Referer': 'http://RealServerFQDN:20211//maintenance.php'}
13:36:32 [Validation] Error for delete_devices: 1 validation error for DeleteDevicesRequest
macs
Input should be a valid list [type=list_type, input_value=None, input_type=NoneType]
For further information visit https://errors.pydantic.dev/2.12/v/list_type
127.0.0.1 - - [06/Feb/2026 13:36:32] "�[31m�[1mDELETE /devices HTTP/1.1�[0m" 422 -
13:36:32 [HTTP] GET /messaging/in-app/unread from 127.0.0.1
13:36:32 [HTTP] Headers: {'Host': 'RealServerFQDN', 'X-Real-Ip': 'RealServerIP', 'X-Forwarded-For': 'RealServerIP', 'X-Forwarded-Proto': 'http', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0', 'Accept': '*/*', 'Accept-Language': 'en-US,en;q=0.9,de-DE;q=0.8,de;q=0.7', 'Accept-Encoding': 'gzip, deflate', 'X-Requested-With': 'XMLHttpRequest', 'Dnt': '1', 'Sec-Gpc': '1', 'Referer': 'http://RealServerFQDN:20211//devices.php'}
127.0.0.1 - - [06/Feb/2026 13:36:32] "GET /messaging/in-app/unread HTTP/1.1" 200 -
13:36:35 [Import Config] checking config file
13:36:35 [Import Config] lastImportedConfFile : 1770380055.2470765
13:36:35 [Import Config] fileModifiedTime : 1770380055.2470765
13:36:35 [Import Config] skipping config file import
13:36:35 [check_and_run_user_event] User Execution Queue is empty
13:36:35 [API] Update API starting
13:36:35 [API] periodic_write is already running.
13:36:35 [SSE] Broadcasted event: state_update
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_appevents.json|2653925397721363331|2653925397721363331)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_devices.json|-7714812334277170245|-7714812334277170245)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_events_pending_alert.json|-4748823668498910014|-4748823668498910014)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_settings.json|-5434946670036614569|-5434946670036614569)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_events.json|-4748823668498910014|-4748823668498910014)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_history.json|-6392182191413410779|-6392182191413410779)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_objects.json|-8250939578330521192|-8250939578330521192)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_plugins_language_strings.json|-9117770155166865930|-9117770155166865930)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_notifications.json|-313760943203148307|-313760943203148307)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_online_history.json|-7663158852817754842|-7663158852817754842)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_devices_tiles.json|7357630314619815947|7357630314619815947)
13:36:35 [API] api_endpoint_class: Hashes (file|old|new): (table_devices_filters.json|-293370180942433435|-293370180942433435)
Docker Logs
PASTE DOCKER LOG HERE. Using the triple backticks preserves format.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Workaround provided ⚒️A workaround for the issue was provided so no further actions will be taken.A workaround for the issue was provided so no further actions will be taken.bug 🐛Something isn't workingSomething isn't workingnext release/in dev image 🚀This is coming in the next release or was already released if the issue is Closed.This is coming in the next release or was already released if the issue is Closed.