Une carte visuelle de votre réseau local et de vos conteneurs sans prise de tête
Quand un serveur domestique ou un poste de travail accumule une bonne dizaines de conteneurs, de VMs et de services de test, garder une trace de tout devient difficile. Finalement, vous vous surprenez à vous demander : quelle est l'adresse IP de la base de données en cours d'exécution, quels sont les ports exposés, et à quels réseaux Docker ce vieux worker est-il connecté ? Habituellement, vous devez ouvrir un terminal, faire un grep dans la sortie de docker inspect, lancer nmap, et assembler manuellement les informations dans votre tête.
Je suis récemment tombé sur Atlas, un projet open-source du développeur Karam Ajaj. Cet outil prend en charge la routine : il scanne les sous-réseaux locaux, récupère les détails des conteneurs via le socket Docker, et génère une carte réseau interactive directement dans le navigateur.
Ce qu'il y a sous le capot et comment ça fonctionne
L'architecture d'Atlas combine plusieurs composants familiers, conditionnés dans un seul conteneur :
- Le scanner est écrit en Go 1.22. Le binaire effectue des requêtes réseau de bas niveau via ARP et ping, interroge le socket Docker, et réalise un probing approfondi des ports ouverts. Toutes les découvertes sont stockées dans une base de données SQLite locale.
- Le backend fonctionne avec FastAPI. Il expose les hôtes découverts via une API REST, gère les sessions, et accepte les commandes pour lancer les scans.
- L'interface web est construite avec React, servie par NGINX, qui proxy également les requêtes API.
Cette stack fonctionne de manière autonome. Aucune configuration cron n'est nécessaire à l'intérieur du conteneur : le polling périodique des sous-réseaux est géré par des timers Go.
Fonctionnalités principales
Inspection approfondie de Docker
De nombreux outils similaires peinent lorsqu'un conteneur possède plusieurs interfaces réseau. Atlas suit chaque interface séparément. Si un conteneur a plusieurs IPs internes et adresses MAC, toutes apparaissent sur le graphe liées aux noms de réseaux spécifiques. L'utilitaire analyse également les métadonnées de l'image, tentant de déterminer le type de système d'exploitation.
Découverte des hôtes voisins
Atlas ne s'arrête pas à l'hôte local. La variable SCAN_SUBNETS vous permet de spécifier une liste de sous-réseaux séparés par des virgules, par exemple 192.168.1.0/24,10.0.0.0/24. Le scanner découvre les appareils disponibles, fingerprint l'OS, et vérifie les ports accessibles. Le même hôte visible depuis différentes cartes réseau se voit attribuer les labels d'interface correspondants.
Visualisation interactive
Le graphe réseau peut basculer entre les dispositions circulaire et hiérarchique. Si la vue graphique n'est pas pratique à un moment donné, un tableau d'hôtes standard est disponible avec tous les paramètres, filtres et recherche. L'interface est adaptée aux mobiles, vous pouvez donc vérifier l'état du réseau depuis votre téléphone.




Planification flexible via API
Les intervalles de vérification sont définis au démarrage, mais peuvent être modifiés à la volée sans redémarrer le conteneur. Des endpoints API dédiés gèrent cela :
# Проверить текущие интервалы
curl http://localhost:8888/api/scheduler/intervals
# Изменить частоту быстрого сканирования на 30 минут
curl -X PUT http://localhost:8888/api/scheduler/intervals/fastscan \
-H "Content-Type: application/json" \
-d '{"interval": 1800}'
Comment le déployer vous-même
La méthode la plus rapide pour l'essayer est d'exécuter l'image Docker prête à l'emploi. L'outil a besoin d'un accès au réseau de l'hôte et au socket du daemon :
docker run -d \
--name atlas \
--network=host \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
-v /var/run/docker.sock:/var/run/docker.sock \
-e ATLAS_UI_PORT='8888' \
-e ATLAS_API_PORT='8889' \
-e ATLAS_ADMIN_USER='admin' \
-e ATLAS_ADMIN_PASSWORD='change-me' \
-e SCAN_SUBNETS="192.168.1.0/24" \
keinstien/atlas:latest
Les flags NET_RAW et NET_ADMIN sont requis pour l'envoi de paquets de bas niveau lors du scan. Si aucun mot de passe admin n'est défini, l'authentification de l'interface est désactivée par défaut. Quand la sécurité est critique, définissez ATLAS_ADMIN_PASSWORD, après quoi l'interface web sera protégée par un écran de connexion et les endpoints API nécessiteront un bearer token.
Après le démarrage, l'interface web est disponible à http://localhost:8888, et la documentation Swagger interactive est à http://localhost:8888/api/docs.
À qui c'est destiné
Atlas s'intègre parfaitement dans les home labs, les infrastructures de petits bureaux, ou les serveurs staging dédiés où les environnements de test sont fréquemment créés et détruits. Le projet élimine le besoin de garder une carte mentale des adresses locales et vous aide à repérer un port ouvert oublié à temps.
Si vous voulez d'abord vous familiariser avec l'interface, l'auteur maintient une démo publique à https://atlasdemo.vnerd.nl/ avec le nom d'utilisateur admin et le mot de passe change-me. Le code source est publié sous licence MIT, vous pouvez donc adapter le projet en toute confiance pour vos propres scripts d'automatisation.
Projets similaires