Update ghcr.io/jokob-sk/netalertx Docker tag to v26.10.0
I upgraded NetAlertX successfully by means of Watchtower Docker container update with dependency update facilitated by Mend's Renovate Bot.
This MR contains the following updates:
| Package | Update | Change |
|---|---|---|
| ghcr.io/jokob-sk/netalertx | minor | 26.9.0 → 26.10.0 |
Release Notes
netalertx/NetAlertX (ghcr.io/jokob-sk/netalertx)
v26.10.0: - 📈 Performance profiling and deeper device customization
Hi all 👋
I’ve focused this release heavily on observability, giving you better tools to understand exactly what’s happening under the hood of your deployment.

The biggest addition is the new System Info -> Performance page. You can now track CPU, memory, I/O, and scan durations across hour, day, week, and month views, with configurable retention. I built this specifically so you can investigate how different configuration tweaks or application updates impact your system load, making it much easier to debug bottlenecks or isolate the cause of high resource usage. To keep things organized, database size and table details have also been moved to a dedicated Storage tab.
For those managing massive device lists or MSP deployments, I’ve introduced several scalability and customization upgrades. The UI now features better pagination and new database indexes to keep things snappy at scale. You also have more control over device data: you can now use wildcards for custom properties, create dynamic per-device links, and even trigger on-demand plugin runs directly from a device.
If you are a dev, I've also added new scan configuration fields that allow you to import offline devices and temporarily suppress notifications for quiet bulk onboarding.
The plugin ecosystem got great community contributions. A huge shoutout to @mauricio-camayo for adding the DOCKERDISC plugin (enriching existing devices with their Docker container data) and the WIFICANARY plugin (introducing WiFi threat-detection heuristics). I also want to thank @agueybanapr for identifying and fixing config scan loops.
Huge thanks to our Weblate translators for keeping NetAlertX accessible in more languages this release 🙏
- 🇮🇹 Italian - @mapi68
- 🇪🇸 Spanish - @mriosriquelme
- 🇩🇪 German - @Atalanttore
- 🇨🇿 Czech - @p-bo
- 🇷🇺 Russian - @YoSafeguard
- 🇫🇷 French - @GitSpoon
Thanks to everyone who submitted bug reports, MRs, and feedback to help shape this release.
Now onto the full list of changes.
💔 Breaking changes
- 🔺PHASING OUT: If you have implemented external applications using the OLD API endpoints, please migrate to the NEW API endpoints.
🆕 New capabilities
- Added device-field wildcards for custom properties, including per-device links and actions. #1773
- Added on-demand plugin runs from device custom properties with success or error feedback.
- Plugins docs embedded natively in the official docs website and included in the docs search
- New
IMPORT_ONreserved setting name to toggle if the plugin should import objects as Devices - New
scanPresence,scanNotificationMode, andscanCreatesDevicefields on theCurrentScanDB table allowing you to suppress notifications and import offline devices - Added pagination controls to the Presence page for navigating large device lists.
- Device status listings now support limit and offset pagination with stable ordering.
- Added pagination controls for device and event API listings, including stable ordering across pages.
- Added database indexes to improve device and plugin lookups.
- Added consistent MAC address normalization for plugin events.
DOCKERDISCplugin: enrich existing devices with their Docker containers - by @mauricio-camayo 🙏 #1721- Devices can retain both primary IPv4 and IPv6 addresses reported during the same scan. #1804
WIFICANARYplugin: thread detection - by @mauricio-camayo 🙏 #1789- Device tables can display alert events, sleep capability, and static IP columns, which can be selected in column settings. #1815
MQTTplugin now publishes SSID and VLAN information. #1816- Added a System Info → Performance page with CPU, memory, I/O, and scan-duration charts, plus hour, day, week, and month views.
- Added configurable retention for performance history; collection can be disabled.
- Added process CPU and memory metrics to the health endpoint.
- Moved database size and table details from Maintenance to System Info → Storage.
✨Fixes and Improvements
- Adding a new custom-property and selecting an icon didn't target the newly added entry before saving
- Differently cased MACs could cause double detection #1775
- The notification window didn’t span the full width fix by @HsukqiLee 🙏 #1762
- Corrected device relationship setting types and repaired affected existing values. #1784
- Improved the accuracy and efficiency of parent-child device counts.
- Improved device tile count performance and empty-result handling.
- Prevented lookup failures for identifiers containing special characters.
- Fix unnecessary config scan in
importConfigs, was causing the container to run at over 80% CPU. by @agueybanapr 🙏 - In-app notification messages can now contain up to 4,096 characters. Messages exceeding the limit are automatically shortened with an ellipsis instead of being rejected. #1793
- GraphQL device lists sort valid IP addresses numerically, with empty or invalid values placed consistently. #1797
GRAPHQL_PORTENV variable was not applied on fresh production volumes. #1803- Plugin-sourced text is sanitized before saving, and changes made during sanitization are logged. Raw text remains available for designated display-only fields via
allow_raw_text - Conflicting plugin events that resolve to the same identity are rejected as a batch, preventing any events in that batch from being saved.
- AdGuard imports now distinguish devices with active DHCP leases from those without, including devices listed only through static reservations. #1813
FRITZBOXandFREEBOXdidn't respectSET_ALWAYSsettings #1812ADGUARDIMPdidn't report offline statuses correctly #1813- Devices with eligible network interfaces are now correctly recognized as present, preventing false down/disconnected status while preserving existing behavior for directly scanned devices. #1821
What's Changed
- fix(front): make notifications page span full width by @HsukqiLee in #1777
- BE+PLG: mac case sensitivity causing double detection #1775 by @jokob-sk in #1776
- DOCS: plugins by @jokob-sk in #1778
- FE: Easier icon add in Settings #1773 by @jokob-sk in #1779
- Next release by @jokob-sk in #1781
- Next release by @jokob-sk in #1782
- BE: SQL refactor presence by @jokob-sk in #1783
- Next release by @jokob-sk in #1785
- Next release by @jokob-sk in #1786
- LANG: sync by @jokob-sk in #1787
- Next release by @jokob-sk in #1790
- Add DOCKERDISC plugin: enrich existing devices with their Docker containers by @mauricio-camayo in #1788
- Refactor config import logic for legacy column references by @agueybanapr in #1791
- sync by @jokob-sk in #1792
- Fix/notification content truncation by @jokob-sk in #1795
- Sync by @jokob-sk in #1796
- DOCKERDISC v2: optional device creation for LAN-visible containers by @mauricio-camayo in #1800
- Next release by @jokob-sk in #1805
- sync by @jokob-sk in #1808
- Next release by @jokob-sk in #1807
- Add WIFICANARY plugin - passive WiFi rogue-AP detection by @mauricio-camayo in #1809
- sync by @jokob-sk in #1811
- Next release by @jokob-sk in #1814
- Next release by @jokob-sk in #1817
- Next release by @jokob-sk in #1819
- sync by @jokob-sk in #1822
- Next release by @jokob-sk in #1823
New Contributors
- @HsukqiLee made their first contribution in #1777
- @agueybanapr made their first contribution in #1791
Full Changelog: https://github.com/netalertx/NetAlertX/compare/v26.9.0...v26.10.0