Email Doanh NghiệpSSLFirewall Anti DDoSTối ưu tốc độ website

NỘI DUNG

Banner blog lễ 30.4 và 1.5

Cách cài đặt và cấu hình Mosquitto MQTT Broker trên Ubuntu 20.04 Server

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:22/05/2025
Lượt xem

Đánh giá

Mosquitto MQTT Broker là phần mềm mã nguồn mở phổ biến dùng để truyền nhận dữ liệu giữa các thiết bị trong hệ thống IoT theo giao thức MQTT. Bài viết này sẽ hướng dẫn bạn cài đặt Mosquitto trên Ubuntu 20.04 từ bước chuẩn bị hệ thống, cài đặt dịch vụ đến sử dụng máy khách để gửi/nhận tin nhắn. Ngoài ra, bạn sẽ được tìm hiểu cách bảo mật broker bằng tài khoản người dùng và file cấu hình tùy chỉnh.

Điểm chính cần nắm

  • Mosquitto MQTT Broker là gì?: Giới thiệu ngắn gọn về Mosquitto và vai trò của nó trong giao tiếp MQTT.
  • Cài đặt Mosquitto Broker trên Ubuntu 20.04: Hướng dẫn từng bước cài đặt Mosquitto trên máy chủ Ubuntu.
  • Cài đặt và sử dụng Mosquitto Clients: Hướng dẫn cài đặt máy khách Mosquitto và kiểm tra hoạt động gửi/nhận tin nhắn.
  • Bảo mật Mosquitto: Thiết lập bảo mật cho Mosquitto bằng file cấu hình và xác thực người dùng.
  • Vietnix – Giải pháp lưu trữ hiệu suất cao cho mọi nhu cầu website: Giới thiệu dịch vụ hosting hiệu suất cao và đáng tin cậy từ Vietnix.
  • FAQ: Giải đáp các câu hỏi thường gặp liên quan đến cài đặt và sử dụng Mosquitto.

Mosquitto MQTT Broker là gì?

Mosquitto MQTT Broker là một phần mềm mã nguồn mở đóng vai trò là trung gian (broker) trong hệ thống giao tiếp dựa trên giao thức MQTT (Message Queuing Telemetry Transport) — một giao thức nhẹ, tối ưu cho các ứng dụng Internet of Things (IoT). Mosquitto hoạt động như một máy chủ trung tâm, nơi các thiết bị có thể:

  • Gửi dữ liệu (publisher),
  • Nhận dữ liệu (subscriber),
    thông qua mô hình xuất bản/đăng ký (publish/subscribe) dựa trên chủ đề (topic).
Mosquitto MQTT Broker dùng để truyền nhận dữ liệu giữa các thiết bị trong hệ thống IoT
Mosquitto MQTT Broker dùng để truyền nhận dữ liệu giữa các thiết bị trong hệ thống IoT

Đặc điểm chính của Mosquitto:

  • Nhẹ, nhanh, hiệu quả – hoạt động tốt trên các thiết bị tài nguyên thấp như Raspberry Pi, ESP8266, v.v.
  • Hỗ trợ chuẩn MQTT v3.1, v3.1.1 và v5.0.
  • Có cả máy chủ (broker)công cụ dòng lệnh (client) để kiểm thử nhanh.
  • Hỗ trợ bảo mật: xác thực người dùng, mã hóa TLS/SSL.
  • Có thể mở rộng và tích hợp với nhiều ngôn ngữ lập trình như Python, Node.js, Golang, v.v.

Ví dụ thực tế:

  • Thiết bị cảm biến nhiệt độ gửi dữ liệu đến Mosquitto.
  • Một app giám sát hoặc hệ thống lưu trữ (InfluxDB, Grafana) đăng ký theo dõi chủ đề dữ liệu đó để xử lý hoặc hiển thị.

Cài đặt Mosquitto Broker trên Ubuntu 20.04

