IoT Sentinel

● Ativo

Plataforma self-hosted para catalogar, organizar e monitorar dispositivos IoT e infraestrutura de rede.

Docker NestJS Next.js Python MongoDB Redis nmap

IoT Sentinel

Plataforma open-source e self-hosted para catalogar, organizar e monitorar dispositivos IoT e infraestrutura de rede doméstica e corporativa.

O problema

Quem tem um homelab ou gerencia infraestrutura de IoT conhece o caos: câmeras IP, PLCs, switches gerenciáveis, Raspberry Pis espalhados por locais diferentes. Com o tempo, você perde o controle de tudo:

  • Qual dispositivo tem qual IP agora (DHCP muda tudo sem avisar)
  • Onde você anotou as credenciais de acesso (planilha? post-it? memória?)
  • Se aquela câmera no galpão B está realmente online
  • O que exatamente existe na VLAN 192.168.20.0/24

Sem um inventário centralizado, cada troubleshooting vira uma investigação arqueológica.

A solução

Uma plataforma web self-hosted que resolve isso com scanning automático via nmap, inventário organizado por locais/redes/VLANs, monitoramento de status em tempo real e credenciais criptografadas. Tudo rodando em containers Docker — um docker compose up -d e pronto.

Funcionalidades

  • Scan de rede automático via nmap (com mock mode automático no Docker Desktop)
  • Hierarquia Local → Rede/VLAN (CIDR) → Dispositivo
  • Identidade estável via MAC address (sobrevive a mudanças de DHCP)
  • 19 tipos de device pré-definidos (router, câmera, PLC, switch, etc.) com ícones e cores
  • Credenciais criptografadas com AES-256-GCM, acessíveis apenas sob demanda
  • Monitoramento real-time via WebSocket com health checks periódicos
  • Histórico de status e cálculo de uptime (24h/7d/30d)
  • Regras de notificação (status change, offline duration, new discovery)
  • Grupos transversais com ícones customizados
  • Channels para modelar dispositivos multi-output (PLCs com 26+ saídas)
  • Network map com visualização em topologia estrela (React Flow)
  • Backup/restore com senha e re-encriptação de credenciais
  • Setup wizard no primeiro boot (criação de admin + idioma)
  • i18n completo pt-BR e English (via next-intl)
  • Dark theme inspirado em Grafana/Datadog

Arquitetura

┌─────────────────────────────────────────────────────┐
│                     Browser                          │
└───────────────────────┬─────────────────────────────┘
                        │ HTTP / WebSocket

┌─────────────────────────────────────────────────────┐
│  Frontend  (Next.js 14, App Router, Tailwind v4)     │
│  :9000  →  next-intl i18n (pt-BR / en)               │
└───────────────────────┬─────────────────────────────┘
                        │ REST API / WS

┌─────────────────────────────────────────────────────┐
│  API  (NestJS 10, TypeScript)                        │
│  :9001  →  /api/v1/*   Swagger: /api/docs            │
└────────┬────────────────────────┬───────────────────┘
         │                        │
         ▼                        ▼
┌─────────────────┐    ┌─────────────────────────────┐
│  MongoDB  :9017 │    │  Redis  :9079               │
│  (persistência) │    │  (filas Bull + pub/sub)      │
└─────────────────┘    └──────────────┬──────────────┘
                                       │ Bull jobs

                       ┌─────────────────────────────┐
                       │  Worker  (Python 3.11, nmap) │
                       │  network_mode: host           │
                       │  scan + health check          │
                       └─────────────────────────────┘

Quick Start

# 1. Baixar o compose file
curl -O https://raw.githubusercontent.com/mauricioj/iot-sentinel/main/docker-compose.prod.yml

# 2. Subir tudo
docker compose -f docker-compose.prod.yml up -d

# 3. Acessar
# http://localhost:9000 → Setup wizard → Criar admin → Pronto

MongoDB e Redis já estão inclusos. Zero dependências externas.

Série de posts

Documentei todo o projeto em uma série de 8 posts:

  1. O Caos dos Dispositivos IoT
  2. Instalação e Setup
  3. Locais, Redes e VLANs
  4. Primeiro Scan
  5. Registrando e Organizando
  6. Credenciais e Channels
  7. Monitoramento Real-Time
  8. Dashboard, Network Map e Backup