Um mapa visual da sua rede local e containers sem complicação
Quando um servidor caseiro ou estação de trabalho acumula algumas dezenas de containers, VMs e serviços de teste, acompanhar todos eles se torna difícil. Eventualmente você se pega perguntando: qual é o IP do banco de dados que está rodando agora, quais portas estão expostas, e a qual rede Docker aquele worker antigo está conectado? Normalmente você precisa abrir um terminal, fazer grep na saída do docker inspect, rodar nmap, e manualmente montar as informações na sua cabeça.
Recentemente encontrei o Atlas, um projeto open-source do desenvolvedor Karam Ajaj. Esta ferramenta assume a rotina: escaneia sub-redes locais, puxa detalhes dos containers via socket Docker, e renderiza um mapa de rede interativo direto no navegador.
Como funciona por baixo dos panos
A arquitetura do Atlas combina vários componentes familiares, empacotados em um único container:
- O scanner é escrito em Go 1.22. O binário realiza requisições de rede de baixo nível via ARP e ping, consulta o socket Docker, e faz uma varredura profunda das portas abertas. Todos os achados são armazenados em um banco de dados SQLite local.
- O backend roda em FastAPI. Ele serve os hosts descobertos via API REST, gerencia sessões, e aceita comandos para iniciar o escaneamento.
- A interface web é construída com React, servida por NGINX, que também faz proxy das requisições da API.
Esta stack opera de forma autônoma. Não é necessário configurar cron dentro do container: o polling periódico das sub-redes é tratado por timers em Go.
Principais funcionalidades
Inspeção profunda do Docker
Muitas ferramentas similares tropeçam quando um container tem múltiplas interfaces de rede. O Atlas rastreia cada interface separadamente. Se um container tem múltiplos IPs internos e endereços MAC, todos aparecem no grafo vinculados aos nomes de rede específicos. O utilitário também parseia metadados da imagem, tentando determinar o tipo de sistema operacional.
Descoberta de hosts vizinhos
O Atlas não para no host local. A variável SCAN_SUBNETS permite especificar uma lista separada por vírgulas de sub-redes, por exemplo 192.168.1.0/24,10.0.0.0/24. O scanner descobre dispositivos disponíveis, faz fingerprint do SO, e verifica portas acessíveis. O mesmo host visível a partir de diferentes adaptadores de rede é rotulado com as labels de interface correspondentes.
Visualização interativa
O grafo de rede pode ser alternado entre layouts circular e hierárquico. Se a visualização gráfica não for conveniente em um dado momento, uma tabela padrão de hosts está disponível com todos os parâmetros, filtros e busca. A interface é amigável para mobile, então você pode verificar o status da rede do seu celular.




Agendamento flexível via API
Os intervalos de verificação são definidos na inicialização, mas podem ser alterados em tempo real sem reiniciar o container. Endpoints dedicados da API tratam disso:
# Проверить текущие интервалы
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}'
Como fazer o deploy você mesmo
A forma mais rápida de experimentar é rodar a imagem Docker pronta. A ferramenta precisa de acesso à rede do host e ao socket do 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
As flags NET_RAW e NET_ADMIN são necessárias para enviar pacotes de baixo nível durante o escaneamento. Se nenhuma senha de admin for definida, a autenticação da UI é desabilitada por padrão. Quando a segurança é crítica, defina ATLAS_ADMIN_PASSWORD, após o que a interface web será protegida por uma tela de login e os endpoints da API vão exigir um bearer token.
Após a inicialização, a interface web está disponível em http://localhost:8888, e a documentação interativa do Swagger está em http://localhost:8888/api/docs.
Para quem é
O Atlas se encaixa perfeitamente em home labs, infraestruturas de pequenos escritórios, ou servidores staging dedicados onde ambientes de teste são frequentemente criados e destruídos. O projeto elimina a necessidade de manter um mapa mental de endereços locais e ajuda você a identificar uma porta aberta esquecida a tempo.
Se você quer ter uma ideia da interface primeiro, o autor mantém uma demo pública em https://atlasdemo.vnerd.nl/ com usuário admin e senha change-me. O código fonte é liberado sob licença MIT, então você pode adaptar o projeto com confiança para seus próprios scripts de automação.
Projetos relacionados