Hướng dẫn cài đặt MQTT Broker lên Synology NAS

MQTT là một giao thức Smarthome khá phổ biến và sẽ được sử dụng nhiều trong các dự án nhà thông minh DIY. Tiếp nối nội dung về sử dụng NAS như một local server cho nhà thông minh như là host server Home Assistant, bài viết này mình sẽ hướng dẫn các bạn cài đặt và host một local MQTT Broker.
Bài này sẽ gồm cài đặt MQTT Broker và bảo mật cơ bản cho MQTT Broker. Hầu hết sẽ dùng giao diện người dùng cơ bản, không phải SSH hay code quá nhiều. Mình đã dùng thử một vài cách thì thấy đây sẽ là cách dễ nhất cho người mới bắt đầu mà vẫn đảm bảo các bạn có thể tuỳ biến MQTT Broker trong tương lai theo ý muốn một cách dễ dàng nhất.
Nội dung chính
Cài đặt MQTT Broker trên Synology NAS
Để chuẩn bị cài đặt, các bạn cần làm 2 việc trước. Đầu tiên là vào Package Center để tải về Text Editor, đây là ứng dụng để edit text cơ bản, các bước sau sẽ dùng đến.

Và tải thêm ứng dụng Container Manager (Docker) nếu các bạn chưa có.

Kế tiếp, dùng File Station vào folder docker, tạo 1 folder mới tên là ‘mosquitto’, và trong folder đó tạo tiếp 3 folder con là ‘config’, ‘data’ và ‘log’.

Copy file mosquitto.conf rồi upload vào folder config. File này là mình đã config cơ bản trước, phần sau mình sẽ hướng dẫn edit chi tiết hơn. Tải file mosquitto.log rồi upload vào folder log. Các bạn có thể download 2 file đó tại Google Drive của mình.
Vậy là xong bước chuẩn bị.
Tiếp tục cài đặt, vào Container Manager → Registry → search eclipse-mosquitto và Download

Sau đó vào Image → chọn eclipse-mosquitto rồi ấn Run

General Settings: các bạn có thể chọn bật auto-restart để MQTT server sẽ tự chạy sau khi NAS khởi động. Sau đó ấn Next.

Advanced Settings, các bạn kéo xuống phần Volume. Làm 2 việc để ra kết quả như hình minh hoạ:
- Add Folder, chọn đến folder config đã tạo lúc trước, rồi điền /mosquitto/config vào ô bên phải
- Add File, chọn đế file mosquitto.log đã upload lên folder log lúc trước, rồi điền /mosquitto/log/mosquitto.log vào ô bên phải

Kéo xuống phần Environment, chọn Add thêm mục TZ và Asis/Ho_Chi_Minh như hình để đặt chuẩn timezone.

Tiếp tục kéo xuống phần Network chọn host. Sau đó nhấn Next.

Review lại cài đặt trong trang Summary rồi ấn Done.

Các bạn vào mục Container thấy eclipse-mosquitto chạy sáng xanh như thế này mà không báo lỗi gì thì cơ bản là đã thành công.

Các bạn có thể mở file log đã upload lên lúc trước, từ 1 file trắng sẽ thành file có thông tin như hình dưới, như vậy là MQTT Broker đã chạy.

Lúc này, có thể sử dụng MQTT Explorer để kết nối đến Broker để kiểm tra thêm.

Nếu connect được như hình dưới tức là MQTT Broker đã hoạt động.

Tuy nhiên, MQTT Broker hiện chưa có được bảo mật gì cả. Mình sẽ hướng dẫn các bạn tiếp về bảo mật cơ bản với mật khẩu (để dùng trong mạng local) và bảo mật nâng cao với mã hoá TLS/SSL (để dùng với internet)
Bảo mật cơ bản với username và mật khẩu cho MQTT Broker
Các bạn vẫn vào mục Container và chọn Detail

Sau đó chọn Action → Open Terminal

Ấn vào mũi tên bên cạnh mục Create và chọn Launch with command

Điền ‘ash’ vào command và ấn OK

Chúng ta sẽ có được phần command giống như hình.

Các bạn gõ những lệnh sau:
Trỏ vào thư mục config bằng lệnh dưới (để sau này file username và password sẽ nằm trong này và chúng ta sẽ phải sửa file config ở bước sau)
cd /mosquitto/config

