--- title: WatchYourLAN created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, reseau, scanner, ip, go, beginner, homelab] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/aceberg/WatchYourLAN] --- # 📊 WatchYourLAN > **Le scanner réseau léger avec web GUI** : détecte qui est connecté sur votre LAN en temps réel. Idéal pour le homelab : voir les IPs, MAC, et hosts présents, même ceux qui n'apparaissent pas dans votre box. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | (GitHub) | | **GitHub** | [aceberg/WatchYourLAN](https://github.com/aceberg/WatchYourLAN) | | **License** | MIT | | **Langage** | Go | | **Étoiles GitHub** | 7 025 ⭐ | | **Dernière MAJ** | 2026-06-06 | | **Catégorie** | [[cat-monitoring|Monitoring]] | ## 📝 Description **WatchYourLAN** n'est pas un outil de monitoring de services classique : c'est un **scanner réseau ARP** qui vous dit **quelles machines sont actuellement connectées à votre réseau local**. Là où votre box internet ne montre que les baux DHCP actifs, WatchYourLAN scanne en continu les tables ARP et vous présente l'historique des connexions : qui s'est connecté, quand, avec quelle IP et quelle MAC. C'est l'outil parfait pour les **homelabeurs** qui veulent savoir : - Quels appareils sont actuellement sur le réseau (IoT, invités, intrus potentiels) - Quelles IPs ont été attribuées à quelles machines - Détecter un appareil inconnu (nouvelle MAC, nouvelle IP) - Surveiller la présence d'un serveur (est-ce qu'il reboote tout seul ?) L'interface est volontairement minimaliste : une page web qui liste les hosts connus et inconnus, avec date de dernière vue et bouton « alertes ». - ✅ **Scan ARP en continu** : intervalle configurable (1 min par défaut) - ✅ **Détection IP + MAC** : table des hôtes actifs - ✅ **Historique** : qui était connecté quand (last seen, first seen) - ✅ **Détection de nouveaux hôtes** : alerte quand un appareil inconnu apparaît - ✅ **Notifications** : Telegram, Gotify, Ntfy, Slack, Discord, Email, Webhook - ✅ **Web UI simple** : page HTML statique, lookup en JS - ✅ **Pas de base de données** : stockage fichier plat (JSON) - ✅ **Binaire Go statique** : ARM64, ARMv7, x86_64 — tourne sur Raspberry Pi - ✅ **Docker** multi-arch - ✅ **Config via fichier** (YAML) ou variables d'environnement **Public cible** : **homelabeurs et admins réseau** qui veulent **voir qui est sur le LAN** sans configurer un Nagios ou un NetBox complet. Si vous voulez scanner des sous-réseaux distants ou faire du port scanning, c'est pas le bon outil : partez sur [[app-zabbix]] ou des outils type nmap. ## 🚀 Installation ### Option 1 : Docker Compose ```yaml # docker-compose.yml version: '3.8' services: watchyourlan: image: aceberg/watchyourlan:latest container_name: watchyourlan restart: unless-stopped # network_mode: host est RECOMMANDÉ pour le scan ARP network_mode: host environment: - IFACE=eth0 - TZ=Europe/Paris - NOTIF_TG_CHATID=... - NOTIF_TG_TOKEN=... - GUI=YES volumes: - wyl-config:/config volumes: wyl-config: ``` > ⚠️ **Le mode `network_mode: host` est indispensable** : le scan ARP se fait via raw sockets, ce qui ne fonctionne pas avec le bridge Docker. Sur Synology/QNAP, prévoir un lancement direct du binaire. ### Option 2 : Binaire natif (Raspberry Pi, routeur, etc.) ```bash wget https://github.com/aceberg/WatchYourLAN/releases/latest/download/watchyourlan_0.7.0_Linux_arm64.tar.gz tar xzf watchyourlan_*.tar.gz cd WatchYourLAN ./watchyourlan -if eth0 -g ``` ## ⚙️ Configuration Initiale 1. **Identifier l'interface réseau** à scanner (`ip a` pour la trouver) 2. **Lancer WatchYourLAN** avec l'option `-if eth0` (ou `IFACE=eth0` en env) 3. **Accéder à l'UI** : `http://IP-DE-VOTRE-HOST:8847` 4. **Visiter l'UI** pour voir la liste des hosts détectés 5. **Configurer les notifications** : copier `config/gotify.env` et adapter 6. **Tester le scan** : redémarrer un appareil du LAN et vérifier qu'il est marqué « up » ## 🔄 Alternatives ### Open Source - **arpwatch** — Le grand-père, CLI, log mail uniquement - **NetBox** — IPAM complet (beaucoup plus lourd, source de vérité) - **Pi.Alert** (fork de WatchYourLAN enrichi) — Plus de features - **NetAlertX** — Plus avancé (notifications multiples, web UI plus riche) - **Nmap** + script — Pour du scan ponctuel, pas continu ### Comparaison WatchYourLAN vs autres | Critère | WatchYourLAN | arpwatch | NetBox | Pi.Alert | | :--- | :--- | :--- | :--- | :--- | | Self-hosted | ✅ | ✅ | ✅ | ✅ | | Web UI | ✅ | ❌ | ✅✅ | ✅ | | Historique | ✅ | ✅ | ✅ | ✅✅ | | Alertes | ✅ | ⚠️ mail | ❌ | ✅✅ | | Setup | 5 min | 10 min | 30 min | 5 min | | Empreinte | ~10 Mo | < 1 Mo | 1 Go+ | ~50 Mo | | IPAM | ❌ | ❌ | ✅✅ | ⚠️ | | Binaire Go | ✅ | ❌ (C) | ❌ (Python) | ❌ (Python) | **Verdict** : pour un **simple « qui est sur mon réseau »** avec un binaire Go qui tourne sur n'importe quoi, WatchYourLAN est imbattable. Pour de l'**IPAM professionnel** ou de l'**inventaire complet**, passez sur NetBox. ### Propriétaires (ce que WatchYourLAN remplace) - **Fing** (mobile, freemium) — Le même usage en app mobile - **NetSpot** (Windows) — Scanner Wi-Fi commercial - **Solarwinds IPAM** (enterprise, $$$) - **PRTG Network Monitor** (freemium) ## 🔐 Sécurité - **Pas d'auth par défaut** : à protéger par un reverse proxy ([[app-traefik]]) ou un tunnel SSH - **HTTPS recommandé** via [[app-traefik]] - **Web UI statique** : pas de session, pas de cookie - **Notifications** : tokens stockés en variables d'environnement (volatiles par défaut) - **Scan ARP** : passif, ne génère pas de trafic intrusif sur le réseau ## 📚 Ressources - [GitHub aceberg/WatchYourLAN](https://github.com/aceberg/WatchYourLAN) - [Wiki / FAQ](https://github.com/aceberg/WatchYourLAN/wiki) - [Releases multi-arch](https://github.com/aceberg/WatchYourLAN/releases) ## Pages Liées - [[cat-monitoring]] — Catégorie Monitoring - [[app-netalertx]] — Alternative plus riche (Python) - [[app-zabbix]] — Monitoring réseau pro - [[app-traefik]] — Reverse proxy HTTPS - [[observabilite]] — Concept d'observabilité - [[checklist-monitoring-minimal]] — Checklist de démarrage