Để bắt đầu sử dụng giao thức MQTT trong dự án IoT, bạn cần một broker — và Mosquitto là một lựa chọn nhẹ, ổn định và dễ cài đặt. Trong phần này, mình sẽ hướng dẫn bạn cách cài đặt Mosquitto trên máy chủ Ubuntu 20.04.

Chuẩn bị hệ thống

Trước khi bắt đầu, bạn cần chuẩn bị:

  • Một máy chủ chạy Ubuntu 20.04 đã được cài đặt đầy đủ.
  • Tài khoản người dùng không phải root, nhưng có quyền sudo để thực hiện các lệnh quản trị hệ thống.

Nếu bạn chưa có máy chủ, có thể tham khảo dịch vụ VPS tại Vietnix – hỗ trợ cài sẵn Ubuntu, dễ dàng bắt đầu chỉ với vài cú click.

Bước 1: SSH vào máy chủ Ubuntu

Kết nối đến máy chủ Ubuntu 20.04 của bạn thông qua SSH:

ssh ten_nguoi_dung@dia_chi_ip_may_chu

Bước 2: Cập nhật hệ thống

Trước tiên, hãy cập nhật danh sách gói phần mềm để đảm bảo bạn cài phiên bản mới nhất:

sudo apt update

Bước 3: Cài đặt Mosquitto

Mosquitto có sẵn trong kho phần mềm chính thức của Ubuntu nên bạn chỉ cần chạy lệnh sau:

sudo apt install -y mosquitto

Lệnh này sẽ cài đặt service Mosquitto và kích hoạt nó tự động khi hệ thống khởi động lại.

Bước 4: Kiểm tra trạng thái dịch vụ Mosquitto

Sau khi cài đặt xong, Mosquitto sẽ tự động chạy dưới dạng một dịch vụ hệ thống. Kiểm tra trạng thái bằng lệnh:

sudo systemctl status mosquitto

Nếu mọi thứ ổn định, bạn sẽ thấy trạng thái là active (running). Mosquitto giờ đây đang lắng nghe kết nối MQTT trên cổng mặc định 1883 và kết quả sẽ tương tự như sau:

● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled)
     Active: active (running) since...

Bước 5: Quản lý dịch vụ Mosquitto

  • Dừng dịch vụ: sudo systemctl stop mosquitto
  • Khởi động lại dịch vụ: sudo systemctl restart mosquitto
  • Bật dịch vụ khởi động cùng hệ thống (nếu chưa): sudo systemctl enable mosquitto

Cài đặt và sử dụng Mosquitto Clients

Sau khi cài đặt Mosquitto broker, bạn cần một công cụ để kiểm thử việc gửi và nhận tin nhắn qua MQTT. Mosquitto cung cấp sẵn một bộ client dòng lệnh rất tiện lợi, bao gồm:

  • mosquitto_pub: dùng để gửi (publish) tin nhắn.
  • mosquitto_sub: dùng để nhận (subscribe) tin nhắn.

Bước 1: Cài đặt Mosquitto Clients

Trên hệ thống Ubuntu, bạn có thể cài đặt công cụ dòng lệnh Mosquitto Client bằng lệnh:

sudo apt install -y mosquitto-clients

Sử dụng Mosquitto Clients để test MQTT: Sau khi cài xong, bạn có thể bắt đầu thử publish/subscribe đơn giản để kiểm tra kết nối MQTT.

Bước 2: Mở hai cửa sổ terminal

Bạn sẽ cần hai cửa sổ terminal để thử nghiệm chức năng publish/subscribe:

  • Terminal 1: Đăng ký chủ đề nhiệt độ

Chạy lệnh sau để đăng ký chủ đề home/temperature/living_room:

mosquitto_sub -t "home/temperature/living_room"

Terminal này sẽ ở trạng thái lắng nghe dữ liệu nhiệt độ gửi đến chủ đề đó.

  • Terminal 2: Gửi dữ liệu nhiệt độ

