Mosquitto là một triển khai máy chủ miễn phí, mã nguồn mở và nhẹ của giao thức MQTT. Nó được thiết kế cho tất cả các thiết bị, từ máy tính bảng đơn công suất thấp đến máy chủ đầy đủ. MQTT hoạt động trên giao thức TCP/IP và sử dụng mạng gia đình Internet hiện có của bạn để gửi tin nhắn đến các thiết bị IoT của bạn và phản hồi các tin nhắn đó. Nó được viết bằng ngôn ngữ C, khiến nó nhanh hơn và hiệu quả hơn các trình môi giới MQTT khác.
Bài đăng này sẽ chỉ cho bạn cách cài đặt máy chủ Mosquitto trên Ubuntu 22.04.
Sau khi nâng cấp tất cả các gói, hãy chạy lệnh sau để cài đặt các gói cần thiết khác packages:
Sau khi cài đặt tất cả các gói cần thiết, bạn có thể tiến hành bước tiếp theo.
Sau khi kho lưu trữ được thêm vào APT, bạn có thể cài đặt nó bằng lệnh sau:
Sau khi quá trình cài đặt hoàn tất, bạn có thể xác minh trạng thái Mosquitto bằng lệnh sau lệnh:
Bạn sẽ thấy đầu ra sau:
Chúng ta hãy thiết lập người dùng và mật khẩu quản trị viên với thông tin sau lệnh:
Đặt mật khẩu như hiển thị bên dưới:
Tiếp theo, chỉnh sửa tệp cấu hình MQTT và xác định cổng và mật khẩu tệp.
Thêm các dòng sau:
Lưu và đóng tệp sau đó khởi động lại dịch vụ Mosquitto để áp dụng thay đổi.
Trước khi gửi và nhận tin nhắn, bạn sẽ cần đăng ký một chủ đề. Bạn có thể sử dụng một trong các chủ đề sau trong các ứng dụng tự động hóa gia đình.
Tiếp theo, mở giao diện thiết bị đầu cuối mới và đăng một thông báo lên chủ đề home/lights/kids_bedroom với nội dung sau lệnh.
Trên thiết bị đầu cuối đầu tiên, bạn sẽ nhận được tải trọng ON:
Bây giờ, hãy đến thiết bị đầu cuối thứ hai và gửi tin nhắn TẮT về cùng chủ đề.
Bạn sẽ thấy tin nhắn sau trên thiết bị đầu cuối đầu tiên:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trước tiên, hãy cài đặt trình quản lý gói Snap bằng lệnh sau:
Tiếp theo, hãy cập nhật gói Snap bằng lệnh sau lệnh:
Tiếp theo, cài đặt gói Certbot bằng lệnh sau:
Tiếp theo, tạo liên kết tượng trưng của tệp nhị phân Certbot tới hệ thống vị trí.
Tiếp theo, chạy lệnh sau để tạo chứng chỉ SSL.
Bạn sẽ thấy thông báo sau đầu ra:
Bạn có thể xem tất cả các tệp chứng chỉ được tạo bằng lệnh sau:
Bạn sẽ nhận được thông tin sau đầu ra:
Tiếp theo, tạo chứng chỉ Diffie-Hellman bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, hãy thiết lập quyền sở hữu thích hợp cho chứng chỉ Mosquitto.
Tiếp theo, hãy chỉnh sửa tệp cấu hình Mosquitto và xác định Let's Encrypt SSL.
Thêm các dòng sau:
Lưu và đóng tệp sau đó khởi động lại dịch vụ Mosquitto để áp dụng thay đổi.
Tiếp theo, xác minh kết nối Mosquitto bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành kiểm tra kết nối Mosquitto qua trình duyệt web.
Thêm các dòng sau:
Lưu và đóng tệp, sau đó khởi động lại dịch vụ Mosquitto để áp dụng thay đổi.
Tiếp theo, mở giao diện đầu cuối của bạn và chạy lệnh sau:
Bây giờ, hãy mở trình duyệt web của bạn và sử dụng máy khách MQTT dựa trên trình duyệt để kiểm tra chức năng WebSockets. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22358%22%3E%3C/svg%3E
Cung cấp máy chủ Mosquitto, cổng, tên người dùng, mật khẩu và nhấp vào nút Kết nối. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22415%22%3E%3C/svg%3E
Bây giờ, hãy nhập bất kỳ chủ đề, tin nhắn nào rồi nhấp vào nút Xuất bản.
Tiếp theo, quay lại giao diện thiết bị đầu cuối. Bạn sẽ thấy thông báo đã xuất bản của mình trong đầu ra sau:
Bài đăng này sẽ chỉ cho bạn cách cài đặt máy chủ Mosquitto trên Ubuntu 22.04.
Điều kiện tiên quyết
- Một máy chủ chạy Ubuntu 22.04.
- Mật khẩu gốc được cấu hình trên máy chủ của bạn.
Cài đặt các phụ thuộc bắt buộc
Trước khi bắt đầu, bạn nên cập nhật và nâng cấp tất cả các gói hệ thống lên phiên bản đã cập nhật. Bạn có thể cập nhật chúng bằng cách chạy lệnh sau:
Mã:
apt update -y
apt upgrade -y
Mã:
apt-get install curl gnupg2 wget git apt-transport-https ca-certificates -y
Cài đặt Mosquitto Server
Theo mặc định, gói Mosquitto không có trong kho lưu trữ mặc định của Ubuntu 22.04. Vì vậy, bạn sẽ cần thêm kho lưu trữ chính thức của Mosquitto vào APT. Bạn có thể thêm nó bằng lệnh sau:
Mã:
add-apt-repository ppa:mosquitto-dev/mosquitto-ppa -y
Mã:
apt install mosquitto mosquitto-clients -y
Mã:
systemctl status mosquitto
Mã:
? mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-12-06 04:50:33 UTC; 8s ago Docs: man:mosquitto.conf(5) man:mosquitto(8) Process: 5491 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 5492 ExecStartPre=/bin/chown mosquitto:mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 5493 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS) Process: 5494 ExecStartPre=/bin/chown mosquitto:mosquitto /run/mosquitto (code=exited, status=0/SUCCESS) Main PID: 5495 (mosquitto) Tasks: 1 (limit: 2242) Memory: 1.3M CPU: 23ms CGroup: /system.slice/mosquitto.service ??5495 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Dec 06 04:50:32 ubuntu2204 systemd[1]: Starting Mosquitto MQTT Broker...
Dec 06 04:50:33 ubuntu2204 systemd[1]: Started Mosquitto MQTT Broker.
Tạo mật khẩu quản trị MQTT
Vì lý do bảo mật, bạn nên định cấu hình xác thực mật khẩu cho MQTT.Chúng ta hãy thiết lập người dùng và mật khẩu quản trị viên với thông tin sau lệnh:
Mã:
mosquitto_passwd -c /etc/mosquitto/passwd hitesh
Mã:
Password:
Reenter password:
Mã:
nano /etc/mosquitto/conf.d/default.conf
Mã:
listener 1883
password_file /etc/mosquitto/passwd
Mã:
systemctl restart mosquitto
Cách sử dụng MQTT để gửi và nhận tin nhắn
Bạn sẽ cần sử dụng ứng dụng khách Mosquitto để kết nối với máy chủ Mosquitto, sau đó gửi và nhận tin nhắn về các chủ đề khác nhau.Trước khi gửi và nhận tin nhắn, bạn sẽ cần đăng ký một chủ đề. Bạn có thể sử dụng một trong các chủ đề sau trong các ứng dụng tự động hóa gia đình.
- home/lights/sitting_room
- home/lights/kitchen
- home/lights/master_bedroom
- home/lights/kids_bedroom
Mã:
mosquitto_sub -u hitesh -P password -t "home/lights/kids_bedroom"
Mã:
mosquitto_pub -u hitesh -P password -m "ON" -t "home/lights/kids_bedroom"
Mã:
ON
Mã:
mosquitto_pub -u hitesh -P password -m "OFF" -t "home/lights/kids_bedroom"
Mã:
ON
OFF
Bảo mật Mosquitto bằng Let's Encrypt SSL
Để bảo mật Mosquitto bằng SSL, bạn sẽ cần cài đặt gói máy khách Certbot vào máy chủ của mình.Trước tiên, hãy cài đặt trình quản lý gói Snap bằng lệnh sau:
Mã:
apt install snapd
Mã:
snap install core
snap refresh core
Mã:
snap install --classic certbot
Mã:
ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d mosquitto.linuxbuz.com
Mã:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for mosquitto.linuxbuz.com
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mosquitto.linuxbuz.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/mosquitto.linuxbuz.com/privkey.pem
This certificate expires on 2023-03-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mã:
ls /etc/letsencrypt/live/mosquitto.linuxbuz.com/
Mã:
cert.pem chain.pem fullchain.pem privkey.pem README
Mã:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Cấu hình MQTT để sử dụng Let's Encrypt SSL
Trước tiên, hãy sao chép tất cả các chứng chỉ đã tạo vào thư mục Mosquitto bằng lệnh sau:
Mã:
cp /etc/letsencrypt/live/mosquitto.linuxbuz.com/fullchain.pem /etc/mosquitto/certs/server.pem
cp /etc/letsencrypt/live/mosquitto.linuxbuz.com/privkey.pem /etc/mosquitto/certs/server.key
Mã:
chown -R mosquitto: /etc/mosquitto/certs
Mã:
nano /etc/mosquitto/conf.d/default.conf
Mã:
listener 8883
certfile /etc/mosquitto/certs/server.pem
cafile /etc/ssl/certs/ISRG_Root_X1.pem
keyfile /etc/mosquitto/certs/server.key
dhparamfile /etc/ssl/certs/dhparam.pem
Mã:
systemctl restart mosquitto
Mã:
mosquitto_pub -h mosquitto.linuxbuz.com -t "home/lights/kids_bedroom" -m "hello" -p 8883 --capath /etc/ssl/certs/ -u hitesh -P password
Cấu hình Mosquitto Websockets
Tiếp theo, bạn sẽ cần cấu hình Websockets để sử dụng giao thức MQTT từ bên trong trình duyệt. Bạn có thể bật nó bằng cách chỉnh sửa tệp cấu hình mặc định của Mosquitto:
Mã:
nano /etc/mosquitto/conf.d/default.conf
Mã:
listener 8083
protocol websockets
certfile /etc/mosquitto/certs/server.pem
cafile /etc/ssl/certs/ISRG_Root_X1.pem
keyfile /etc/mosquitto/certs/server.key
dhparamfile /etc/ssl/certs/dhparam.pem
Mã:
systemctl restart mosquitto
Mã:
mosquitto_sub -u hitesh -P password -t "home/lights/kids_bedroom"
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22358%22%3E%3C/svg%3E
Cung cấp máy chủ Mosquitto, cổng, tên người dùng, mật khẩu và nhấp vào nút Kết nối. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22415%22%3E%3C/svg%3E
Bây giờ, hãy nhập bất kỳ chủ đề, tin nhắn nào rồi nhấp vào nút Xuất bản.
Tiếp theo, quay lại giao diện thiết bị đầu cuối. Bạn sẽ thấy thông báo đã xuất bản của mình trong đầu ra sau:
Mã:
Hi