Sign inSign up

fxerkan/my_network_scanner

By fxerkan

Updated 18 days ago

See every device on your home network - including the Zigbee, Z-Wave, Matter and BLE ones an IP scan

Image
Networking
Monitoring & observability
0

10K+

fxerkan/my_network_scanner repository overview

MyNeS — My Network Scanner

Docker Pulls Docker Image Size GitHub Release License: MIT

See every device on your home network — including the ones an IP scan cannot find.

MyNeS device inventory

An IP scan of my LAN found 29 devices. There were about 60. Everything on Zigbee and Z-Wave has no IP address, so an IP scan is blind to it — and the inventory was never real.

MyNeS discovers devices over ARP, mDNS/Bonjour, SSDP/UPnP, Matter, Bluetooth LE and MQTT. That last one is the trick: reading retained Zigbee2MQTT / Z-Wave JS / Tasmota / Home Assistant discovery topics is the only way to see a radio device that has no IP at all. Everything lands in one inventory.

No cloud, no account, no telemetry. Everything stays on your LAN.


Start in 60 seconds

1. Save this as docker-compose.yml:

services:
  mynes:
    image: fxerkan/my_network_scanner:latest
    container_name: mynes
    # Host networking is what lets it actually see the LAN. See the note below.
    network_mode: host
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - ./data:/app/data
      - ./config:/app/config
      # Optional, Linux only — turns on Bluetooth LE discovery.
      - /run/dbus/system_bus_socket:/run/dbus/system_bus_socket
    environment:
      MYNES_PORT: 5883
      MYNES_PASSWORD: ""        # auto-generated on first start if empty
      MYNES_MQTT_HOST: ""       # optional — reveals Zigbee / Z-Wave / Tasmota devices
      HA_URL: ""          # optional — Home Assistant integration
      HA_TOKEN: ""
    restart: unless-stopped

2. Start it:

docker compose up -d

3. Open http://<your-server-ip>:5883 and press Scan Network.

That's it — no account, no setup wizard. The first scan takes a minute or two on a busy LAN.

Prefer a single docker run?
docker run -d \
  --name mynes \
  --network host \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  -v "$(pwd)/data:/app/data" \
  -v "$(pwd)/config:/app/config" \
  -e MYNES_PORT=5883 \
  --restart unless-stopped \
  fxerkan/my_network_scanner:latest

What you get

🔎 Finds what IP scans missARP, mDNS/Bonjour, SSDP/UPnP, Matter, Bluetooth LE, MQTT. Zigbee bulbs behind Zigbee2MQTT and Z-Wave sensors behind Z-Wave JS appear next to your laptops.
🏷️ Names them for you1000+ entry OUI vendor database, hostname patterns, port signatures, automatic device types (router, NAS, camera, console, smart plug…). Rules are editable in the UI.
🗺️ Five ways to lookCard grid, table, network topology, force-directed graph, and a floor plan you can pin devices onto.
🔔 Tells you when things changeRule-based alerts on new, missing or changed devices — Web Push (self-hosted, no relay), webhook, e-mail or Home Assistant.
🏠 Two-way Home AssistantMQTT Discovery pushes every device in as an entity; the REST/WebSocket side pulls HA's registry back and diffs it against what is actually on the wire.
🔬 Optional deep divenmap port/service detection, SSH/SNMP interrogation with credentials stored encrypted (Fernet + PBKDF2-HMAC-SHA256, 100k iterations).
🌍 Turkish and EnglishLight and dark themes, installable as a PWA on your phone.

Optional pieces degrade gracefully: a missing Bluetooth adapter or an unreachable MQTT broker disables that one source, never the scan.


Why host networking and NET_RAW?

MyNeS sends raw ARP frames and listens for mDNS/SSDP multicast. Both require the host network namespace — from a bridge network it can only see the bridge, not the LAN.

  • NET_RAW lets it build ARP frames.
  • NET_ADMIN lets it read interface state.
  • It does not run as root (USER scanner, uid 1000) and it is not privileged.
  • Without these capabilities it does not fail: it degrades to a ping sweep plus the OS ARP cache and finds fewer devices.

MyNeS is a scanner. Only scan networks you own.


Something not working?

SymptomWhat to do
Far fewer devices than expectedOpen GET /api/capabilities — it lists exactly which protocol backends and privileges are missing, and why. That is the first thing to read, always.
Running Docker Desktop (macOS/Windows)Host networking is not fully supported there. Drop network_mode: host, use ports: ["5883:5883"], and accept reduced discovery.
No Zigbee / Z-Wave devicesSet MYNES_MQTT_HOST (plus username/password) to your broker. Those devices have no IP; MQTT is the only way to see them.
No Bluetooth LE devicesMount /run/dbus/system_bus_socket into the container and make sure bluetoothd is running on the host. MyNeS scans BLE through the host's BlueZ, so it needs no USB passthrough and no privileged mode — but without that socket it cannot reach the adapter, and /api/capabilities will say so. Linux only: Docker Desktop VMs have no Bluetooth stack to borrow.
Port 5883 already takenSet MYNES_PORT to something else.
Is it alive?The image ships a health check against GET /api/version.

Environment variables

VariableDescriptionDefault
MYNES_PORTWeb interface port5883
MYNES_PASSWORDMaster password encrypting stored device credentialsauto-generated
MYNES_MQTT_HOSTMQTT broker host — reveals Zigbee / Z-Wave / Tasmota devicesempty
MYNES_MQTT_USERNAMEMQTT usernameempty
MYNES_MQTT_PASSWORDMQTT passwordempty
HA_URLHome Assistant base URL, e.g. http://homeassistant.local:8123empty
HA_TOKENHome Assistant long-lived access tokenempty
MYNES_CONFIG_DIR / MYNES_DATA_DIROverride the config/data paths/app/config, /app/data
TZContainer timezoneUTC

HA_URL / HA_TOKEN are accepted as bare aliases. LAN_SCANNER_PASSWORD still works as a legacy alias for MYNES_PASSWORD.

Volumes

PathContents
/app/dataDevice inventory, scan history, alerts
/app/configConfiguration and encrypted credentials

Back up both and you have backed up everything.

Tags and architectures

Every release publishes latest, a MAJOR.MINOR tag and the exact MAJOR.MINOR.PATCH (e.g. 1.4 and 1.4.2) — built for linux/amd64 and linux/arm64, so a Raspberry Pi or Orange Pi works without changes.


More screenshots

DiscoveryTopology
DiscoveryTopology
AlertsHistory
AlertsHistory

MIT licensed. Made by fxerkan.

Tag summary

Content type

Image

Digest

sha256:17ca61ea1

Size

105.3 MB

Last updated

18 days ago

docker pull fxerkan/my_network_scanner