--- 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](https://scanopy.com) | | **GitHub** | [scanopy/scanopy](https://github.com/scanopy/scanopy) | | **License** | AGPL-3.0 | | **Langage** | TypeScript (SvelteKit) + Rust | | **Étoiles** | 2 410 ⭐ | | **Dernière MAJ** | 2026-05-15 | | **Catégorie** | [[cat-networking\|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é) ```yaml # 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: host` est nécessaire pour que le scanner voie le réseau physique. Sans `cap_add: NET_RAW`, ARP scan échoue silencieusement. ### Installation manuelle (depuis les sources) ```bash 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` : ```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 - [Site officiel](https://scanopy.com) - [Documentation](https://docs.scanopy.com) - [GitHub](https://github.com/scanopy/scanopy) - [Démo en ligne](https://demo.scanopy.com) - [Discord communautaire](https://discord.gg/scanopy) ## Pages Liées - [[cat-networking|Networking]] — Catégorie parente - [[cat-monitoring|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|Recettes Docker Compose]] - [[reverse-proxy-traefik|Reverse proxy Traefik]] — Pour sécuriser l'UI