Test MQTT
Volver a proyectos

Test MQTT

Python FastAPI PostgreSQL Docker Tailwind CSS WebSockets paho-mqtt v2

Autor: Gilberto Castillo
Stack: Python · FastAPI · PostgreSQL · Docker · Tailwind CSS · WebSockets · paho-mqtt v2 (MQTT v3.1.1 + v5)
Estado: Producción · URL: https://test-broker.gilman.pro

Herramienta web para probar y depurar cualquier broker MQTT desde el navegador, sin instalar herramientas CLI — en producción, con usuarios temporales autogestionados por correo.


📊 En cifras

Métrica Valor
Plan de construcción 100% (75/75 tareas)
Protocolos MQTT 5 (TCP · TLS · mTLS · WS · WSS)
Versiones de protocolo 2 (MQTT v5 + v3.1.1)
Formatos de publicación 4 (texto, JSON, Base64, hexadecimal)
Base de datos PostgreSQL 16 (producción) · SQLite (dev)
Usuarios temporales Validez 24 h, límites de clientes/conexiones editables por admin
Protecciones Rate limit (3/h por IP, 1/día por email) · anti-SSRF · honeypots · pentest externo

🎬 Demo en vivo

El proyecto incluye una demo navegable del panel de administración con datos de ejemplo: gestión de usuarios, reportes y estadísticas, y archivado de correos. Se recorre igual que la aplicación real, pero sin tocar datos ni servicios reales.

  • URL: https://test-broker.gilman.pro/demo/login.html
  • Acceso: super / super123 (Super Admin) — las credenciales también se muestran en la propia pantalla de login
  • El panel permite gestionar los usuarios de test (temporales y comunes) y entrar al tester como uno de ellos (vista test_*)

🎟️ Solicitar acceso (/solicitar)

Cualquiera puede probar el tester real sin esperar a un administrador: la página pública /solicitar entrega credenciales temporales por autoservicio.

  • URL: https://test-broker.gilman.pro/solicitar
  • Cómo funciona: ingresas tu correo → el sistema crea un usuario temporal y te envía las credenciales por email (SMTP) → inicias sesión y creas tus clientes MQTT
  • Usuarios temporales: validez 24 h con límites controlados (clientes guardados y conexiones simultáneas, editables por el admin) y contraseñas autogeneradas
  • Protegido contra abuso: rate limit anti-spam (3 solicitudes/h por IP, 1/día por correo, 7 días de bloqueo) + honeypot que registra IPs

Probar el broker en producción (broker.gilman.pro)

Este tester se conecta a cualquier broker MQTT — y el broker de este ecosistema, broker.gilman.pro (broker MQTT empresarial con dashboard de administración, monitoreo en tiempo real y certificados TLS/mTLS por dispositivo), también se puede probar con este tester:

  1. Solicita un usuario temporal en /solicitar — las credenciales llegan a tu correo (validez 24 h)
  2. Crea un cliente MQTT hacia broker.gilman.pro — 14769 TCP · 14770 WS · 14771 TLS · 14772 mTLS · 443 WSS
  3. Publica y suscríbete desde el navegador

[!TIP] O descarga el kit de pruebas del broker — scripts, certificados mTLS, instalador y guía — y úsalo con el usuario temporal.

Proyecto del broker: Broker MQTT · Artículo técnico: MQTT en producción: pruebas reales · Guía completa: README incluido en el kit


🏆 Logros

⚙️ Funcionalidad

  • Proyecto completo en producción — plan de construcción al 100% (75/75 tareas)
  • Testing en tiempo real — suscripción y publicación al instante, colores por tópico, filtros y auto-scroll
  • Multi-sesión simultánea — varias pestañas probando distintos brokers a la vez
  • Puente TCP vía backend — el navegador se conecta a brokers MQTT por WebSocket, sin instalar nada
  • Soporte de los 5 protocolos MQTT — TCP, TLS, mTLS, WS y WSS, en MQTT v5 y v3.1.1
  • 4 formatos de publicación — texto plano, JSON, Base64 y hexadecimal
  • Gestión de accesos — usuarios temporales (con vencimiento) y permanentes, con límites editables por el administrador (clientes guardados y conexiones simultáneas) y contraseñas autogeneradas
  • Onboarding por correo — los usuarios solicitan sus credenciales por sí mismos (/solicitar)
  • Panel de administración completo — gestión de usuarios, reportes y estadísticas de actividad, y archivado de correos (ver, descargar .eml, exportar CSV)
  • Auditoría de actividad — cada evento relevante queda registrado con fecha e IP

