Files
IoT/emqx/emqx.conf
T

93 lines
2.4 KiB
Plaintext

## 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"
websocket {
mqtt_path = "/mqtt"
}
max_connections = 512
}
## Dashboard — для диагностики через port-forward (наружу не экспонируется).
dashboard {
listeners.http {
bind = 18083
}
}