Gõ lệnh để tạo file password, mục passwordfilename các bạn tuỳ ý đặt (vd: pwfile), username cũng tuỳ ý đặt (vd: ngonboxe) rồi ấn Enter.
mosquitto_passwd -c passwordfilename username
Màn hình Terminal sẽ yêu cầu các bạn nhập Password. Các bạn nhập password mong muốn, lưu ý là khi nhập trên màn hình sẽ không hiển thị gì cả. Sau đó enter là sẽ bắt nhập password lần 2, các bạn nhập đúng password và Enter là được.

Sau khi xong, terminal có warning đề nghị fix permission cho file password vừa tạo, các bạn gõ đúng lệnh đó theo hướng dẫn rồi enter nữa là xong, như trường hợp của mình là gõ lệnh dưới rồi enter:
chmod 0700 pwfile

Vậy là xong bước tạo file Password, các bạn có thể đóng Terminal lại.
Giờ các bạn vào lại thư mục config của Mosquitto bằng File Station sẽ thấy file pwfile nằm trong thư mục config, như vậy là đã tạo file password xong, giờ các bạn mở file mosquitto.conf (cứ nhấn đúp vào file là NAS sẽ mở nó bằng Text Editor đã cài đặt lúc trước)
Tại dòng 2, các bạn đổi allow_anonymous true thành allow_anonymous false và sau đó thêm 1 dòng ở cuối file: password_file /mosquitto/config/pwfile rồi Save file lại và đóng Text Editor.

Rồi sau đó quay lại Container Manager và Restart container.

Như vậy là đã thành công. Giờ các bạn có thể dùng MQTT Explorer để thử kết nối đến MQTT broker trên NAS, nếu không điền đúng username và mật khẩu sẽ không kết nối được, và ngược lại, phải điền đúng là sẽ kết nối bình thường.
Về cơ bản như vậy là đã xong.
Bảo mật nâng cao với TLS/SSL
Phần này là để cấu hình bảo mật TLS/SSL khi kết nối đến MQTT Server thông qua internet bằng domain name, tức là các bạn đã phải nắm rõ những thứ cơ bản dưới đây, mình sẽ không nhắc lại nữa:
- Mở port – Port Forwarding
- Cấu hình Firewall
- Cài đặt DDNS cho NAS (domain)
- Lấy chứng chỉ Let Encrypt cho DDSN
Mình sẽ hướng dẫn các bạn sử dụng chính chứng chỉ TLS/SSL Let Encrypt đã lấy cho domain của NAS để có thể tích hợp vào MQTT Broker và sử dụng MQTT thông qua TLS/SSL đó.
Các bạn vào Control Panel → Sercurity → Certificate để Export Certificate các bạn muốn dùng cho MQTT Broker, chúng ta sẽ có 1 file zip gồm nhiều file nhưng sẽ dùng đến 3 file sau: cert.pem, chain.pem và privkey.pem
Các bạn upload 3 file đó vào thư mục config của mosquitto. Sau đó mở file mosquitto.config và thêm những dòng sau:
- listener 8883
- cafile /mosquitto/config/chain.pem
- certfile /mosquitto/config/cert.pem
- keyfile /mosquitto/config/privkey.pem
Sau đó save file lại và restart container.
Như vậy là các bạn có thể kết nối đến MQTT Broker thông qua DDNS và internet với kết nối bảo mật thông qua TLS/SSL. Để truy cập sẽ theo cấu trúc mqtt://domain.name:8883
Hi vọng bài viết này sẽ giúp ích các bạn.
Nếu thấy nội dung bài viết hữu ích, hãy chia sẻ cho bạn bè và người thân. Đừng quên theo dõi Ngon Bổ Xẻ qua Facebook và Youtube để luôn cập nhật các nội dung mới nhất. Ngoài ra, mình cũng có lập Group FB chuyên chia sẻ các deal hời cho anh em về công nghệ, điện từ, gia dụng… các bạn cũng có thể tham gia nha. Một lần nữa, chân thành cám ơn các bạn và hẹn gặp lại trong những nội dung kế tiếp ❤️
Chia sẻ bài viết: