DEV Community

Ivan
Ivan

Posted on

Monitor de Conexões dashboard

Monitoramento de Conexões de Rede com Node.js, PHP e SQLite

Se você gerencia um servidor, sabe como é importante monitorar as conexões de rede para identificar acessos suspeitos ou anormais. Pensando nisso, desenvolvi um microserviço simples e funcional para mapear conexões ativas, exibir geolocalizações e permitir bloqueios diretamente via interface web. Tudo com tecnologias leves: Node.js, PHP e SQLite.

O que esse projeto faz?

  • Um dashboard web para visualizar conexões ativas (IPs, portas, localização geográfica).
  • Um mapa interativo com os IPs conectados.
  • Ação rápida para bloquear/desbloquear IPs usando iptables.
  • Cache local das geolocalizações com SQLite para performance.
  • Backend seguro, sem expor o Node.js para a internet.

Arquitetura

Backend (Node.js):

  • Usa netstat ou ss para coletar as conexões ativas.
  • Envia esses dados para a interface via API local (http://127.0.0.1:3033).
  • Usa ip-api.com para obter geolocalização dos IPs, salvando os resultados em cache (ip_cache.sqlite).
  • Bloqueia/desbloqueia IPs com iptables.

Frontend (PHP):

  • Um proxy leve usando cURL, que consome as rotas do backend local.
  • Interface em HTML/CSS/JS servida via index.php e mapa.php.
  • Sem problemas de CORS e com total isolamento entre frontend e backend.

Como usar

1. Instale as dependências

npm install
Enter fullscreen mode Exit fullscreen mode

2. Inicie o serviço

node index.js
Enter fullscreen mode Exit fullscreen mode

O serviço ficará ouvindo em http://127.0.0.1:3033.

3. Configure seu servidor web

Aponte a raiz do Apache ou Nginx para o diretório public/ do projeto.

Certifique-se de que o PHP tenha a extensão curl habilitada.

4. Acesse via navegador

http://localhost/        # Ou o IP do seu servidor
Enter fullscreen mode Exit fullscreen mode

Principais arquivos

  • index.js: Serviço Node.js que coordena as conexões, IPs e ações.
  • mapa.php: Interface gráfica com mapa interativo.
  • ip_cache.sqlite: Base local de IPs e geolocalizações.
  • package.json: Dependências e descrição do projeto.

Requisitos do ambiente

  • Node.js 16+
  • PHP com curl
  • Ferramentas: netstat ou ss, iptables
  • SQLite

Exemplo de visualização

A interface mostra algo assim:

  • IP: 203.0.113.42
  • Localização: 🇩🇪 Frankfurt, DE
  • Status: 🔓 ou 🔒 (bloqueado)
  • Ações: botão para bloquear/desbloquear diretamente

🔐 Segurança

O backend Node.js não é exposto publicamente. Todo acesso acontece via proxy PHP, o que reduz vetores de ataque e elimina problemas de CORS.


Se você precisa de uma solução leve, funcional e extensível para monitorar conexões no seu VPS, esse projeto pode te ajudar. O código está disponível para personalização e pode ser facilmente expandido com logs, alertas, ou até integração com Telegram ou n8n.

🔗 Repositório: https://github.com/ivanrochacardoso/ip-map-dashboard

Feedbacks e PRs são bem-vindos!

Top comments (0)