## 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://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100/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://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100/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 } ## Логи: console (stdout) — видны через kubectl logs платформы. ## Файловый handler отключён (у USER emqx нет прав на /var/log/emqx при deb). log { console_handler { enable = true level = warning } file_handlers.default { enable = 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" websocket { mqtt_path = "/mqtt" } max_connections = 512 } ## Dashboard — для диагностики через port-forward (наружу не экспонируется). dashboard { listeners.http { bind = 18083 } }