## EMQX 5.x — конфиг для контейнера IoT на платформе Nubes. ## Вшит в образ naeel/iot-emqx. Auth/ACL URL переопределяются env-переменными ## (EMQX_AUTHENTICATION__1__URL, EMQX_AUTHORIZATION__SOURCES__1__URL) в deck-UI ## или kubectl set env — адрес монолита становится известен после его создания. node { name = "emqx@127.0.0.1" cookie = "iot-emqx-cookie-mvp" data_dir = "/opt/emqx/data" } ## HTTP Auth — монолит проверяет устройства в PostgreSQL (iot_devices). authentication = [ { mechanism = password_based backend = http enable = true method = post url = "http://iot-service:9090/internal/mqtt/auth" body { username = "${username}" password = "${password}" clientid = "${clientid}" } headers { "content-type" = "application/json" } connect_timeout = 5s request_timeout = 5s pool_size = 8 } ] ## ACL — монолит разрешает pub/sub по топикам устройств. ## no_match = deny: недоступность backend = запрет. authorization { no_match = deny deny_action = disconnect cache { enable = true max_size = 32 ttl = 1m } sources = [ { type = http enable = true method = post url = "http://iot-service:9090/internal/mqtt/acl" body { username = "${username}" clientid = "${clientid}" action = "${action}" topic = "${topic}" } headers { "content-type" = "application/json" } connect_timeout = 5s request_timeout = 5s pool_size = 8 } ] } mqtt { max_packet_size = 1MB max_topic_levels = 10 retain_available = false } ## Listeners: WebSocket — единственный порт контейнера платформы (8083). ## TCP 1883 остаётся для диагностики (не экспонируется платформой). listeners.tcp.default { bind = "0.0.0.0:1883" max_connections = 1024 } listeners.ws.default { bind = "0.0.0.0:8083" mqtt_path = "/mqtt" max_connections = 512 } ## Dashboard — для диагностики через port-forward (наружу не экспонируется). dashboard { listeners.http { bind = 18083 } }