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.
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.
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ágilLos 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 DesacopladoLos 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
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
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.
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": []
}