MQTT and Sparkplug B

MQTT and Sparkplug B

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

Broker on your own network

The broker on your own network

modbee alone, plain MQTT on port 1883, for devices on a LAN, a VPN or a private
cloud network. Every device has its own login and may use only the topics you
give it.

Not for the open internet - there is no TLS here. On the internet use
../traefik (it gets a free certificate) or ../npm
(you already run Nginx Proxy Manager). Want the messages in Kafka too? Use
../broker-kafka.

Start it

You need a Linux server with Docker, and these four files.

cp .env.example .env        # set MQTT_PASSWORD (a long one)
docker compose up -d
docker compose logs modbee  # "modbee serve: ... on 0.0.0.0 port 1883"

Devices connect to mqtt://<this server>:1883.

Add a device

docker compose exec modbee modbee user add tank-01 \
  --publish 'plant/${username}/#' --subscribe 'plant/${username}/cmd'

It prints the device's password, once. tank-01 may then publish under
plant/tank-01/... and receive plant/tank-01/cmd, nothing else. Rules and
everything else about logins: docs/logins.md.

Many devices of one kind? Let them register themselves with one key instead:

docker compose exec modbee modbee key create site-north --site north \
  --publish 'plant/${username}/#' --subscribe 'plant/${username}/cmd'

Each device signs in once with that key and its own name, and is given its own
login (docs/logins.md).

Check it works

docker compose exec modbee modbee sub -t 'plant/#' -v      # in one terminal
docker compose exec modbee modbee pub -t plant/test -m hi  # in another

Inside the container modbee uses the admin login by itself. From another
computer add -h <server> -u admin -P '<MQTT_PASSWORD>'.

Keep it running

Upgrade docker compose pull && docker compose up -d - logins and retained messages stay (volume modbee-data)
Back up the logins docker compose exec modbee modbee backup - a copy in the volume's backups folder
Change a setting edit modbee.yaml, then docker compose restart modbee
Your own app in Docker join the network modbee and connect to modbee:1883
Last updated 2 hours ago
Was this helpful?
Thanks!