🛡️ Seguridad

  • Auditoría de seguridad externa — pentesting documentado con informe
  • Anti-SSRF — los usuarios temporales no pueden usar hosts de redes internas (RFC1918, link-local, 169.254.169.254, .internal)
  • Rate limiting y cooldown anti-spam en la solicitud pública (3/h por IP, 1/día por email, 7 días de bloqueo)
  • Honeypots — endpoints señuelo que registran IP ante intentos de exploración
  • AuthZ por objeto — los usuarios solo acceden a sus propios clientes (404 sin revelar existencia); gestión de usuarios exige rol admin
  • Bloqueo de archivos sensibles — .env, .git/, config.py, BD y backups → 404 + registro del intento
  • Privacidad en formularios — botón mostrar/ocultar en todos los campos de contraseña

🎨 UX

  • Demo del panel sin datos reales — réplica navegable para presentar el producto sin exponer información
  • Interfaz responsive con Tailwind CSS · iconos Lucide con SRI · confirmaciones en acciones destructivas

🎯 Problema → Solución

Problema Solución
No hay herramienta web gratuita para testear brokers MQTT rápidamente Interfaz completa con login, dashboard y testing en tiempo real
Configurar clientes MQTT requiere editar archivos o usar CLI Alta visual de clientes con nombre, host, puerto, credenciales y protocolo
Depurar mensajes MQTT es tedioso sin visibilidad en tiempo real Comunicación bidireccional con mensajes al instante, filtros y auto-scroll
Los brokers usan distintos protocolos y versiones Selector de protocolo y versión por cliente, con soporte de certificados
Un DevOps necesita comprobar que un broker responde antes de integrarlo Crea un cliente desde el navegador y prueba en segundos — sin herramientas CLI
Soporte técnico investiga por qué un dispositivo no envía datos Abre el cliente del dispositivo y ve sus tópicos en tiempo real
Una empresa necesita dar acceso temporal a un integrador externo Cuenta con vencimiento y límites controlados, entregada por correo
El administrador quiere saber quién usó el sistema y cómo Panel con actividad por usuario y por cliente, historial purgable por fecha
Presentar el producto sin mostrar datos reales Demo navegable del panel con datos de ejemplo

🏗️ Arquitectura

graph TB
    subgraph Navegador["Navegador Web"]
        LOGIN["Login"]
        DASH["Dashboard"]
        TEST["Panel de Test"]
        SOL["Solicitar Acceso"]
        ADMIN["Panel Admin<br/>(usuarios · reportes · correos)"]
        JS["JavaScript"]
    end

    subgraph Backend["Backend FastAPI"]
        API["API REST"]
        WS["WebSocket Bridge"]
        AUTH["Autenticación"]
    end

    subgraph MQTT["Gestión MQTT"]
        MANAGER["MqttManager"]
        S1["Sesión TCP"]
        S2["Sesión mTLS"]
        SN["Sesión WSS"]
    end

    subgraph DB["Base de Datos"]
        PG["PostgreSQL 16"]
    end

    subgraph BROKERS["Brokers Externos"]
        B1["Broker TCP"]
        B2["Broker mTLS"]
        B3["Broker WSS"]
    end

    LOGIN --> JS
    DASH --> JS
    TEST --> JS
    SOL --> JS
    ADMIN --> JS
    JS -- "HTTP/JSON" --> API
    JS -- "WebSocket" --> WS
    API --> AUTH
    WS --> MANAGER
    MANAGER --> S1
    MANAGER --> S2
    MANAGER --> SN
    S1 --> B1
    S2 --> B2
    SN --> B3
    API --> DB

🧰 Stack Tecnológico

Capa Tecnología Propósito
Backend FastAPI + Uvicorn Servidor async con WebSockets nativos
Base de datos PostgreSQL 16 (producción) · SQLite (dev) Persistencia
Frontend HTML5 + Tailwind CSS + Jinja2 Interfaz responsive
Tiempo real WebSockets Comunicación bidireccional persistente
MQTT paho-mqtt v2 (v3.1.1 + v5) Conexión nativa a brokers
Protocolos TCP · TLS · mTLS · WS · WSS Los 5 protocolos MQTT estándar
Autenticación Tokens con expiración Manejo de sesiones
Correo SMTP SSL Envío de credenciales temporales
Contenedores Docker multi-stage + health check Deploy reproducible
Despliegue Docker Compose + nginx Orquestación y proxy reverso

📞 Contacto

📧 [correo@ejemplo.com] · 🔗 [LinkedIn] · 🐙 [GitHub]

Licencia: uso interno — proyecto personal de Gilberto Castillo.

Volver a proyectos