Small, easy and silent network monitor application for your home-network
5.6K
Passive discovery, minimal footprint — sees everything, disturbs almost nothing.
SilentMap discovers devices passively — it listens to the traffic your network already generates (ARP, mDNS, DHCP) and never probes unknown hosts. Once a device is known, it optionally sends lightweight ARP or ICMP requests to track online/offline state. It draws an interactive topology map and alerts you when something unexpected appears or a priority device goes offline.
Passive discovery. No agent to install. Minimal wire footprint.
Single binary · Embedded SQLite · Zero external dependencies · Docker-native

| Devices | Alerts |
|---|---|
![]() | ![]() |
| Event Log | Settings |
|---|---|
![]() | ![]() |
docker run -d \
--name silentmap \
--network host \
--cap-add NET_RAW \
-v silentmap-data:/data \
-e TZ=Europe/Zurich \
fischermanch/silentmap:latest
Open http://localhost:8080 — that's it.
Why
--network host? SilentMap needs to see raw ARP, mDNS and DHCP traffic on your LAN segment. Host networking is the only way to get that inside a container.Why
--cap-add NET_RAW? Grants packet-capture capability without running the container as root.
Create a docker-compose.yml file:
services:
silentmap:
image: fischermanch/silentmap:latest
container_name: silentmap
restart: unless-stopped
network_mode: host
cap_add:
- NET_RAW
volumes:
- silentmap-data:/data
environment:
- TZ=Europe/Zurich
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
volumes:
silentmap-data:
Start:
docker compose up -d
docker compose pull
docker compose up -d
Your device inventory, labels, groups and settings are stored in the named volume and survive every update.
| Path in container | Purpose |
|---|---|
/data | SQLite database, settings, logs |
Mount a named volume (silentmap-data:/data) or a host path (/opt/silentmap/data:/data) — your choice.
| Variable | Default | Description |
|---|---|---|
TZ | UTC | Timezone for timestamps in the UI and logs |
SILENTMAP_INTERFACE | auto | Network interface to listen on |
SILENTMAP_LISTEN | 0.0.0.0:8080 | Web UI bind address |
All settings can also be set in a silentmap.yaml config file placed in the /data volume.
Place silentmap.yaml in your /data volume to override defaults:
interface: "" # empty = auto-detect
web:
listen: "0.0.0.0:8080"
collectors:
ping:
enabled: true
targets: "priority" # ICMP-ping only devices marked as Priority
interval: 5m
alerts:
channels:
ntfy:
enabled: true
url: "https://ntfy.sh/your-topic"
discord:
enabled: false
webhook_url: ""
routing:
critical: ["ntfy", "discord"]
high: ["ntfy"]
info: []
Full configuration reference: silentmap.example.yaml on GitHub
/health · /api/stats · /api/topology · /api/exportMIT — free to use, modify and distribute.
Content type
Image
Digest
sha256:dacaa8e07…
Size
29.2 MB
Last updated
28 days ago
docker pull fischermanch/silentmap