Files
2026-06-09 18:40:21 +02:00

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: 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)

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