Kali ini saya akan membuat mqtt broker menggunakan Eclipse Mosquitto, selain gratis, setup nya juga gampang (setidaknya untuk kebutuhan sendiri). Mosquitto akan dijalankan di dalam container docker menggunakan aplikasi portainer. Portainer adalah aplikasi GUI berbasis web yang memudahkan untuk manajemen docker.
Persiapan file dan direktori
Container Mosquitto membutuhkan 3 folder untuk menyimpan konfigurasi, data dan log
|
|
Kemudian membuat file konfigurasi awal mosquitto
|
|
isi file konfigurasi
|
|
Konfigurasi di portainer
Untuk membuat container di portainer, pilih menu Containers > Add container. Di halaman Create container isikan parameter berikut:
- Name: mosquitto
- Image: eclipse-mosquitto
- Manual network port publishing:
- host: 1883 > container: 1883, port untuk host bisa menggunakan port acak, tidak harus sama 1883
- Command & logging:
- User: 1883, untuk user mosquitto di dalam container
- Console: Interactive & TTY
- Volumes: container > host
- /mosquitto/config/mosquitto.conf > /home/orangepi/mosquitto/config/mosquitto.conf
- /mosquitto/data > /home/orangepi/mosquitto/data
- /mosquitto/log > /home/orangepi/mosquitto/log
- Restart policy: Always
Setelah semua diisi, klik Deploy the container. Setelah container sukses dibuat dan status running, Saatnya testing.
Test koneksi broker
Testing broker mqtt menggunakan aplikasi MQTT Explorer, isi parameter berikut: Nama: mqtt broker, isi nama untuk koneksi Protocol: mqtt:// Host: 10.0.11.240, alamat IP broker Port: 1883, port listener mosquitto, sesuaikan dengan setting port host Username dan password, sementara dikosongkan Klik Save dan Connect
Jika koneksi berhasil, akan muncul tampilan explore mqtt broker, dan di log mosquitto mucul log baru :
|
|
Untuk cek log, jalankan perintah sudo tail -f mosquitto/log/mosquitto.log
. Jika file konfigurasi log_dest di set stdout, untuk cek log docker logs -f mosquitto
Menambahkan user untuk akses broker
Sangat penting untuk setting akun untuk otentikasi, agar tidak sembarang pengguna bisa mengakses mqtt broker.
Membuat password file
Untuk membuat password file gunakan perintah mosquito_passwd
, perintah lengkapnya sebagai berikut mosquitto_passwd -c <password file> <username>
, parameter -c
untuk membuat file baru. Karena saya membuat mosquitto di dalam docker container, jadi untuk menjalankan mosquitto_passwd
harus diawali dengan perintah docker exec, docker exec -it <nama container> <perintah>
Perintah lengkap :
|
|
Setelah menjalankan perintah diatas maka akan muncul prompt untuk memasukkan password, ketik password kemudian enter dan ulangi password untuk konfirmasi.
Untuk cek file hasil dari perintah diatas, jalankan perintah
|
|
File akan berisi username dan password yang telah dienkripsi.
Update file config
Untuk menerapkan otentikasi pada broker, harus ditambahkan konfigurasi untuk memuat file password yang sudah dibuat tadi
|
|
Setelah update file config, restart container mosquitto, kemudian test menggunakan MQTT explorer
jika sudah berhasil test login mqtt explorer dengan username dan password yang baru dibuat,
maka parameter file konfigurasi allow_anonymous true
perlu diubah menjadi allow_anonymous false
agar tidak sembarang orang bisa mengakses broker mosquitto.