1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-05-09 19:29:29 +08:00
b1ackd0t 824156fbf0
NOISSUE - Use Nats JetStream As Internal Message Bus (#1893)
* Replace Nats with Nats Jestream For PubSub

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Add Stream Description

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Subscribe using wildcard

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Add consumers description

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Remove unused queue variable

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Add extra configs to stream

Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>

* Use inline error handling

Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>

* Fix connection leak in NATS publisher

The publisher struct in pkg/messaging/nats/publisher.go was modified to include a new `conn` field of type `*broker.Conn`. This change was made to fix a connection leak issue in the NATS publisher.

The `NewPublisher` function was updated to assign the `conn` parameter to the new `conn` field in the publisher struct.

Additionally, the `Close` method in the publisher struct was modified to close the `conn` connection.

This commit fixes the connection leak issue in the NATS publisher and ensures that connections are properly closed.

Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>

* feat(messaging): Add support for durable consumers

This commit adds support for durable consumers to NATS JS in the messaging package.

To support this functionality, the `strings` package has been imported in the `pubsub.go` file to check the topic.

Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>

* feat : remove internal logic to keep subscribers

Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>

* feat(messaging): add function to format consumer name

This commit adds a new function to the `pubsub` package in the `messaging` module. The function is called `formatConsumerName` and is used to generate a consumer name for NATS messaging. The function takes two parameters, `topic` and `id`, and returns a formatted consumer name. The consumer name is generated by concatenating the `topic` and `id` parameters, with some restrictions on the characters that can be used. This function will be useful for creating durable subscriptions in NATS messaging.

Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>

---------

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
2023-10-18 17:00:38 +02:00

539 lines
15 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker: Environment variables in Compose
## NginX
MF_NGINX_HTTP_PORT=80
MF_NGINX_SSL_PORT=443
MF_NGINX_MQTT_PORT=1883
MF_NGINX_MQTTS_PORT=8883
## Nats
MF_NATS_PORT=4222
MF_NATS_HTTP_PORT=8222
MF_NATS_JETSTREAM_KEY=u7wFoAPgXpDueXOFldBnXDh4xjnSOyEJ2Cb8Z5SZvGLzIZ3U4exWhhoIBZHzuNvh
MF_NATS_URL=nats://broker:${MF_NATS_PORT}
## RabbitMQ
MF_RABBITMQ_PORT=5672
MF_RABBITMQ_HTTP_PORT=15672
MF_RABBITMQ_USER=mainflux
MF_RABBITMQ_PASS=mainflux
MF_RABBITMQ_COOKIE=mainflux
MF_RABBITMQ_VHOST=/
MF_RABBITMQ_URL=amqp://${MF_RABBITMQ_USER}:${MF_RABBITMQ_PASS}@broker:${MF_RABBITMQ_PORT}${MF_RABBITMQ_VHOST}
## Message Broker
MF_BROKER_TYPE=nats
MF_BROKER_URL=${MF_NATS_URL}
## Redis
MF_REDIS_TCP_PORT=6379
MF_REDIS_URL=redis://es-redis:${MF_REDIS_TCP_PORT}/0
## Event Store
MF_ES_URL=${MF_REDIS_URL}
## Jaeger
MF_JAEGER_PORT=6831
MF_JAEGER_FRONTEND=16686
MF_JAEGER_COLLECTOR=14268
MF_JAEGER_CONFIGS=5778
MF_JAEGER_URL=http://jaeger:14268/api/traces
## Call home
MF_SEND_TELEMETRY=true
## Core Services
### Auth
MF_AUTH_LOG_LEVEL=debug
MF_AUTH_HTTP_PORT=8189
MF_AUTH_GRPC_PORT=8181
MF_AUTH_GRPC_URL=auth:8181
MF_AUTH_GRPC_TIMEOUT=300s
MF_AUTH_DB_PORT=5432
MF_AUTH_DB_USER=mainflux
MF_AUTH_DB_PASS=mainflux
MF_AUTH_DB=auth
MF_AUTH_SECRET=secret
MF_AUTH_ACCESS_TOKEN_DURATION="300m"
### SpiceDB Datastore config
MF_SPICEDB_DB_USER=mainflux
MF_SPICEDB_DB_PASS=mainflux
MF_SPICEDB_DB_NAME=spicedb
MF_SPICEDB_DB_PORT=5432
### SpiceDB config
MF_SPICEDB_GRPC_PRESHARED_KEY="12345678"
MF_SPICEDB_SCHEMA_FILE="/schema.zed"
MF_SPICEDB_HOST=mainflux-spicedb
MF_SPICEDB_PORT=50051
MF_SPICEDB_DATASTORE_ENGINE=postgres
### Users
MF_USERS_LOG_LEVEL=debug
MF_USERS_SECRET_KEY=HyE2D4RUt9nnKG6v8zKEqAp6g6ka8hhZsqUpzgKvnwpXrNVQSH
MF_USERS_ADMIN_EMAIL=admin@example.com
MF_USERS_ADMIN_PASSWORD=12345678
MF_USERS_PASS_REGEX=^.{8,}$
MF_USERS_ACCESS_TOKEN_DURATION=15m
MF_USERS_REFRESH_TOKEN_DURATION=24h
MF_TOKEN_RESET_ENDPOINT=/reset-request
MF_USERS_HTTP_HOST=users
MF_USERS_HTTP_PORT=9002
MF_USERS_HTTP_SERVER_CERT=
MF_USERS_HTTP_SERVER_KEY=
MF_USERS_GRPC_HOST=users
MF_USERS_GRPC_PORT=7001
MF_USERS_GRPC_SERVER_CERT=${GRPC_MTLS:+./ssl/certs/users-grpc-server.crt}${GRPC_TLS:+./ssl/certs/users-grpc-server.crt}
MF_USERS_GRPC_SERVER_KEY=${GRPC_MTLS:+./ssl/certs/users-grpc-server.key}${GRPC_TLS:+./ssl/certs/users-grpc-server.key}
MF_USERS_GRPC_SERVER_CA_CERTS=${GRPC_MTLS:+./ssl/certs/ca.crt}${GRPC_TLS:+./ssl/certs/ca.crt}
MF_USERS_DB_HOST=users-db
MF_USERS_DB_PORT=5432
MF_USERS_DB_USER=mainflux
MF_USERS_DB_PASS=mainflux
MF_USERS_DB_NAME=users
MF_USERS_DB_SSL_MODE=disable
MF_USERS_DB_SSL_CERT=
MF_USERS_DB_SSL_KEY=
MF_USERS_DB_SSL_ROOT_CERT=
MF_USERS_ES_URL=es-redis:${MF_REDIS_TCP_PORT}
MF_USERS_ES_PASS=
MF_USERS_ES_DB=
MF_USERS_RESET_PWD_TEMPLATE=users.tmpl
MF_USERS_INSTANCE_ID=
#### Users Client Config
MF_USERS_GRPC_URL=users:7001
MF_USERS_GRPC_TIMEOUT=1s
MF_USERS_GRPC_CLIENT_CERT=${GRPC_MTLS:+./ssl/certs/users-grpc-client.crt}
MF_USERS_GRPC_CLIENT_KEY=${GRPC_MTLS:+./ssl/certs/users-grpc-client.key}
MF_USERS_GRPC_CLIENT_CA_CERTS=${GRPC_MTLS:+./ssl/certs/ca.crt}
### Email utility
MF_EMAIL_HOST=smtp.mailtrap.io
MF_EMAIL_PORT=2525
MF_EMAIL_USERNAME=18bf7f70705139
MF_EMAIL_PASSWORD=2b0d302e775b1e
MF_EMAIL_FROM_ADDRESS=from@example.com
MF_EMAIL_FROM_NAME=Example
MF_EMAIL_TEMPLATE=email.tmpl
### Things
MF_THINGS_LOG_LEVEL=debug
MF_THINGS_STANDALONE_ID=
MF_THINGS_STANDALONE_TOKEN=
MF_THINGS_CACHE_KEY_DURATION=10m
MF_THINGS_HTTP_HOST=things
MF_THINGS_HTTP_PORT=9000
MF_THINGS_AUTH_GRPC_HOST=things
MF_THINGS_AUTH_GRPC_PORT=7000
MF_THINGS_AUTH_GRPC_SERVER_CERT=${GRPC_MTLS:+./ssl/certs/things-grpc-server.crt}${GRPC_TLS:+./ssl/certs/things-grpc-server.crt}
MF_THINGS_AUTH_GRPC_SERVER_KEY=${GRPC_MTLS:+./ssl/certs/things-grpc-server.key}${GRPC_TLS:+./ssl/certs/things-grpc-server.key}
MF_THINGS_AUTH_GRPC_SERVER_CA_CERTS=${GRPC_MTLS:+./ssl/certs/ca.crt}${GRPC_TLS:+./ssl/certs/ca.crt}
MF_THINGS_ES_URL=es-redis:${MF_REDIS_TCP_PORT}
MF_THINGS_ES_PASS=
MF_THINGS_ES_DB=0
MF_THINGS_CACHE_URL=things-redis:${MF_REDIS_TCP_PORT}
MF_THINGS_CACHE_PASS=
MF_THINGS_CACHE_DB=0
MF_THINGS_DB_HOST=things-db
MF_THINGS_DB_PORT=5432
MF_THINGS_DB_USER=mainflux
MF_THINGS_DB_PASS=mainflux
MF_THINGS_DB_NAME=things
MF_THINGS_DB_SSL_MODE=disable
MF_THINGS_DB_SSL_CERT=
MF_THINGS_DB_SSL_KEY=
MF_THINGS_DB_SSL_ROOT_CERT=
MF_THINGS_INSTANCE_ID=
#### Things Client Config
MF_THINGS_URL=http://things:9000
MF_THINGS_AUTH_GRPC_URL=things:7000
MF_THINGS_AUTH_GRPC_TIMEOUT=1s
MF_THINGS_AUTH_GRPC_CLIENT_CERT=${GRPC_MTLS:+./ssl/certs/things-grpc-client.crt}
MF_THINGS_AUTH_GRPC_CLIENT_KEY=${GRPC_MTLS:+./ssl/certs/things-grpc-client.key}
MF_THINGS_AUTH_GRPC_CLIENT_CA_CERTS=${GRPC_MTLS:+./ssl/certs/ca.crt}
### HTTP
MF_HTTP_ADAPTER_LOG_LEVEL=debug
MF_HTTP_ADAPTER_HOST=http-adapter
MF_HTTP_ADAPTER_PORT=8008
MF_HTTP_ADAPTER_SERVER_CERT=
MF_HTTP_ADAPTER_SERVER_KEY=
MF_HTTP_ADAPTER_INSTANCE_ID=
### MQTT
MF_MQTT_ADAPTER_LOG_LEVEL=debug
MF_MQTT_ADAPTER_MQTT_PORT=1883
MF_MQTT_ADAPTER_MQTT_TARGET_HOST=vernemq
MF_MQTT_ADAPTER_MQTT_TARGET_PORT=1883
MF_MQTT_ADAPTER_FORWARDER_TIMEOUT=30s
MF_MQTT_ADAPTER_MQTT_TARGET_HEALTH_CHECK=http://vernemq:8888/health
MF_MQTT_ADAPTER_WS_PORT=8080
MF_MQTT_ADAPTER_WS_TARGET_HOST=vernemq
MF_MQTT_ADAPTER_WS_TARGET_PORT=8080
MF_MQTT_ADAPTER_WS_TARGET_PATH=/mqtt
MF_MQTT_ADAPTER_INSTANCE=
MF_MQTT_ADAPTER_ES_URL=es-redis:${MF_REDIS_TCP_PORT}
MF_MQTT_ADAPTER_ES_PASS=
MF_MQTT_ADAPTER_INSTANCE_ID=
MF_MQTT_ADAPTER_ES_DB=0
### VERNEMQ
MF_DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on
MF_DOCKER_VERNEMQ_LOG__CONSOLE__LEVEL=error
### CoAP
MF_COAP_ADAPTER_LOG_LEVEL=debug
MF_COAP_ADAPTER_HOST=coap-adapter
MF_COAP_ADAPTER_PORT=5683
MF_COAP_ADAPTER_SERVER_CERT=
MF_COAP_ADAPTER_SERVER_KEY=
MF_COAP_ADAPTER_HTTP_HOST=coap-adapter
MF_COAP_ADAPTER_HTTP_PORT=5683
MF_COAP_ADAPTER_HTTP_SERVER_CERT=
MF_COAP_ADAPTER_HTTP_SERVER_KEY=
MF_COAP_ADAPTER_INSTANCE_ID=
### WS
MF_WS_ADAPTER_LOG_LEVEL=debug
MF_WS_ADAPTER_HTTP_HOST=ws-adapter
MF_WS_ADAPTER_HTTP_PORT=8186
MF_WS_ADAPTER_HTTP_SERVER_CERT=
MF_WS_ADAPTER_HTTP_SERVER_KEY=
MF_WS_ADAPTER_INSTANCE_ID=
## Addons Services
### Bootstrap
MF_BOOTSTRAP_LOG_LEVEL=debug
MF_BOOTSTRAP_ENCRYPT_KEY=v7aT0HGxJxt2gULzr3RHwf4WIf6DusPphG5Ftm2bNCWD8mTpyr
MF_BOOTSTRAP_EVENT_CONSUMER=bootstrap
MF_BOOTSTRAP_ES_URL=es-redis:${MF_REDIS_TCP_PORT}
MF_BOOTSTRAP_ES_PASS=
MF_BOOTSTRAP_ES_DB=0
MF_BOOTSTRAP_HTTP_HOST=bootstrap
MF_BOOTSTRAP_HTTP_PORT=9013
MF_BOOTSTRAP_HTTP_SERVER_CERT=
MF_BOOTSTRAP_HTTP_SERVER_KEY=
MF_BOOTSTRAP_DB_HOST=bootstrap-db
MF_BOOTSTRAP_DB_PORT=5432
MF_BOOTSTRAP_DB_USER=mainflux
MF_BOOTSTRAP_DB_PASS=mainflux
MF_BOOTSTRAP_DB_NAME=bootstrap
MF_BOOTSTRAP_DB_SSL_MODE=disable
MF_BOOTSTRAP_DB_SSL_CERT=
MF_BOOTSTRAP_DB_SSL_KEY=
MF_BOOTSTRAP_DB_SSL_ROOT_CERT=
MF_BOOTSTRAP_INSTANCE_ID=
### Provision
MF_PROVISION_CONFIG_FILE=/configs/config.toml
MF_PROVISION_LOG_LEVEL=debug
MF_PROVISION_HTTP_PORT=9016
MF_PROVISION_ENV_CLIENTS_TLS=false
MF_PROVISION_SERVER_CERT=
MF_PROVISION_SERVER_KEY=
MF_PROVISION_USERS_LOCATION=http://users:9002
MF_PROVISION_THINGS_LOCATION=http://things:9000
MF_PROVISION_USER=
MF_PROVISION_PASS=
MF_PROVISION_API_KEY=
MF_PROVISION_CERTS_SVC_URL=http://certs:9019
MF_PROVISION_X509_PROVISIONING=false
MF_PROVISION_BS_SVC_URL=http://bootstrap:9013/things
MF_PROVISION_BS_SVC_WHITELIST_URL=http://bootstrap:9013/things/state
MF_PROVISION_BS_CONFIG_PROVISIONING=true
MF_PROVISION_BS_AUTO_WHITELIST=true
MF_PROVISION_BS_CONTENT=
MF_PROVISION_CERTS_HOURS_VALID=2400h
MF_PROVISION_CERTS_RSA_BITS=2048
MF_PROVISION_INSTANCE_ID=
# Certs
MF_CERTS_LOG_LEVEL=debug
MF_SDK_CERTS_URL=http://localhost
MF_CERTS_SIGN_CA_PATH=/etc/ssl/certs/ca.crt
MF_CERTS_SIGN_CA_KEY_PATH=/etc/ssl/certs/ca.key
MF_CERTS_VAULT_HOST=http://vault:8200
MF_VAULT_PKI_INT_PATH=pki_int
MF_VAULT_CA_ROLE_NAME=mainflux
MF_CERTS_HTTP_HOST=certs
MF_CERTS_HTTP_PORT=9019
MF_CERTS_HTTP_SERVER_CERT=
MF_CERTS_HTTP_SERVER_KEY=
MF_CERTS_DB_HOST=certs-db
MF_CERTS_DB_PORT=5432
MF_CERTS_DB_USER=mainflux
MF_CERTS_DB_PASS=mainflux
MF_CERTS_DB_NAME=certs
MF_CERTS_DB_SSL_MODE=
MF_CERTS_DB_SSL_CERT=
MF_CERTS_DB_SSL_KEY=
MF_CERTS_DB_SSL_ROOT_CERT=
MF_CERTS_INSTANCE_ID=
### Vault
MF_VAULT_HOST=vault
MF_VAULT_PORT=8200
MF_VAULT_UNSEAL_KEY_1=
MF_VAULT_UNSEAL_KEY_2=
MF_VAULT_UNSEAL_KEY_3=
MF_VAULT_TOKEN=
MF_VAULT_CA_NAME=mainflux
MF_VAULT_CA_ROLE_NAME=mainflux
MF_VAULT_PKI_PATH=pki
MF_VAULT_PKI_INT_PATH=pki_int
MF_VAULT_CA_CN=mainflux.com
MF_VAULT_CA_OU='Mainflux Cloud'
MF_VAULT_CA_O='Mainflux Labs'
MF_VAULT_CA_C=Serbia
MF_VAULT_CA_L=Belgrade
### LoRa
MF_LORA_ADAPTER_LOG_LEVEL=debug
MF_LORA_ADAPTER_MESSAGES_URL=tcp://mainflux-mqtt:1883
MF_LORA_ADAPTER_MESSAGES_TOPIC=application/+/device/+/event/up
MF_LORA_ADAPTER_MESSAGES_USER=
MF_LORA_ADAPTER_MESSAGES_PASS=
MF_LORA_ADAPTER_MESSAGES_TIMEOUT=30s
MF_LORA_ADAPTER_EVENT_CONSUMER=lora-adapter
MF_LORA_ADAPTER_HTTP_HOST=lora-adapter
MF_LORA_ADAPTER_HTTP_PORT=9017
MF_LORA_ADAPTER_HTTP_SERVER_CERT=
MF_LORA_ADAPTER_HTTP_SERVER_KEY=
MF_LORA_ADAPTER_ROUTE_MAP_URL=lora-redis:${MF_REDIS_TCP_PORT}
MF_LORA_ADAPTER_ROUTE_MAP_PASS=
MF_LORA_ADAPTER_ROUTE_MAP_DB=0
MF_LORA_ADAPTER_INSTANCE_ID=
### OPC-UA
MF_OPCUA_ADAPTER_LOG_LEVEL=debug
MF_OPCUA_ADAPTER_EVENT_CONSUMER=opcua-adapter
MF_OPCUA_ADAPTER_HTTP_HOST=opcua-adapter
MF_OPCUA_ADAPTER_HTTP_PORT=8188
MF_OPCUA_ADAPTER_HTTP_SERVER_CERT=
MF_OPCUA_ADAPTER_HTTP_SERVER_KEY=
MF_OPCUA_ADAPTER_ES_URL=es-redis:${MF_REDIS_TCP_PORT}
MF_OPCUA_ADAPTER_ES_PASS=
MF_OPCUA_ADAPTER_ES_DB=0
MF_OPCUA_ADAPTER_ROUTE_MAP_URL=opcua-redis:${MF_REDIS_TCP_PORT}
MF_OPCUA_ADAPTER_ROUTE_MAP_PASS=
MF_OPCUA_ADAPTER_ROUTE_MAP_DB=0
MF_OPCUA_ADAPTER_INSTANCE_ID=
### Cassandra
MF_CASSANDRA_CLUSTER=mainflux-cassandra
MF_CASSANDRA_KEYSPACE=mainflux
MF_CASSANDRA_USER=mainflux
MF_CASSANDRA_PASS=mainflux
MF_CASSANDRA_PORT=9042
### Cassandra Writer
MF_CASSANDRA_WRITER_LOG_LEVEL=debug
MF_CASSANDRA_WRITER_CONFIG_PATH=/config.toml
MF_CASSANDRA_WRITER_HTTP_HOST=cassandra-writer
MF_CASSANDRA_WRITER_HTTP_PORT=9004
MF_CASSANDRA_WRITER_HTTP_SERVER_CERT=
MF_CASSANDRA_WRITER_HTTP_SERVER_KEY=
MF_CASSANDRA_WRITER_INSTANCE_ID=
### Cassandra Reader
MF_CASSANDRA_READER_LOG_LEVEL=debug
MF_CASSANDRA_READER_HTTP_HOST=cassandra-reader
MF_CASSANDRA_READER_HTTP_PORT=9003
MF_CASSANDRA_READER_HTTP_SERVER_CERT=
MF_CASSANDRA_READER_HTTP_SERVER_KEY=
MF_CASSANDRA_READER_INSTANCE_ID=
### InfluxDB
MF_INFLUXDB_PROTOCOL=http
MF_INFLUXDB_HOST=mainflux-influxdb
MF_INFLUXDB_PORT=8086
MF_INFLUXDB_ADMIN_USER=mainflux
MF_INFLUXDB_ADMIN_PASSWORD=mainflux
MF_INFLUXDB_NAME=mainflux
MF_INFLUXDB_BUCKET=mainflux-bucket
MF_INFLUXDB_ORG=mainflux
MF_INFLUXDB_TOKEN=mainflux-token
MF_INFLUXDB_DBURL=
MF_INFLUXDB_USER_AGENT=InfluxDBClient
MF_INFLUXDB_TIMEOUT=1s
MF_INFLUXDB_INSECURE_SKIP_VERIFY=false
MF_INFLUXDB_INIT_MODE=setup
MF_INFLUXDB_ADMIN_URL=http://${MF_INFLUXDB_HOST}:${MF_INFLUXDB_PORT}
MF_INFLUXDB_HTTP_ENABLED=true
### InfluxDB Writer
MF_INFLUX_WRITER_LOG_LEVEL=debug
MF_INFLUX_WRITER_CONFIG_PATH=/config.toml
MF_INFLUX_WRITER_HTTP_HOST=influxdb-writer
MF_INFLUX_WRITER_HTTP_PORT=9006
MF_INFLUX_WRITER_HTTP_SERVER_CERT=
MF_INFLUX_WRITER_HTTP_SERVER_KEY=
MF_INFLUX_WRITER_INSTANCE_ID=
### InfluxDB Reader
MF_INFLUX_READER_LOG_LEVEL=debug
MF_INFLUX_READER_HTTP_HOST=influxdb-reader
MF_INFLUX_READER_HTTP_PORT=9005
MF_INFLUX_READER_HTTP_SERVER_CERT=
MF_INFLUX_READER_HTTP_SERVER_KEY=
MF_INFLUX_READER_INSTANCE_ID=
### MongoDB
MF_MONGO_HOST=mainflux-mongodb
MF_MONGO_PORT=27017
MF_MONGO_NAME=mainflux
### MongoDB Writer
MF_MONGO_WRITER_LOG_LEVEL=debug
MF_MONGO_WRITER_CONFIG_PATH=/config.toml
MF_MONGO_WRITER_HTTP_HOST=mongodb-writer
MF_MONGO_WRITER_HTTP_PORT=9008
MF_MONGO_WRITER_HTTP_SERVER_CERT=
MF_MONGO_WRITER_HTTP_SERVER_KEY=
MF_MONGO_WRITER_INSTANCE_ID=
### MongoDB Reader
MF_MONGO_READER_LOG_LEVEL=debug
MF_MONGO_READER_HTTP_HOST=mongodb-reader
MF_MONGO_READER_HTTP_PORT=9007
MF_MONGO_READER_HTTP_SERVER_CERT=
MF_MONGO_READER_HTTP_SERVER_KEY=
MF_MONGO_READER_INSTANCE_ID=
### Postgres
MF_POSTGRES_HOST=mainflux-postgres
MF_POSTGRES_PORT=5432
MF_POSTGRES_USER=mainflux
MF_POSTGRES_PASS=mainflux
MF_POSTGRES_NAME=messages
MF_POSTGRES_SSL_MODE=disable
MF_POSTGRES_SSL_CERT=
MF_POSTGRES_SSL_KEY=
MF_POSTGRES_SSL_ROOT_CERT=
### Postgres Writer
MF_POSTGRES_WRITER_LOG_LEVEL=debug
MF_POSTGRES_WRITER_CONFIG_PATH=/config.toml
MF_POSTGRES_WRITER_HTTP_HOST=postgres-writer
MF_POSTGRES_WRITER_HTTP_PORT=9010
MF_POSTGRES_WRITER_HTTP_SERVER_CERT=
MF_POSTGRES_WRITER_HTTP_SERVER_KEY=
MF_POSTGRES_WRITER_INSTANCE_ID=
### Postgres Reader
MF_POSTGRES_READER_LOG_LEVEL=debug
MF_POSTGRES_READER_HTTP_HOST=postgres-reader
MF_POSTGRES_READER_HTTP_PORT=9009
MF_POSTGRES_READER_HTTP_SERVER_CERT=
MF_POSTGRES_READER_HTTP_SERVER_KEY=
MF_POSTGRES_READER_INSTANCE_ID=
### Timescale
MF_TIMESCALE_HOST=mainflux-timescale
MF_TIMESCALE_PORT=5432
MF_TIMESCALE_USER=mainflux
MF_TIMESCALE_PASS=mainflux
MF_TIMESCALE_NAME=mainflux
MF_TIMESCALE_SSL_MODE=disable
MF_TIMESCALE_SSL_CERT=
MF_TIMESCALE_SSL_KEY=
MF_TIMESCALE_SSL_ROOT_CERT=
### Timescale Writer
MF_TIMESCALE_WRITER_LOG_LEVEL=debug
MF_TIMESCALE_WRITER_CONFIG_PATH=/config.toml
MF_TIMESCALE_WRITER_HTTP_HOST=timescale-writer
MF_TIMESCALE_WRITER_HTTP_PORT=9012
MF_TIMESCALE_WRITER_HTTP_SERVER_CERT=
MF_TIMESCALE_WRITER_HTTP_SERVER_KEY=
MF_TIMESCALE_WRITER_INSTANCE_ID=
### Timescale Reader
MF_TIMESCALE_READER_LOG_LEVEL=debug
MF_TIMESCALE_READER_HTTP_HOST=timescale-reader
MF_TIMESCALE_READER_HTTP_PORT=9011
MF_TIMESCALE_READER_HTTP_SERVER_CERT=
MF_TIMESCALE_READER_HTTP_SERVER_KEY=
MF_TIMESCALE_READER_INSTANCE_ID=
### Twins
MF_TWINS_LOG_LEVEL=debug
MF_TWINS_STANDALONE_ID=
MF_TWINS_STANDALONE_TOKEN=
MF_TWINS_CHANNEL_ID=
MF_TWINS_HTTP_HOST=twins
MF_TWINS_HTTP_PORT=9018
MF_TWINS_HTTP_SERVER_CERT=
MF_TWINS_HTTP_SERVER_KEY=
MF_TWINS_CACHE_URL=twins-redis:${MF_REDIS_TCP_PORT}
MF_TWINS_CACHE_PASS=
MF_TWINS_CACHE_DB=0
MF_THINGS_ES_URL=es-redis:${MF_REDIS_TCP_PORT}
MF_THINGS_ES_PASS=
MF_THINGS_ES_DB=0
MF_TWINS_DB_HOST=twins-db
MF_TWINS_DB_PORT=27018
MF_TWINS_DB_NAME=twins
MF_TWINS_INSTANCE_ID=
### SMTP Notifier
MF_SMTP_NOTIFIER_LOG_LEVEL=debug
MF_SMTP_NOTIFIER_CONFIG_PATH=/config.toml
MF_SMTP_NOTIFIER_FROM_ADDR=
MF_SMTP_NOTIFIER_HTTP_HOST=smtp-notifier
MF_SMTP_NOTIFIER_HTTP_PORT=9015
MF_SMTP_NOTIFIER_HTTP_SERVER_CERT=
MF_SMTP_NOTIFIER_HTTP_SERVER_KEY=
MF_SMTP_NOTIFIER_DB_HOST=smtp-notifier-db
MF_SMTP_NOTIFIER_DB_PORT=5432
MF_SMTP_NOTIFIER_DB_USER=mainflux
MF_SMTP_NOTIFIER_DB_PASS=mainflux
MF_SMTP_NOTIFIER_DB_NAME=subscriptions
MF_SMTP_NOTIFIER_DB_SSL_MODE=disable
MF_SMTP_NOTIFIER_DB_SSL_CERT=
MF_SMTP_NOTIFIER_DB_SSL_KEY=
MF_SMTP_NOTIFIER_DB_SSL_ROOT_CERT=
MF_SMTP_NOTIFIER_EMAIL_TEMPLATE=smtp-notifier.tmpl
MF_SMTP_NOTIFIER_INSTANCE_ID=
### SMPP Notifier
MF_SMPP_NOTIFIER_LOG_LEVEL=debug
MF_SMPP_NOTIFIER_FROM_ADDR=
MF_SMPP_NOTIFIER_CONFIG_PATH=/config.toml
MF_SMPP_NOTIFIER_HTTP_HOST=smpp-notifier
MF_SMPP_NOTIFIER_HTTP_PORT=9014
MF_SMPP_NOTIFIER_HTTP_SERVER_CERT=
MF_SMPP_NOTIFIER_HTTP_SERVER_KEY=
MF_SMPP_NOTIFIER_DB_HOST=smpp-notifier-db
MF_SMPP_NOTIFIER_DB_PORT=5432
MF_SMPP_NOTIFIER_DB_USER=mainflux
MF_SMPP_NOTIFIER_DB_PASS=mainflux
MF_SMPP_NOTIFIER_DB_NAME=subscriptions
MF_SMPP_NOTIFIER_DB_SSL_MODE=disable
MF_SMPP_NOTIFIER_DB_SSL_CERT=
MF_SMPP_NOTIFIER_DB_SSL_KEY=
MF_SMPP_NOTIFIER_DB_SSL_ROOT_CERT=
MF_SMPP_ADDRESS=localhost:2775
MF_SMPP_USERNAME=
MF_SMPP_PASSWORD=
MF_SMPP_SYSTEM_TYPE=
MF_SMPP_SRC_ADDR_TON=5
MF_SMPP_DST_ADDR_TON=1
MF_SMPP_SRC_ADDR_NPI=0
MF_SMPP_DST_ADDR_NPI=1
MF_SMPP_NOTIFIER_INSTANCE_ID=
### GRAFANA and PROMETHEUS
MF_PROMETHEUS_PORT=9090
MF_GRAFANA_PORT=3000
MF_GRAFANA_ADMIN_USER=mainflux
MF_GRAFANA_ADMIN_PASSWORD=mainflux
# Docker image tag
MF_RELEASE_TAG=latest