bytebeamio/rumqttd

By bytebeamio

Updated about 1 year ago

A high performance MQTT broker written in Rust which is light weight and embeddable.

Image

50K+

rumqttd

rumqttd is a high performance MQTT broker written in Rust which is light weight and embeddable allowing you to use it as a library in your code and extend functionality.

Quick Links

Getting Started

rumqttd can be used with docker by pulling the image from docker hub as follows:

docker pull bytebeamio/rumqttd

To use the rumqttd docker image with the included demo.toml while exposing the necessary ports for clients to interact with the broker, use the following command:

docker run -p 1883:1883 -p 1884:1884 -it bytebeamio/rumqttd -c demo.toml

One can also mount the local directory containing configs as a volume and use the appropriate config file as follows:

docker run -v /path/to/configs:/configs -p 1883:1883 -it bytebeamio/rumqttd -c /configs/config.toml
How to use with TLS

To connect an MQTT client with rumqttd over TLS, create relevant certificates for the broker and client using provision as follows:

provision ca // generates ca.cert.pem and ca.key.pem
provision server --ca ca.cert.pem --cakey ca.key.pem --domain localhost // generates localhost.cert.pem and localhost.key.pem
provision client --ca ca.cert.pem --cakey ca.key.pem --device 1 --tenant a // generates 1.cert.pem and 1.key.pem

Update config file for rumqttd with the generated certificates(NOTE: ensure the path provided is mounted with the docker container appropriately):

[v4.2.tls]
    certpath = "path/to/localhost.cert.pem"
    keypath = "path/to/localhost.key.pem"
    capath = "path/to/ca.cert.pem"

You may also use certgen, tls-gen or openssl to generate self-signed certificates, though we recommend using provision.

NOTE: Mount the folders containing the generated tls certificates and the proper config file(with absolute paths to the certificate) to enable tls connections with rumqttd running inside docker.

Docker Pull Command

docker pull bytebeamio/rumqttd