Description
VerneMQ est un broker MQTT robuste conçu pour l'IoT et la domotique.
- ✅ MQTT 3.1.1, 5.0 : protocole standard
- ✅ Clustering natif : scaling horizontal Erlang/BEAM
- ✅ Auth plugins : fichiers, HTTP, MySQL, PostgreSQL, MongoDB
- ✅ WebSockets : pour dashboards web
- ✅ TLS/SSL : chiffrement natif
- ✅ Bridge : pont entre brokers
- ✅ Retained messages, QoS 0/1/2 : full MQTT spec
- ✅ Pub/Sub, Shared Subscriptions : pour charges IoT
- ✅ Plugin Lua : logique custom embarquée
- ✅ Métriques Prometheus
Différence vs Mosquitto : Mosquitto = léger, single-node, parfait pour maison. VerneMQ = clustering, performance, production-grade. Pour qui: installations avec beaucoup de devices (>100), ou qui veulent scaler.
Installation
Docker Compose (recommandé)
version: '3.8'
services:
vernemq:
image: vernemq/vernemq:latest
container_name: vernemq
restart: unless-stopped
environment:
- DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on
- DOCKER_VERNEMQ_USER_vernemq=changeme
- DOCKER_VERNEMQ_LISTENER__TCP__DEFAULT=0.0.0.0:1883
- DOCKER_VERNEMQ_LISTENER__WS__DEFAULT=0.0.0.0:9001
volumes:
- vernemq_data:/vernemq/data
- vernemq_log:/vernemq/log
ports:
- 1883:1883 # MQTT
- 9001:9001 # WebSockets
labels:
- "traefik.enable=true"
- "traefik.http.routers.vernemq.rule=Host(`mqtt.example.com`)"
- "traefik.http.routers.vernemq.entrypoints=websecure"
- "traefik.http.routers.vernemq.tls.certresolver=letsencrypt"
volumes:
vernemq_data:
vernemq_log:
Premier test (CLI)
# Subscribe mosquitto_sub -h localhost -p 1883 -t "test/topic" -u vernemq -P changeme -v # Publish mosquitto_pub -h localhost -p 1883 -t "test/topic" -u vernemq -P changeme -m "Hello MQTT"
Alternatives
Open Source
- Mosquitto (Eclipse) — Référence, plus léger
- EMQX — Concurrent direct, plus d'intégrations
- HiveMQ CE — Broker Java entreprise
- RabbitMQ (plugin MQTT) — Polyvalent mais pas MQTT natif
Propriétaires
- AWS IoT Core — Managed cloud MQTT
- Azure IoT Hub — Managed, intégration Azure
- Google Cloud IoT — Managed, en sunset
- HiveMQ Cloud — SaaS HiveMQ
Sécurité
- Auth plugins : ne JAMAIS laisser anonyme en production
- TLS : obligatoire si exposé sur Internet
- ACL : limiter topics par utilisateur (
vernemq.conf) - WebSockets : attention exposition Internet, préférer TCP MQTT local
- Métriques Prometheus : surveiller charge
