In this video, I walk through how to self-host NetAlertX, an open-source network discovery and monitoring tool that discovers devices on your network, even some your firewall might miss. Many plugins available to enrich data and you can get alerts when something changes.
Chapters
00:00 Do you know what’s on your network?
01:17 What Is and why use NetalertX
03:18 NetalertX Docker Compose Setup
03:42 Configuring NetalertX Networking
05:58 Running and Scheduling Network Discovery Scans
09:00 NetalertX Plugins
09:38 UniFi Plugin
10:33 Discovered Devices and Monitoring
13:00 Manual and Auto NMAP Scans
14:50 Import Export and Maintenance
In general you can run as many containers as you want with enough resources available.
Do note that running a tool like this and allow it to access multiple networks/vlans it could require additional network configuration which could conflict with your Kasm installation.
I have it deployed via Docker and it’s scanning everything on the current VLAN. I’m trying to get it to scan my other VLANs. I have pfSense and on the VLAN that I wanted scanned, I have this rule:
Screenshot 2025-06-09 at 08-42-42 TheWall.jrfam.net - Firewall Rules LAN
It’s not discovering. I’m not sure if the port is right, that’s the web interface port.
I have the question, trying to discover systems on different VLANs. I checked and found I could ping other systems on different vlans from the nextalertx container but those systems are not discovered by nextalertx.
Depends on what you mean by tagging. The switch port would need to be in every vlan/subnet you have. Next step, the host connected to that port needs to be configured with an ip address in each and every network.
If that device gets compromised, the attacker will have access to all your networks.
A macvlan in Docker will not solve that alone. You still need all what I mentioned in the other comment. Switch and host need to have a leg in each of your networks. You don’t want that!
If you did all that, then you can use containers with macvlan to give that container a real ip from the subnet. Typically you use this when you want the container directly addressable without that container to host port mapping.
That tool is maybe good for someone with a single flat network. For people with a proper network infrastructure such a tool should have a design with a central UI server and then you can for example deploy agents in each subnet. The agents report their data to the central server for viewing and management.
That would be much more secure than building a device that basically has a leg in each subnet.
This bit is still very confusing. This is in a VM on XCP-NG.
I treat this as a normal vlan. Its passing untagged frames from the systems perspective but of course my hypervisor is connected to Layer2 throughout.
Because its not covered at all in the video, i assume the VM needs to tag its own packets instead of the Hypervisor doing it? Not really clear here…And others had the same question. Shame this was glossed over completely in the video as scanning other networks is kinda the point.
edit: Figured it out. If you are running XCP-NG, attach multiple VIFs to your VM for each VLAN you want it to have access to. Then run “ip link show” on your VM (if its Linux). You should see those new interfaces. Then configure DHCP on each one - i had to configure a netplan - and thats it…done…
edit: adding multiple VIFs doesnt seem to help NetAlertX to scan multiple subnets. Whatever Tom did in the video to get his VM accessible to multiple vlans at Layer 2 (Not Layer3 we’re not routing) i have no idea. For now, NetAlert X works only on a single vlan.
I did not gloss over that, as I state at the 3:50 mark in the video where I show how to setup the networking.
For some more clarity: If you are running on bare metal then make sure the system is attached to a trunk port with access to all the VLANs you want to attach to. If you are running in XCP-ng as I am, make sure the VIF is able to access all VLANs.
@LTS_Tom Just need a bit of guidance here. In your VM, are you using multiple VIFs (which i dont believe you are doing based on the video) or did you set up trunking in the Debian system?
It seems you are trunking that one interface but i guess i want to know who is doing the vlan tagging? The Virtual Machine i assume?
Can you share just the snippet of your config? Just the network piece.
“If you are running in XCP-ng as I am, make sure the VIF is able to access all VLANs.”
Here is my VIF…How do i make this talk to multiple vlans?