Bonjour,
Je viens de « sauver » mon thermostat Nest 2nd Génération vie NoLongerEvil.
Le serveur peut discuter avec HA via MQTT.
Le détail, c’est qu’il faut que j’expose le service sur Internet pour que tout le monde puisse discuter…
Je n’ai aucune expérience sur MQTT…
J’utilise Cloudfared pour atteindre HA depuis l’exterieur.
Chat GPT me conseille cette approche :
✅ Solution recommandée (sécurisée) : MQTT over WebSocket via Cloudflare
C’est LA meilleure approche avec Cloudflare.
Principe
Client MQTT distant
↓ (WebSocket sécurisé WSS)
Cloudflare Tunnel
↓
Mosquitto (MQTT WS) → Home Assistant
1️⃣ Activer MQTT WebSocket dans Mosquitto
Dans Home Assistant (Mosquitto add-on) :
Configuration Mosquitto
listener 1883
protocol mqtt
listener 9001
protocol websockets
👉 9001 = port WebSocket
Redémarre l’add-on Mosquitto.
2️⃣ Exposer le port WebSocket via Cloudflare Tunnel
Dans ta config cloudflared (Ingress rules) :
ingress:
- hostname: mqtt.ton-domaine.fr
service: http://localhost:9001
- service: http_status:404
⚠️ HTTP, pas TCP → Cloudflare convertit en WSS
3️⃣ Côté client MQTT (ESP32, Node-RED, PC…)
Connexion MQTT :
Paramètre Valeur
Host mqtt.ton-domaine.fr
Port 443
Protocol WebSocket Secure (WSS)
Path /mqtt (ou /)
Username MQTT user
Password MQTT password
TLS ✅
Exemple ESP32 (PubSubClient + WebSocket)
client.setServer("mqtt.ton-domaine.fr", 443);
4️⃣ Sécurisation OBLIGATOIRE 🔐
🔒 Authentification MQTT
Dans Mosquitto :
utilisateurs / mots de passe forts
interdire anonymous
allow_anonymous false
password_file /mosquitto/config/passwordfile
🔐 Cloudflare Access (recommandé)
Ajoute une policy Zero Trust :
Accès uniquement :
à ton compte Cloudflare
ou par IP
ou via service token
👉 bloque 100% des scans Internet
Est-ce que l’approche est (la) bonne ?
Merci pour vos retours.