MQTT Service là một dịch vụ sử dụng giao thức MQTT (Message Queuing Telemetry Transport) để truyền nhận dữ liệu giữa các thiết bị. Dự án này cung cấp môi trường MQTT đóng gói sẵn trong Docker để dễ dàng triển khai.
- Docker
- Docker Compose
Dự án này yêu cầu xác thực username/password (allow_anonymous false). Bạn PHẢI tạo file password trước khi chạy docker-compose.
# Tạo user admin với password admin123
docker run --rm -v ./config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -c -b /mosquitto/config/pwfile admin admin123
# Thêm user khác (tùy chọn)
docker run --rm -v ./config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -b /mosquitto/config/pwfile user1 password123# Tạo file password với user admin
mosquitto_passwd -c config/pwfile admin
# Thêm user khác
mosquitto_passwd config/pwfile user1# Windows
echo admin:admin123 > config\pwfile
echo user1:password123 >> config\pwfile
# Linux/Mac
echo "admin:admin123" > config/pwfile
echo "user1:password123" >> config/pwfile- Clone repository:
git clone https://github.com/hungtx2001/mqtt-server.git
cd mqtt-server-
Tạo username/password (chọn một trong các cách trên)
-
Khởi chạy MQTT broker:
docker-compose up -d- Kiểm tra trạng thái:
docker-compose ps
docker-compose logs mqttallow_anonymous false # Yêu cầu xác thực username/password
listener 1883 # Port MQTT chuẩn
persistence true # Lưu trữ dữ liệu vĩnh viễn
password_file /mosquitto/config/pwfile # File chứa username/password
persistence_file mosquitto.db # File database
persistence_location /mosquitto/data/ # Thư mục lưu trữ
- Host: localhost (hoặc IP server)
- Port: 1883
- Username: Theo file
config/pwfile - Password: Theo file
config/pwfile - Protocol: MQTT v3.1.1/v5.0
# Thêm user vào file password hiện có
docker run --rm -v ./config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -b /mosquitto/config/pwfile newuser newpassword
# Restart container để áp dụng
docker-compose restart# Xóa user khỏi file password
docker run --rm -v ./config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -D /mosquitto/config/pwfile username
# Restart container
docker-compose restart# Đổi password cho user hiện có
docker run --rm -v ./config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -b /mosquitto/config/pwfile username newpassword
# Restart container
docker-compose restart# Subscribe
mosquitto_sub -h localhost -p 1883 -u admin -P admin123 -t test/topic
# Publish
mosquitto_pub -h localhost -p 1883 -u admin -P admin123 -t test/topic -m "Hello MQTT"- MQTT Explorer: GUI tool để test MQTT
- MQTTX: Cross-platform MQTT client
- Postman: Hỗ trợ MQTT testing
- Kiểm tra container đang chạy:
docker-compose ps - Kiểm tra log:
docker-compose logs mqtt5 - Kiểm tra file password tồn tại:
ls -la config/pwfile
- Kiểm tra username/password đúng
- Kiểm tra file
config/pwfilecó nội dung - Restart container:
docker-compose restart
- Kiểm tra cấu hình:
docker-compose config - Kiểm tra quyền file:
chmod 644 config/pwfile - Xem log chi tiết:
docker-compose logs -f mqtt5