A mini mosquitto MQTT broker server in Alpine Linux
611
A lightweight, secure Docker container for the Mosquitto MQTT broker based on Alpine Linux.
docker run --rm -d -p 1882:1883 luongnv89/mosquitto-mqtt-broker
# Clone the repository
git clone https://github.com/luongnv89/mosquitto-mqtt-broker.git
cd mosquitto-mqtt-broker
# Build the image
docker build -t luongnv89/mosquitto-mqtt-broker .
# Run the container
docker run --rm -d -p 1882:1883 luongnv89/mosquitto-mqtt-broker
Run the broker in detached mode:
docker run --rm -d --name mosquitto -p 1883:1883 luongnv89/mosquitto-mqtt-broker
Map to a different host port:
docker run --rm -d --name mosquitto -p 8883:1883 luongnv89/mosquitto-mqtt-broker
Mount volumes for persistent data and logs:
docker run --rm -d --name mosquitto \
-p 1883:1883 \
-v $(pwd)/data:/mosquitto/data \
-v $(pwd)/log:/mosquitto/log \
luongnv89/mosquitto-mqtt-broker
docker logs mosquitto
macOS:
brew install mosquitto
Ubuntu/Debian:
apt-get install mosquitto-clients
Open a terminal and subscribe to a test topic:
mosquitto_sub -h localhost -p 1883 -t test/topic
In another terminal, publish a message:
mosquitto_pub -h localhost -p 1883 -t test/topic -m "Hello MQTT!"
You should see the message appear in the subscriber terminal.
⚠️ Important: This container runs with default Mosquitto configuration:
This repository includes example configuration files and a setup script to help you quickly configure a secure MQTT broker.
Use the provided setup script to configure security automatically:
# Run the setup script
./setup-security.sh
The script will:
config directory with secure configuration filesAfter running the script, start the broker with:
docker run -d --name mosquitto \
-p 1883:1883 \
-v $(pwd)/config:/mosquitto/config \
-v $(pwd)/data:/mosquitto/data \
-v $(pwd)/log:/mosquitto/log \
luongnv89/mosquitto-mqtt-broker \
-c /mosquitto/config/mosquitto.conf
If you prefer to set up security manually:
1. Create configuration files:
mkdir -p config data log
cp mosquitto.conf.example config/mosquitto.conf
cp acl.example config/acl
2. Create password file and add users:
# Create password file with first user (admin)
docker run --rm -v $(pwd)/config:/mosquitto/config \
luongnv89/mosquitto-mqtt-broker \
mosquitto_passwd -c /mosquitto/config/passwd admin
# Add additional users (without -c flag)
docker run --rm -v $(pwd)/config:/mosquitto/config \
luongnv89/mosquitto-mqtt-broker \
mosquitto_passwd /mosquitto/config/passwd publisher
3. Edit ACL file (config/acl) to define topic permissions:
# Admin has full access
user admin
topic readwrite #
# Publisher can only write to sensor topics
user publisher
topic write sensor/#
# Subscriber can only read from sensor topics
user subscriber
topic read sensor/#
4. Start the broker with secure configuration:
docker run -d --name mosquitto \
-p 1883:1883 \
-v $(pwd)/config:/mosquitto/config \
-v $(pwd)/data:/mosquitto/data \
-v $(pwd)/log:/mosquitto/log \
luongnv89/mosquitto-mqtt-broker \
-c /mosquitto/config/mosquitto.conf
5. Test with authentication:
# Subscribe with authentication
mosquitto_sub -h localhost -p 1883 -u admin -P <password> -t test/topic
# Publish with authentication
mosquitto_pub -h localhost -p 1883 -u admin -P <password> -t test/topic -m "Secure message"
The example configuration (mosquitto.conf.example) includes:
Add a new user:
docker run --rm -v $(pwd)/config:/mosquitto/config \
luongnv89/mosquitto-mqtt-broker \
mosquitto_passwd /mosquitto/config/passwd <username>
Change user password:
docker run --rm -v $(pwd)/config:/mosquitto/config \
luongnv89/mosquitto-mqtt-broker \
mosquitto_passwd /mosquitto/config/passwd <username>
Delete a user:
docker run --rm -v $(pwd)/config:/mosquitto/config \
luongnv89/mosquitto-mqtt-broker \
mosquitto_passwd -D /mosquitto/config/passwd <username>
This repository uses GitHub Actions for automated builds and deployments:
For setup instructions, see GITHUB_ACTIONS_SETUP.md
This image is regularly scanned with Docker Scout:
See LICENSE file for details.
Content type
Image
Digest
sha256:0b8526ae0…
Size
4 MB
Last updated
9 months ago
docker pull luongnv89/mosquitto-mqtt-broker