GitHub
Compatible con: Mosquitto 2.x EMQX 5.x VerneMQ
Motor: Quarkus Native Java 25

Autenticación MQTT Unificada. Una sola pasarela HTTP ligera.

Conecta EMQX, Mosquitto y VerneMQ a tus backends REST existentes sin desarrollar plugins propietarios. Administra rutas, supervisa sondas de salud y revisa autorizaciones desde un panel web integrado.

$ docker run -d -p 8085:8085 -e GATEWAY_ADMIN_PASSWORD=admin-secret ghcr.io/kgvicente/mqtt-gateway:latest
0 DB
Sin necesidad de PostgreSQL, MySQL o Redis
Java 25
Quarkus 3.39 con Hilos Virtuales y Binario Nativo Mandrel
Built-in UI
Panel de control web y sondeos de salud en /gateway/
AGPL-3.0
100% Código abierto y arquitectura transparente
Operaciones Embebidas

Un centro de control web completo en /gateway/.

Sin necesidad de clusters externos de Grafana, Kibana o bases de datos. Monitorea sondeos de salud, analiza latencias P95 y audita decisiones de acceso en tiempo real.

http://localhost:8085/gateway/
Panel de MQTT Gateway con rutas de backend, indicadores de estado y resumen de salud
Estado en tiempo real de backends conectados, pruebas de conexión instantáneas y gestión de rutas en caliente. /gateway/#backends
Detalle de ruta de MQTT Gateway con gráficos de latencia, historial de sondeos y reglas ACL
Distribución granular de latencia, percentiles P95, barras de latidos de 24 sondeos y registro de incidentes. /gateway/#detail
Estado del servidor de MQTT Gateway con métricas de CPU, memoria, disco y red
Telemetría nativa del host Linux: uso de CPU, anillos de RAM y swap, I/O de disco y tráfico de red acumulado. /gateway/#server-view
Demostración animada de la consola de administración de MQTT Gateway
Demostración en vivo de conmutación de rutas, sondeos de salud y cambio fluido de temas. Interactive preview
El Cambio Arquitectónico

Deja de mantener plugins frágiles por broker.

Acoplar brókers MQTT directamente a bases de datos usando plugins específicos en C, Erlang o Lua genera dependencias frágiles y complica las actualizaciones. MQTT-GATEWAY unifica todo mediante HTTP limpio.

Acoplado a los Binarios del Broker

Acoplado y Frágil

Los complementos en C de Mosquitto, los hooks en Erlang de EMQX y los módulos en Lua de VerneMQ requieren compilar por separado, mantener esquemas SQL y arriesgar caídas al actualizar el broker.

  • Un binario compilado diferente para cada versión y tipo de broker
  • Los brokers consultan directamente bases de datos de producción
  • Cambiar rutas o servicios requiere reiniciar los brokers

Desacoplamiento Limpio por Webhooks HTTP

HTTP Desacoplado

Los brokers simplemente disparan webhooks HTTP a MQTT-GATEWAY en el puerto 8085. El gateway normaliza las peticiones y las reenvía a tus servicios backend existentes.

  • Un único contrato REST estándar para Mosquitto, EMQX y VerneMQ
  • Sin bases de datos externas que administrar; persistencia atómica local
  • Agrega, pausa o edita rutas en vivo desde la UI sin reiniciar
Flujo Simple en 3 Pasos

Cómo viajan las peticiones a través del gateway.

Cuando un cliente IoT se conecta o publica un mensaje, MQTT-GATEWAY valida los permisos a través de tus servicios REST con latencia mínima.

Disparo del Webhook del Broker

Un cliente se conecta a Mosquitto, EMQX o VerneMQ. El broker envía un webhook HTTP de autenticación o ACL al puerto 8085.

Coincidencia de Prefijo y Enrutamiento

El gateway evalúa los prefijos de cliente o tópico (ej. core_* vs tel_*) y despacha la llamada usando Hilos Virtuales de Java 25.

Tu Backend Responde

Tu servicio backend valida credenciales o tokens y devuelve un JSON simple: {"result": "allow"}.

// POST /api/v1/auth (Dispatched to your backend)
// Optional header: X-EMQX-API-KEY: your-backend-secret
{
  "clientid": "core_sensor_098",
  "username": "fleet_device_prod",
  "password": "••••••••••••",
  "ipaddress": "192.168.1.104",
  "protocol": "MQTT"
}
// HTTP/1.1 200 OK (From your backend to MQTT-GATEWAY)
{
  "result": "allow",
  "is_superuser": false
}

// Valid result values: "allow", "deny", or "ignore"
# Initial configuration (or manage live at /gateway/)
gateway:
  timeout-ms: 2000
  global-topics: [heart, ping]
  auth:
    - prefixes: [core_, android_, ios_, web_]
      url: http://core-backend:8090/api/v1/emqx/auth
    - prefixes: [tel_]
      url: http://telemetry-backend:8080/api/v1/emqx/auth
  acl:
    - prefixes: [v1/, core/]
      url: http://core-backend:8090/api/v1/emqx/acl
Capacidades Clave

Simple de operar, diseñado para producción.

Combina la velocidad de los binarios nativos de Quarkus con la visibilidad operativa que necesitas en el día a día.

Cero Base de Datos Externa

Funciona de forma autónoma con persistencia local en JSON y caché en memoria. Sin clusters de PostgreSQL, MySQL o Redis que mantener.

Panel Web de Administración Integrado

Accede a un dashboard completo en /gateway/ para inspeccionar la salud de tus backends, gestionar rutas y revisar auditorías en tiempo real.

Gestión de Rutas en Caliente

Añade, pausa o edita rutas dinámicamente mediante la API Admin REST sin reiniciar el gateway ni interrumpir el tráfico MQTT.

Sondeos Continuos de Salud

Prueba periódicamente la disponibilidad de tus backends con hilos virtuales, calcula percentiles P95 y registra incidencias automáticamente.

En Marcha en 10 Segundos

Despliega con un solo comando.

Descarga imágenes listas para usar desde GitHub Container Registry (GHCR) o arranca el entorno de pruebas completo con Docker Compose.

# Run MQTT-GATEWAY on port 8085
docker run -d \
  --name mqtt-gateway \
  -p 8085:8085 \
  -e GATEWAY_ADMIN_PASSWORD=admin-secret \
  ghcr.io/kgvicente/mqtt-gateway:latest

# Open the admin panel at http://localhost:8085/gateway/
# docker compose up --build --wait
# Spins up the gateway, demo backend, and Mosquitto with automated tests
git clone https://github.com/kgvicente/mqtt-gateway.git
cd mqtt-gateway
docker compose up --build --wait

# Open http://localhost:18085/gateway/ (admin / local-demo-admin-2026)
# Check gateway readiness and liveness
curl http://localhost:8085/q/health

# Response:
{
  "status": "UP",
  "checks": []
}
Despliegue Empresarial y Compatibilidad AGPL-3.0: MQTT Gateway opera como un proxy de red independiente sobre webhooks HTTP. Conectar tus backends propietarios o flotas privadas de brokers no exige liberar el código fuente de tus aplicaciones.

¿Buscas la referencia técnica detallada?

Explora la documentación oficial en el repositorio de GitHub con ejemplos de integración, configuración de endpoints y guía de arquitectura.

Abrir Documentación en GitHub →