Trong terminal thứ hai, giả lập cảm biến nhiệt độ gửi dữ liệu:

mosquitto_pub -m "27.5°C" -t "home/temperature/living_room"

Kết quả trong terminal 1 sẽ hiển thị:

27.5°C

Tiếp tục gửi một giá trị khác:

mosquitto_pub -m "28.1°C" -t "home/temperature/living_room"

Kết quả:

27.5°C  
28.1°C

Một số ứng dụng thực tế của Mosquitto và MQTT

  • Y tế: Gửi dữ liệu nhịp tim bệnh nhân từ cảm biến về trung tâm để theo dõi từ xa.
  • Dầu khí: Cảm biến từ vùng sâu gửi dữ liệu qua vệ tinh về broker trung tâm.
  • Giao thông: Gửi dữ liệu vị trí GPS của xe theo thời gian thực về trụ sở chính.
  • Ứng dụng chat: Cập nhật trạng thái người dùng và truyền tin nhắn nhanh chóng.
  • IoT & tự động hóa: Các thiết bị ESP8266, ESP32, Raspberry Pi gửi/nhận dữ liệu điều khiển và giám sát.

Bảo mật Mosquitto

Sau khi cài đặt xong Mosquitto, mặc định broker sẽ cho phép mọi thiết bị kết nối mà không yêu cầu xác thực. Điều này rất nguy hiểm trong môi trường thật vì bất kỳ ai cũng có thể gửi hoặc nhận dữ liệu từ broker của bạn. Để khắc phục, bạn cần cấu hình Mosquitto sử dụng tên người dùng và mật khẩu để xác thực trước khi cho phép thiết bị kết nối. Dưới đây là hướng dẫn chi tiết từng bước:

Bước 1: Tạo tệp cấu hình mới

Mosquitto đọc các tệp cấu hình trong thư mục /etc/mosquitto/conf.d/. Mình sẽ tạo một file mới để bật xác thực và chỉ cho phép các kết nối hợp lệ.

sudo nano /etc/mosquitto/conf.d/default.conf

Thêm nội dung sau vào file:

allow_anonymous false
password_file /etc/mosquitto/passwd

Giải thích:

  • allow_anonymous false: Không cho phép kết nối ẩn danh (không có tên người dùng/mật khẩu).
  • password_file: Chỉ định đường dẫn chứa thông tin người dùng được phép kết nối.

Nhấn Ctrl+O để lưu, rồi Enter, sau đó Ctrl+X để thoát.

Bước 2: Tạo file mật khẩu

Bạn sử dụng lệnh sau để tạo file passwd chứa thông tin đăng nhập:

sudo mosquitto_passwd -c /etc/mosquitto/passwd ten_nguoi_dung

Bạn sẽ được yêu cầu nhập mật khẩu cho người dùng vừa tạo.

iconLưu ý

  • Chỉ dùng -c lần đầu để tạo file.

  • Muốn thêm người dùng khác, KHÔNG dùng -c, ví dụ:

    sudo mosquitto_passwd /etc/mosquitto/passwd nguoi_dung_khac

Bước 3: Khởi động lại Mosquitto để áp dụng cấu hình mới

Sau khi đã cấu hình xác thực và tạo người dùng, bạn cần khởi động lại Mosquitto để áp dụng các thay đổi vừa rồi.

sudo systemctl restart mosquitto

Nếu không khởi động lại, cấu hình mới sẽ không có hiệu lực, và broker vẫn cho phép kết nối không cần đăng nhập.

Bước 4: Kiểm tra xác thực người dùng

  • Gửi thử một tin nhắn với thông tin đăng nhập đúng:
mosquitto_pub -u ten_nguoi_dung -P mat_khau -t test/topic -m "Tin nhắn từ client có xác thực"
  • -u: Tên người dùng.
  • -P: Mật khẩu tương ứng.
  • -t: Tên topic.
  • -m: Nội dung tin nhắn.
  • Đăng ký lắng nghe topic với xác thực:
