Releases: netalertx/NetAlertX
v26.1.17 - 🔽 AdGuard Integration, Deployment Flexibility & MQTT Enhancements
Hey y'all 👋 ,
This release has a strong mix of new capabilities and long-requested fixes. Big thanks to continuous and new contributors.
The SNMP plugin now supports Fortinet / FortiGate devices, and the ICMP plugin now supports fping for faster scans. High-speed networks benefit from a new opt-in native binary for INTRSPD, and MQTT users can now receive full, rich notification payloads (matching webhook behavior) for events like new, down, and reconnected devices. This release also introduces AdGuard Home integration via a new import plugin, expands deployment flexibility with the return of PUID/GUID environment variables, and improves overall discovery accuracy.
Reverse-proxy setups are now more robust thanks to the new BACKEND_API_URL setting and improved documentation. MQTT now correctly supports anonymous connections, a new UI_LOCALE setting addresses browser-specific date quirks, and fake MAC addresses are clearly identifiable using the FA:CE: prefix.
As always, huge thanks to the community contributors who helped push this release forward — your PRs, testing, and feedback continue to make NetAlertX better with every iteration 🙏
See below for more detailed updates.
Screenshots
💔 Breaking changes
Sometimes I have to introduce breaking changes
docker-compose.yml updates
To add the GUID and PUID capability we had to add new permissions:
cap_add: # Add only the necessary capabilities
- NET_ADMIN # Required for ARP scanning
- NET_RAW # Required for raw socket operations
- NET_BIND_SERVICE
- CHOWN # 🆕new line
- SETUID # 🆕new line
- SETGID # 🆕new lineSee the updated docker-compose docs for details
For reverse proxies use the BACKEND_API_URL setting to point to your backend port
If SMTP not working as expected please navigate to Settings and do the following:
- Clear the existing
SMTP_PASSin the UI - Enter your
SMTP_PASS - Click Save
Warning
- ⚠DEPRECATED: The port of the sync nodes for the SYNC plugin will change to the value of the
GRAPHQL_PORTsetting. Both ports are currently supported, so please update your configuration to point to the new port in theSYNC_hub_urlandSYNC_nodessettings. - 🔺DEPRECATED: If you have implemented external applications using the OLD API endpoints, please migrate to the NEW API endpoints.
Some OLD endpoints are still present but they will be now removed in upcoming versions.
🆕New capabilities
SNMPDSCnow supportsFortinet/Fortigatesystems #1324INTRSPDnow supports opt-in native binary for high-sped internet connections (see docs on how to enable) - thanks to @amir0ff 🙏MQTTnow supports sending of full notification messages #1339- A new AdGuard import plugin
ADGUARDIMP#1341 - Re-introduction of
PUIDandGUIDenvironmental variables for more deployment options - thanks to @adamoutler 🙏 - The
ICMPplugin now supportsfpingvia theICMP_MODEsetting #1331
✨Fixes and Improvements
- For reverse proxies use the
BACKEND_API_URLsetting to point to your backend port - More robust error handling in the Network topology view #1323 #1308
- More robust handling of date-time stamps
YYYY.DD.MM#1312 - Backups of
app.conffiles created in wrong directory during settings save #1311 APP_CONF_OVERRIDEwas not applied #1328MQTTallows for anonymous connections #1358- A new
UI_LOCALEsetting to control date display as Chrome and Firefox behave differently when using the TZ #1335 - Fake MAC addresses will from now start with
FA:CE:to make it easily distinguishable and detectable #1344 - Better Reverse Proxy support and Authentik docs by @luckylinux 🙏
- New
NEWDEV_NAME_CLEANUP_REGEXdefaults to cleanup.home.arpanames #1383
🔝 Current priorities
- High priority: Settings, Workflows and Plugins core improvements
- Low priority: UI (PRs welcome, but follow guidelines)
What's Changed
- Fix typo in warning message for read-only mode by @mmomjian in #1317
- Change copy command to install with permissions by @adamoutler in #1332
- Remove dev branch from docker compose file by @KihtrakRaknas in #1333
- Fix pr 1309: Add OpenAPI Tools and MCP Server Bridge by @jokob-sk in #1326
- Add script to generate synthetic device inventory CSV by @adamoutler in #1338
- Devcontainer-devices by @adamoutler in #1340
- Allow other users (Non-Synology) by @adamoutler in #1363
- Improving mount diagnostics by @adamoutler in #1364
- Hybrid Speedtest implementation (Python-First with Native Opt-in) by @amir0ff in #1370
- Feature: Passive PUID/PGID Support & Startup Sequence Refactor by @adamoutler in #1381
- PUId fixes by @adamoutler in #1387
- Enable Root PUID; Add AUFS filesystem capability warnings and documentation by @adamoutler in #1393
- Fix Saving Changes in Devices Page. by @luckylinux in #1395
- [reverse proxy] Use getApiBase() to get GraphQL Endpoint for events by @luckylinux in #1397
- [reverse proxy] Use getApiBase() to get GraphQL Endpoint for front/deviceDetailsTools.php. by @luckylinux in #1396
- [reverse proxy] Use getApiBase() to get GraphQL Endpoint for System Information about Network by @luckylinux in #1398
- Add selenium to devcontainer by @adamoutler in #1399
- fix: root access PHP & Nginx by @adamoutler in #1400
- Add caddy and authentik sso documentation by @luckylinux in #1415
New Contributors
- @mmomjian made their first contribution in #1317
- @amir0ff made their first contribution in #1370
- @luckylinux made their first contribution in #1395
Full Changelog: v25.11.29...v26.1.17
v25.11.29 - 🛡 Enhanced security, PIHOLEAPI and changes in data folders
Hi everyone 👋 !
This release significantly improves the security of the application by running on a read-only filesystem. Because of this major internal change, manual migration steps are required. The user data Docker volume paths have moved from /app to /data, and a tmpfs mount is now required for all writable directories. Find a sample docker-compose.yml template below and read the Migration docs for details on how the permissions changed. Also ensure you re-save the settings after the migration (See details below on why).
A big thanks to @adamoutler who rewrote the installation scripts and created a comprehensive pre-initialization check, enhancing the code-base with linting checks, created a devcontainer to speed-up development and various other additions.
This version also adds a PIHOLEAPI plugin that leverages the new v6 API for device retrieval from your PiHole instance. Thank you to @leiweibau for the bulk of the code from his PiAlert project.
Thanks also to @JVKeller for help with the bare-metal install.
As always, thank you to all translators: @GitSpoon , @maksim2005UKR , @mapi68 , "R" , @Atalanttore , "anton garcias", @YoSafeguard , @AlmaziikDev , "jeet moh", @Blueberryy , @p-bo , @bo3bdo , "Carlos M. Silva"
Minimum required docker-compose.yml template:
services:
netalertx:
container_name: netalertx
image: "ghcr.io/jokob-sk/netalertx" # 🆕 This has changed
network_mode: "host"
cap_drop: # 🆕 New line
- ALL # 🆕 New line
cap_add: # 🆕 New line
- NET_RAW # 🆕 New line
- NET_ADMIN # 🆕 New line
- NET_BIND_SERVICE # 🆕 New line
restart: unless-stopped
volumes:
- /local_data_dir:/data # 🆕 This folder contains your /db and /config directories and the parent changed from /app to /data
# Ensuring the timezone is the same as on the server - make sure also the TIMEZONE setting is configured
- /etc/localtime:/etc/localtime:ro # 🆕 New line
environment:
- PORT=20211
# 🆕 New "tmpfs" section START 🔽
tmpfs:
# All writable runtime state resides under /tmp; comment out to persist logs between restarts
- "/tmp:uid=20211,gid=20211,mode=1700,rw,noexec,nosuid,nodev,async,noatime,nodiratime"
# 🆕 New "tmpfs" section END 🔼
See the Migration docs for details as the folders and files need to be owned by a 20211 user and group.
❗ Known issues:
- See open issues.
📃 Changelog
💔 Breaking changes
Sometimes I have to introduce breaking changes
- ⏰ Reminder: Due to code refactoring in order to upgrade to this version from a version before
v25.5.24, you have to upgrade tov25.5.24before upgrading to this version). See the upgrades docs for details. - 💔 Due to language string cleanup you will have to select your
UI_LANGagain and re-save your settings. - 💔 Due to the format of the
SMTP_PASSsetting changes you will have to re-save your settings. - 💔 The
TZ=Europe/Berlindocker variable was replaced by a more common approach mapping- v /etc/localtime:/etc/localtime:ro - 💔 Due to security hardening the docker container volume locations changed, from
/appto/dataand a newtmpfsmount for all writable directories was added. See Migration docs for details.
Warning
⚠️ UPCOMING: The port of the sync nodes for the SYNC plugin will change to the value of theGRAPHQL_PORTsetting. Both ports are currently supported, so please update your configuration to point to the new port in theSYNC_hub_urlandSYNC_nodessettings.⚠️ UPCOMING: If you have implemented external applications using the OLD API endpoints, please migrate to the NEW API endpoints.
🆕New capabilities
ARPSCAN_DURATIONsetting to runARPSCANfor a longer time to try to discover IoT or similar devices #1172- Device name in page titles #1162
UI_DEFAULT_PAGE_SIZEsetting to change the default page size #1181NEWDEV_IP_MATCH_NAMEsetting to disable name discovery and matching based on IP if you don't have static IPs on your networkPIHOLEAPIplugin to connect to your PiHole instance via API #1282- Notifications now contain a link to the server in the footer as per the
REPORT_DASHBOARD_URLsetting #1267
✨Fixes and Improvements
eventsnotifications enabled on theInternetroot node and using theSYNCplugin led to IP flipping #1207app.logline break fixLOG_LEVELnot respected #1217- Compound notification filters didn't work #1210
- The Device tile for
All devicesdidn't work properly #1238 SNMPDSCdidn't respect timeout settings #1231- Multi-edit preventing error if no devices selected #1219
SMTP_PASSdidn't allow for'quotes in passwords #1253- Devices with number-only names caused Network topology page error #1281
- You can now use the
--vlanparameter if you have bothNMAPDEVandARPSCANenabled #1264 - Performance optimizations of name lookups #1251
- Better invalid data handling of the
UNIFIAPIplugin #1224 - More robust args handling in the
NMAPplugin #1288 - Better SCHEDULE cron value validation #1306
🔝 Current priorities
- High priority: Settings, Workflows and Plugins core improvements
- Low priority: UI (PRs welcome, but follow guidelines)
🐞 Known issues
- See also 🚑 fixes below and the Issues tracker
If you have any debug info/suggestions regarding the above, please open a separate issue, thanks! 🤍
What's Changed
- fix: Support compound conditions in SafeConditionBuilder (Issue #1210) by @PreistlyPython in #1211
- Baremetal installer by @JVKeller in #1212
- Update timestamp format to use UTC timezone by @adamoutler in #1216
- Fix install script references in HW_INSTALL.md by @gonzague in #1213
- Update HW_INSTALL.md by @JVKeller in #1222
- Update README.md by @JVKeller in #1223
- Add script to regenerate the database from schema by @adamoutler in #1229
- Feat: Enterprise-Grade Security Hardening and Build Overhaul by @adamoutler in #1230
- Rename CONTRIBUTING to CONTRIBUTING.md by @AlmazzikDev in #1236
- Change branch back to main. by @JVKeller in #1237
- sync by @jokob-sk in #1244
- Hardening fixes by @adamoutler in #1235
- Security features overview by @adamoutler in #1247
- Easy permissions by @adamoutler in #1248
- Sync by @jokob-sk in #1249
- Fix typo in PiHole integration guide by @Tweebloesem in #1255
- update docker compose by @adamoutler in #1256
- BE: Remove GraphQL check from healthcheck by @jokob-sk in #1257
- BE: fix GRAPHQL_PORT by @jokob-sk in #1258
- BE: Devices Tiles SQL syntax error #1238 by @jokob-sk in #1260
- Next release by @jokob-sk in #1245
- Feat: make errors more helpful by @adamoutler in #1263
- Fix permissions on Synology by @adamoutler in #1268
- next_release by @jokob-sk in #1261
- sync by @jokob-sk in #1269
- sync by @jokob-sk in #1272
- Fix typo in Baseline Docker Compose - DOCKER_COMPOSE.md by @alexhk in #1278
- Pr 1279 by @jokob-sk in #1280
- Data and tmp standardization by @adamoutler in #1279
- Next release by @jokob-sk in #1271
- Fix: Fix for ports by @adamoutler in #1286
- Add missing .VERSION file by @adamoutler in #1287
- Add .VERSION to gitignore by @adamoutler in #1290
- Add VERSION file creation by @adamoutler in #1295
- Test fixes by @adamoutler in #1291
- Update Docker Compose documentation for volume usage by @adamoutler in #1296
- Improve CI code checks (URL path, Python syntax, linting, tests) by @adamoutler in #1289
- feat: docker-based testing by @adamoutler in #1299
- BE: linting fixes by @jokob-sk in #1300
*...
v25.10.1 - 📈Performance, UNIFIAPI, new API layer, SYNC port change
Hey everyone! 👋
Any contribution, big or small makes me incredibly grateful and happy. Currently going thru some bumps in life, so this release, with that many contributions, makes me breath easier and helps me focus on some necessary things outside of FOSS.
This release comes with lots of backend improvements and LOTS of contributions from the amazing @ingoratsdorf , @adamoutler, @PreistlyPython, @cvc90, @SantosSi , @ningmeng68 , @martinkuck , @FlyingToto , and @Virenbar 💙
To highlight biggest ones, @ingoratsdorf helped improve performance of the backend significantly - in some cases by over 50% in certain cases. This will be mostly felt on slower servers. He targeted disk writes, read access, and helped remove unnecessary setting changes checks.
Then @adamoutler swooped in to significantly improve the developer experience with a devcontainer setup and he is hardening the image, and fixing bugs all over the place.
On top of that more bare metal installation options are being worked on, the setup process is being streamlined, and security being hardened.
Hope everyone appreciates this release as much as I do.
Screenshots
💔 Breaking changes
Sometimes I have to introduce breaking changes
- Reminder: Due to code refactoring in order to upgrade to this version from a version before
v25.5.24, you have to upgrade tov25.5.24before upgrading to this version). See the upgrades docs for details.
Warning
⚠️ UPCOMING: The port of the sync nodes for the SYNC plugin will change to the value of theGRAPHQL_PORTsetting. Both ports are currently supported, so please update your configuration to point to the new port in theSYNC_hub_urlandSYNC_nodessettings.⚠️ UPCOMING: If you have implemented external applications using the OLD API endpoints, please migrate to the NEW API endpoints.
🆕New capabilities
- You can now change the default subject of the report emails via the
SMTP_SUBJECTsetting #1146 - A new
UNIFIAPIplugin that supports multiple sites and uses the UNIFI API directly (see disclaimer for supported use cases) - A new API layer with extensive documentation
✨Fixes and Improvements
- Better handling of non-existing parent nodes which prevented the devices list to load #1132
- Better handling of date time formats #1147
- Performance improvements by @ingoratsdorf 🙏 #1144
- Breaking and upcoming changes will be updated in #1150
- A relative URL in the Reports page was fixed thanks to @cvc90 so reverse proxies work as expected 🙏
- Muting SYNC plugin notifications if
LOG_LEVELset tominimalornone#1164
Previous releases:
https://github.com/jokob-sk/NetAlertX/releases
What's Changed
- Changing absolute path URL to relative path URL in report.php by @cvc90 in #1140
- Added cache to get_settings by @ingoratsdorf in #1151
- added a variant of example 2 as 5... by @FlyingToto in #1154
- Adding secondary cache to settings by @ingoratsdorf in #1156
- Enhance in-app tooltips for clarity by @adamoutler in #1165
- adding example 5 of docker compose (3rd try!) by @FlyingToto in #1155
- DB result iteration fix on empty result by @ingoratsdorf in #1167
- Ubuntu installer by @ingoratsdorf in #1166
- Add custom User-Agent header to requests in website monitor script by @cvc90 in #1171
- DB functions tidyup and streamlining by @ingoratsdorf in #1169
- Changing absolute path URL to relative path URL in deviceDetailsTools.php by @cvc90 in #1170
- Bare metal Installer rework by @ingoratsdorf in #1173
- Installer rework by @ingoratsdorf in #1174
- provide more descriptive reason for failure by @adamoutler in #1177
- clearPluginEvents by @ingoratsdorf in #1176
- Make it easier to find the corresponding log files by @adamoutler in #1183
- Ubuntu24 installer updates by @ingoratsdorf in #1186
- Change default encryption key to an empty string by @adamoutler in #1188
- feat: Devcontainer by @adamoutler in #1184
- Missed commit for devcontainer setup by @adamoutler in #1189
- Security: Fix SQL injection vulnerabilities (Issue #1179) by @PreistlyPython in #1182
- Fix log directory setup in setup.sh by @adamoutler in #1190
- Document standard plugin formats and logging practices by @adamoutler in #1192
- Improve I/O performance with ramdisks by @adamoutler in #1191
- Rework Logging in restart-backend.sh by @adamoutler in #1194
- Ubuntu 24 Installer rewrite by @ingoratsdorf in #1201
- make scheduler setup more robust against wrong scheduling by @ingoratsdorf in #1202
- Make plugin loader more robust by @ingoratsdorf in #1203
- Mqtt optimisations and TZ fixes by @ingoratsdorf in #1205
New Contributors
- @adamoutler made their first contribution in #1165
- @PreistlyPython made their first contribution in #1182
Full Changelog: v25.8.6...v25.10.1
v25.8.6 - Prometheus metrics endpoint, better icon, type guessing 📊
Hi selfhosters! ☁️
A small release to fix a couple of outstanding issues and a nice addition by @kllngtme contributing a Prometheus metrics endpoint and NetAlertX-like looking Grafana template 📊
I also managed to sneak in a better icon and type guessing mechanism, with an easy to maintain (and contribute to 😉 ) heuristics json file.
As always, see all the stuff that has changed below.
💔 Breaking changes
Sometimes I have to introduce breaking changes
- Reminder: Due to code refactoring in order to upgrade to this version from a version before
v25.5.24, you have to upgrade tov25.5.24before upgrading to this version). See the upgrades docs for details.
🆕New capabilities
- New Prometheus
<server>:<GRAPHQL_PORT>/metricsAPI endpoint with a Grafana template based on the work of @kllngtme 🙏 - The parent network node column in the devices list displays as a chip with hover-over info
- New heuristics JSON rules file to make icon and device type guessing more maintainable
- Heuristics:Device icon and type guessing docs
✨Fixes and Improvements
- Reworked device heuristics for guessing device icon an device type #1129
- Further performance improvements to the System info page by switching from
https://ifconfig.cotohttps://api64.ipify.orgwith a 10s timeout #1124 - Fixed the dummy/manual device creation #1126
- Fixed copying icons across devices of the same type #1128
- Fixed the loading overlay on the Tools tab on devices when returning to a different device #1130
- Fixed issue when creating new devices with number-only names #1131
- System info sub-menu items
Previous releases:
https://github.com/jokob-sk/NetAlertX/releases
Full Changelog: v25.7.30...v25.8.6
v25.7.30 - Relationship types and NICs support 🎨
Hi everyone! 👋
This release adds new ways to control device status via NICs, along with support for colored relationship types, including virtual devices. Children nodes are now shown on the device details page, complete with hover-over tooltips for quick insights.
The Network topology page has been redesigned with filtering, sorting, search, and hover-over info boxes for easier navigation 🔍. A new setting also allows you to hide specific relationship types from the main view 🛠️.
Additional improvements include available IP listings per subnet 📶, support for Apprise tags and non-SSL NTFY instances 📢, performance optimizations, translation updates 🌍, and various UI refinements for a smoother experience 🎨. See the full list of new capabilities, fixes, and improvements below.
A big thank YOU to all contributors to translations and code 🙏 :
Thanks to @dougmaitelli @fuad00 @slammingprogramming for code contributions 👨💻, and on the translations side, @kkumakuma for finalizing the Chinese translation 🥳 and @cosmicDustOfLightLength for a big push on the Polish one 🙌 as well as to ongoing translation maintenance by @slammingprogramming @ond000 @mapi68 @YoSafeguard @GitSpoon @Atalanttore @bo3bdo @Maksim2005UA2 @BekirKayraCigdem @ptsa @GoldBull3t @PrinsGeryha @Noschvie @mriosriquelme 🙏
💔 Breaking changes
Sometimes I have to introduce breaking changes
- Reminder: Due to code refactoring in order to upgrade to this version from a version before
v25.5.24, you have to upgrade tov25.5.24before upgrading to this version). See the upgrades docs for details.
🆕New capabilities
- New relationship type option to be configured for devices
- Colored relationship types to represent different types of connections and devices, such as NICs, virtual devices and more #724
- Rework of the Network topology page with Offline/Archived filters, search, ordering, hover info boxes and more
- Network node indicator of a network node via an icon
- A new
UI_hide_rel_typessetting to select which relationships to hide from the main devices lists - Device presence status override based on NICs
- Children devices and NICs shown on Device details screens with hover-over details peeking
- Filtering and sorting support added on the Network screen of Unassigned and Connected devices
- Added support for non-ssl self-hosted
NTFYinstances via theNTFY_VERIFY_SSLsetting #1117 - Hover-over details peeking in some devices views
- Added support for Apprise tags by @dougmaitelli 🙏 #1122
- List of available IPs per subnet in System info #1124
✨Fixes and Improvements
- Better icon and device type guessing from @slammingprogramming 🙏
- Incorrect volume fix in docker-compose by @fuad00 🙏
- Performance gains by adding DB indexes mostly on the Device details pages
- Device details tabs are only loaded on focus speeding up initial load time
- Last Seen (
devLastConnection) is now updated when the device was last connected, and not only when it switched from offline to online as this seems to be a more logical behavior - Network tree setup docs update
- Links opening in a new tab are marked with an arrow to prevent confusion when navigating the UI
- Small dark theme fixes
- Removal of now unnecessary VOIDED events detection that was causing missing-events in the presence views #1119
- Fix of double-bars for newly detected devices #1119
- Integrations / Device -> Plugins view only shows plugins with data to streamline the UI
- Better icon selector for custom device properties
Previous releases:
https://github.com/jokob-sk/NetAlertX/releases
Target release frequency:
- Monthly
What's Changed
- hotfix: invalid volume variable by @fuad00 in #1121
- Add support for Apprise Tags by @dougmaitelli in #1123
New Contributors
- @fuad00 made their first contribution in #1121
- @dougmaitelli made their first contribution in #1123
Full Changelog: v25.7.4...v25.7.30
v25.7.4 - Unifi hotfix 🩹
Quick hot-fix - left in some test code 🤦♂️
Thanks to @scalerow for quick report and fix 🙏
🔌Plugins
- Fix for
UNFIMPwhere I left some test code ✨
What's Changed
New Contributors
Full Changelog: v25.7.3...v25.7.4
v25.7.3 - 🌍 Arabic translation and various fixes
Hey everyone 👋,
This is a lighter release of some fixes I wanted to get out before implementing some bigger changes. I want to thank the community to help me translate NetAlertX into almost 15 languages! 🌐 The latest big addition is @bo3bdo for a full Arabic translation and @ond000 who started on the Czech translation. As always, thanks everyone keeping the translations up-to-date: @mapi68 @Atalanttoreweblate @Maksim2005UA @GitSpoon @YoSafeguard @slammingprogramming @oldmav
Any small contribution to translations or code helps to keep this project going - consistency is key! 🙂
Read on what additional fixes are included in this release. 🔽
💔 Breaking changes
Sometimes I have to introduce breaking changes
- Reminder: Due to code refactoring in order to upgrade to this version you have to run a previous version of the application (run
v25.5.24before upgrading to this version). See the upgrades docs for details.
🏘️ Community
- Huge thanks to @slammingprogramming for various fixes and @bo3bdo for a full Arabic translation 🆕
📚Docs updates
- A new docs article with workflow examples 🆕
⚙Settings
- Fixed incorrect
REFRESH_FQDNcheck in the device name discovery scanners #1081 ✨
🔌Plugins
- Fix for devices with number only names that were not sent via
MQTT#1102 ✨ - Fix for the
FREEBOXplugin by @mathoudebine #1084 ✨ - Fix for
VNDRPDTnot updating the vendor database #1080 ✨
🖼 UI
- Archived devices are now being hidden in the Network topology view ✨
Other Info
| 🆕 - New features | ✨ - Fixes & Improvements | ⚠ - Possibly breaking changes | 🧪 - Experimental/work in progress |
|---|
What's Changed
- Added buymeacoffee to FUNDING.yml and move it to the correct directory by @YouFoundAlpha in #1075
- Updating base image to Alpine 3.22 by @vladaurosh in #1076
- Update freebox.py: add missing entries in device_type_map by @mathoudebine in #1085
- Sanitize device fields and prevent crash with numeric hostnames by @slammingprogramming in #1089
- Revert "Sanitize device fields and prevent crash with numeric hostnames" by @slammingprogramming in #1091
- add documentation feedback issue template by @slammingprogramming in #1097
- Sanitize hostnames, macs, and vendor names before running .lower/.upper on them to prevent AttributeError by @slammingprogramming in #1098
- Docs overhaul by @slammingprogramming in #1099
- Improvements by @slammingprogramming in #1101
New Contributors
- @YouFoundAlpha made their first contribution in #1075
- @mathoudebine made their first contribution in #1085
- @slammingprogramming made their first contribution in #1089
Full Changelog: v25.6.7...v25.7.3
v25.6.7 - Legacy upgrade removal and Fully Qualified Domain Names 🆎
Hi everyone! 👋
To simplify code maintenance (the database.py file has been reduced from 1000 to 500 lines), I’ve removed legacy migration support from PiAlert and dropped support for older database upgrade paths.
There’s no impact if you're upgrading from version v25.5.24 to this release.
However, if you're on an older version, please upgrade to v25.5.24 first by pulling the previous image:
ghcr.io/jokob-sk/netalertx:25.5.24
Then restart the application.
Upgrading from PiAlert is still supported — just ensure you first run the v25.5.24 version before upgrading to the latest release.
New in this version:
- ✅ Auto-updated FQDN (Fully Qualified Domain Name) collection
- 🔍 New DIGSCAN plugin to collect FQDN via active scans
- 🛠️ Added init check under the Maintenance section to help debug startup issues
Big thanks to @johnwang16 for the reverse proxy fixes, and to everyone who submitted translations so quickly — @GitSpoon, @mapi68, @Maksim2005UA, @yunyi35 🙏
Hope you find the new features useful! As always, happy to hear your feedback here or on Discord.
💔 Breaking changes
Sometimes I have to introduce breaking changes
- Due to code refactoring in order to upgrade to this version you have to run a previous version of the application (e.g. run
ghcr.io/jokob-sk/netalertx:25.5.24before upgrading to this version). To simplify maintenance migration from PiAlert has been removed and previous PiAlert installations will have to run theghcr.io/jokob-sk/netalertx:25.5.24image for an automated migration. See the migration docs for details.
📚Docs updates
- Rewritten quick start guide ✨
⚙Settings
- A new
REFRESH_FQDNsetting to auto-update the Device Fully Qualified Domain Name (FQDN) #1065 🆕
🔌Plugins
DIGSCANnew Dig plugin from code refactoring 🆕
🖼 UI
- New Initialization check under Maintenance 🆕
devMacadded to workflow fields for more automation options 🆕
Other Info
| 🆕 - New features | ✨ - Fixes & Improvements | ⚠ - Possibly breaking changes | 🧪 - Experimental/work in progress |
|---|
What's Changed
- use relative paths for reverse proxy by @johnwang16 in #1071
Full Changelog: v25.5.24...v25.6.7
v25.5.24 - MQTT, UI improvements, multiple notification emails
Hi everyone!
This update includes brings small enhancements across the board:
MQTTplugin now supports an "Alert Down" flag to better track device statusSMTPplugin supports multiple recipient emails- New localized date/time UI and improved tooltips
- In-app notifications auto-cleanup with
MAINT_NOTI_LENGTH - Plus: better error reporting in
WEBMON, more reliable long emails, and fixes to plugin-watching alerts
Thanks to @jangrewe for the SMTP fix! See details below.
⚙Settings
- A new
MAINT_NOTI_LENGTHsetting to auto-delete in-app notifications #1052 🆕
🔌Plugins
MQTTadditional Alert Down attribute so you can check and filter down devices #1057 ✨WEBMONmore statuses for different errors (SSL, timeout) ✨SMTPnow supports multiple email addresses #1061 ✨
🖼 UI
- Dates are localized in most places based on the
TIMEZONEsetting #1044 🆕 - Fixed tooltips in presence view hover #1066 ✨
💠Core app updates
Watched_Value1-4changes didn't trigger notifications if you were watchingpluginchanges #1053 ✨- Some SMTP servers were not handling 1000+ characters per line which could result in broken links in emails #1049 ✨ - thanks to @jangrewe 🙏
Other Info
| 🆕 - New features | ✨ - Fixes & Improvements | ⚠ - Possibly breaking changes | 🧪 - Experimental/work in progress |
|---|
What's Changed
- properly indent HTML tables in report emails to fix broken links by @jangrewe in #1058
- Fix minor typo "longet" by @KihtrakRaknas in #1068
New Contributors
- @jangrewe made their first contribution in #1058
- @KihtrakRaknas made their first contribution in #1068
Full Changelog: v25.4.14...v25.5.24
v25.4.14 - Styling, Workflows and other fixes
Hi,
This is a small release to fix some of the outstanding styling issues and a workflow issue, where a newly created workflow won't trigger unless the trigger type is changed.
Best,
Jokob
What's Changed
- Update manager.py by @Tlaloc-Es in #1041
- Update DOCKER_COMPOSE.md by @LeoRX in #1045
New Contributors
- @Tlaloc-Es made their first contribution in #1041
- @LeoRX made their first contribution in #1045
Full Changelog: v25.4.1...v25.4.14