Initial vault setup
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user