6.2 KiB
title: Scanopy created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, networking, network-scanner, network-discovery, typescript, dashboard] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=networking, https://github.com/scanopy/scanopy]
🔍 Scanopy
Scanner réseau self-hosted moderne avec dashboard web, conçu pour visualiser tous les hôtes de votre LAN, découvrir de nouveaux appareils et suivre leur empreinte (ports, services, OS). L'alternative moderne à Nmap, versionnée et graphique.
| Métadonnée | Valeur |
|---|---|
| Site web | scanopy.com |
| GitHub | scanopy/scanopy |
| License | AGPL-3.0 |
| Langage | TypeScript (SvelteKit) + Rust |
| Étoiles | 2 410 ⭐ |
| Dernière MAJ | 2026-05-15 |
| Catégorie | cat-networking |
Description
Scanopy est un scanner réseau passif et actif livré avec une interface web moderne (SvelteKit). Il combine la puissance de moteurs comme Nmap et arp-scan avec une couche de persistance, de scheduling et de visualisation. Concrètement : Scanopy balaye périodiquement votre sous-réseau, identifie chaque hôte (IP, MAC, vendor, hostname, OS probable), catalogue ses ports ouverts et services, puis présente tout ça dans un dashboard propre, avec historique et alertes.
L'architecture distingue un daemon Rust (rapide, low-level) qui fait le scan réel, d'une UI SvelteKit qui pilote les scans, affiche les résultats, et historise. La découverte se fait par plusieurs méthodes : ARP scan (couche 2, le plus fiable en LAN), ICMP ping sweep, mDNS/Bonjour, SNMP, TCP SYN scan sur des plages courantes. Scanopy sait aussi détecter les nouveaux appareils (utile pour repérer un device IoT non autorisé sur le réseau) et détecter les changements (un hôte qui disparaît, un port qui s'ouvre).
Positionnement : entre Nmap (CLI, pas d'historique, pas de dashboard) et LibreNMS / Observium (SNMP-centric, plus orienté infrastructure réseau d'entreprise). Scanopy vise explicitement l'homelab et le « small office » qui veut une vue d'ensemble claire sans la complexité d'un NMS complet.
Installation
Docker Compose (recommandé)
# docker-compose.yml
services:
scanopy:
image: ghcr.io/scanopy/scanopy:latest
container_name: scanopy
restart: unless-stopped
network_mode: host # requis pour ARP scan et capture bas niveau
cap_add:
- NET_RAW # permet ARP/ICMP raw sockets
- NET_ADMIN
environment:
- SCANOPY_SECRET=CHANGEME_RANDOM_64CHARS
- SCANOPY_LISTEN=0.0.0.0:8080
- SCANOPY_DB_PATH=/data/scanopy.db
- SCANOPY_SUBNETS=192.168.1.0/24,192.168.10.0/24
- SCANOPY_SCAN_INTERVAL=300 # secondes
volumes:
- scanopy-data:/data
volumes:
scanopy-data:
⚠️
network_mode: hostest nécessaire pour que le scanner voie le réseau physique. Sanscap_add: NET_RAW, ARP scan échoue silencieusement.
Installation manuelle (depuis les sources)
git clone https://github.com/scanopy/scanopy.git
cd scanopy
# Back-end Rust
cargo build --release
# Front-end SvelteKit
cd web && pnpm install && pnpm build
# Lancer
./target/release/scanopy serve
Configuration
Configuration par variables d'environnement ou fichier scanopy.toml :
[server]
listen = "0.0.0.0:8080"
secret = "GENERATE_64_CHARS_RANDOM"
[database]
path = "/data/scanopy.db"
[discovery]
subnets = ["192.168.1.0/24", "10.0.0.0/24"]
scan_interval_seconds = 300
methods = ["arp", "icmp", "mdns", "tcp_syn"]
[webhooks]
new_host_url = "https://ntfy.example.com/new-host"
new_host_token = "tk_xxxxx"
Le dashboard expose :
- Hosts : liste exhaustive, filtres par vendor, OS, subnet
- Diff : changements entre deux scans (nouvel hôte, port ouvert)
- Schedule : scans manuels + cron
- API REST : pour intégration avec app-grafana ou un bot Telegram
Alternatives
Open Source
- Nmap + Ndiff — CLI, sans UI, sans historisation
- LibreNMS — NMS complet (SNMP-centric), plus complexe
- Observium — Libre + version pro, PHP
- Netbox — Source de vérité réseau (DCIM), pas un scanner
- OpenNMS — Java, niveau enterprise
- arp-scan — CLI minimaliste, couche 2
- Angry IP Scanner — GUI Java multi-plateforme
Propriétaire (ce que Scanopy remplace)
- Fing (mobile) — Scanner réseau propriétaire avec freemium
- Advanced IP Scanner (Famatech) — Windows-only, gratuit mais closed
- Auvik / Domotz — NMS MSP payants
- SolarWinds Network Performance Monitor — Enterprise
- ManageEngine OpUtils — Enterprise
Sécurité
- Restreindre l'accès UI : Scanopy expose des infos sensibles (MAC, vendor, topologie). Mettre derrière un reverse-proxy avec auth (Authelia/Authentik) ou VPN.
- LAN-only : ne JAMAIS exposer sur Internet ; les informations泄露 facilitent un pivot.
- Scan passif vs actif : activez uniquement les méthodes strictement nécessaires. TCP SYN scan peut être détecté par un IDS/IPS (app-crowdsec peut se déclencher sur un scan interne).
- Sécuriser l'API : secret fort de 64 chars, rotation régulière.
- Pas de scan Internet : Scanopy est conçu pour le LAN ; scanner Internet est illégal et inutile.
- Notifications : webhook ntfy/Shoutrrr sur nouvel hôte = repérage rapide d'un appareil inconnu.
- Compliance : dans un contexte pro, obtenir l'accord écrit avant d'auditer un réseau qui n'est pas le vôtre.
Ressources
Pages Liées
- cat-networking — Catégorie parente
- cat-monitoring — Complément (Grafana)
- app-crowdsec — IDS pour alerter sur scans suspects
- app-netbox — DCIM source de vérité
- app-grafana — Visualisation
- recettes-docker-compose
- reverse-proxy-traefik — Pour sécuriser l'UI