mosquitto_sub -u ten_nguoi_dung -P mat_khau -t test/topic

Bạn sẽ thấy tin nhắn vừa gửi ở lệnh trên xuất hiện nếu xác thực đúng.

  • Thử gửi tin mà không có xác thực:
mosquitto_pub -t test/topic -m "Tin nhắn không xác thực"

Kết quả: Bạn sẽ nhận được lỗi như sau vì broker không cho phép kết nối ẩn danh – Connection error: Connection Refused: not authorised.

Vietnix – Giải pháp lưu trữ hiệu suất cao cho mọi nhu cầu website

Vietnix là đơn vị cung cấp dịch vụ hosting và VPS tốc độ cao, giúp website của bạn luôn vận hành mượt mà, ổn định và an toàn. Với hệ thống máy chủ hiện đại đặt tại Việt Nam, kết hợp cùng công nghệ bảo mật tiên tiến và đội ngũ kỹ thuật chuyên môn cao sẵn sàng hỗ trợ 24/7, Vietnix đảm bảo mang đến trải nghiệm lưu trữ tối ưu cho cả cá nhân và doanh nghiệp.

Dù bạn xây dựng một website giới thiệu đơn giản hay một hệ thống thương mại điện tử phức tạp, hạ tầng mạnh mẽ và hiệu năng vượt trội từ Vietnix luôn sẵn sàng đồng hành, giúp tăng tốc độ truy cập, tối ưu hiệu suất và bảo vệ dữ liệu toàn diện.

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.

Câu hỏi thường gặp

Làm sao để Mosquitto tự khởi động cùng hệ thống?

Khi cài bằng APT, Mosquitto được bật mặc định. Kiểm tra bằng systemctl enable mosquitto.

Làm sao tạo user/password cho Mosquitto?

Tạo file mật khẩu bằng mosquitto_passwd, ví dụ: mosquitto_passwd -c /etc/mosquitto/passwd user1.

Có thể chạy nhiều instance Mosquitto trên cùng một máy không?

Có, miễn là mỗi instance dùng file cấu hình riêng và lắng nghe trên cổng khác nhau.

Làm sao Mosquitto hoạt động nếu chỉ định cả listenerbind_address?

listener chỉ định cổng, còn bind_address chỉ định IP cụ thể để lắng nghe (ví dụ: chỉ nội bộ hoặc tất cả IP).

Mosquitto có hỗ trợ authentication theo IP không?

Không trực tiếp. Bạn cần dùng plugin hoặc proxy như NGINX hoặc Auth Plugin để thực hiện xác thực theo IP.

Có thể dùng Mosquitto làm hệ thống message queue thay thế Redis hoặc RabbitMQ không?

Trong một số ứng dụng IoT nhỏ và thời gian thực đơn giản, Mosquitto có thể thay thế, nhưng không có tính năng như hàng đợi, ưu tiên hoặc đảm bảo thứ tự phức tạp như Redis/RabbitMQ.

Lời kết

Việc cài đặt và cấu hình Mosquitto đúng cách giúp bạn xây dựng hệ thống giao tiếp giữa các thiết bị nhanh, ổn định và dễ mở rộng. Nếu bạn có bất cứ thắc mắc nào liên quan đến Mosquitto, bảo mật MQTT hoặc cần hỗ trợ kỹ thuật, đừng ngần ngại để lại bình luận hoặc liên hệ với chúng mình. Ngoài ra, nếu bạn đang tìm kiếm nền tảng hosting hiệu suất cao để triển khai ứng dụng IoT hoặc các dự án web, Vietnix là lựa chọn đáng tin cậy.

Mọi người cũng xem:

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi sinh nhật
Nhanh tay, số lượng có hạn!
17/05/2025 - 22/06/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG