# Instalasi & Konfigurasi Message Broker MQTT Mosquitto

## Pengantar

Seperti dijelaskan pada bagian sebelumnya, bahwa di dalam konsep *client-server*, message broker merupakan entitas tersendiri yang berjalan pada protokol TCP/IP, ia bertindak sebagai *server message* yang melayani *client message* dengan konsep *publish/subscribe* dan *topic*.

![Arsitektur Message Broker Secara Umum](/files/-Mbdx88WzyLYYTfXtwhM)

![Arsitektur Message Broker Pada Cloud AWS](/files/-MbdxDHsyyBQv2nHjHBb)

Di beberapa jenis produk message broker disertai dengan mekanisme routing queue (antrian) dengan berbagai jenis model broadcast message seperti yang terdapat pada [RabbitMQ](https://www.rabbitmq.com).

![Arsitektur Message Broker Pada MQTT](/files/-Mbdxh6l-9dtoUq8LhSU)

Terdapat beberapa protokol message broker yang bisa digunakan, misalnya AMQP, CoAP, EMQ, MQTT dan lain-lain. Namun pada kesempatan ini kita akan menggunakan message broker MQTT, dimana secara defacto message broker MQTT banyak diimplementasikan pada saat ini.

## Instalasi Message Broker MQTT Mosquitto

Pada bagian ini kita akan menginstalasi dan mengkonfigurasi message broker MQTT dengan konfigurasi minimal. Salah satu message broker MQTT yang populer adalah Mosquitto. Anda dapat men-downloadnya di <https://mosquitto.org/download/> atau [download di sini](https://drive.google.com/file/d/10fGD8_2RmLTw9uk5Ij5C385gFCZlJKaO/view?usp=sharing).

![Download File Mosquitto](/files/-Mbe4iuDefwfCwdAzZIm)

Pilih file mosquitto yang sesuai dengan mesin Anda untuk di-download

![Klik dua kali pada file mosquitto-2.0.10-install-windows-x64](/files/-Mbe5C4QzzPPkjfbYZr7)

Lakukan instalasi message broker MQTT Mosquitto sesuai tahapan berikut

![Pilih tombol Next](/files/-Mbe5vlhtEQ2XmnL555u)

![Pilih tombol Next](/files/-Mbe5zpaCqfo7ntN6esv)

![Sesuaikan penempatan path bila perlu, kemudian klik tombol Next](/files/-Mbe62rfHo9d36mEtPCN)

![Pilih tombol Finish](/files/-Mbe66oKgCskrugZn-f_)

Lakukan pengujian apakah Mosquitto telah terinstall dan berfungsi benar, dengan cara masuk ke window command sebagai Administrator

![Masuk Command sebagai Administrator](/files/-Mbe6tC-ZKAOBuAoN63p)

Kemudian jalankan service message broker MQTT Mosquitto dengan perintah berikut **net start mosquitto**. Jika diperoleh pesan "***The Mosquitto service was started successfully***", berarti instalasi mosquitto sukses dan siap digunakan.

![](/files/-Mbe7ebIVpo455X4Zih6)

## Instalasi Aplikasi MQTT Client Tools

Aplikasi MQTT Client Tools berguna untuk menguji apakah transmisi data (baik publisher /subscriber dan topic) antara device dan message broker bekerja dengan benar. Hal ini akan mempersempit tingkat kesalahan bila arsitektur yang dibangun melibatkan perangkat embedded system.

Ada 2 aplikasi MQTT Client Tools yang direkomendasikan, yaitu:

* **MQTTBox**, silahkan download [MQTTBox di sini](https://drive.google.com/file/d/1JysiDtmRBNcoarwzurwLZcEnK6EBL42D/view?usp=sharing)
* **MQTT Explorer**, silahkan download MQTT Explorer di <http://mqtt-explorer.com> atau [download di sini](https://drive.google.com/file/d/1i3yJb8TOqqeSdqwzH8wo_vV8nm7oLolF/view?usp=sharing).

### Instalasi & Konfigurasi MQTT Explorer

Saya asumsikan bahwa file diperleh dari <http://mqtt-explorer.com> maka tahap instalasinya adalah sebagai berikut

![Download MQTT Explorer](/files/-MbeD0FZipOAaa0JvGKc)

![Klik 2x pada file MQTT Explorer](/files/-MbeDJd4oukogkuTmwbt)

![Proses Instalasi MQTT Explorer](/files/-MbeDSHD5ULdLG691swr)

Buat koneksi baru antara MQTT Explorer dan Message Broker Mosquitto dengan kofigurasi berikut:

* Name : MQTT Local Host
* Protocol: mqtt://
* Host: localhost
* Port: 1883 (default)
* Username: \<kosong>
* Password: \<kosong>

Kemudian klik tombol CONNECT untuk memastikan koneksi dengan mosquito terjalin. Jika tidak ada masalah lanjutkan dengan klik tombol SAVE.

![Konfigurasi MQTT Explorer dengan Mosquitto Lokal Server](/files/-MbeGCQfY_Wcu8FCnuyW)

![MQTT Explorer Terhubung Dengan Mosquitto](/files/-MbeHPBWZR-M7ocV7px4)

### Instalasi & Konfigurasi MQTTBox

Instalasi dan konfigurasi MQTTBox serupa dengan cara sebelumnya

![Klik 2x pada file MQTTBox-win](/files/-MbeJgQhdbzFmpl65dVV)

![Proses Instalasi](/files/-MbeLF7-t3YjLO7rKjmF)

![Membuat Koneksi ke Mosquitto, Klik tombol "Create MQTT Client"](/files/-MbeLtmH90fR8SkyqMcl)

Isikan konfigurasi MQTTBox, kemudian klik tombol **Save**.

* MQTT Client Name: MQTT Broker Workshop
* Protocol: mqtt/tcp
* Host: localhost:1883
* Username: \<kosong> default
* Password: \<kosong> default

![](/files/-MbeLOAxeFVmJRYPIkOh)

Jika tidak terjadi masalah koneksi dengan mosquitto berarti semua berjalan normal.

## Konfigurasi User & Password Akses Message Broker Mosquitto

Pada bagian ini kita akan mengkonfigurasi message broker mosquitto dengan tambahan keamanan user dan password. Serta konfigurasi agar message broker mosquitto dapat diakses remote oleh perangkat jarak jauh pada jaringan lokal.

Buka aplikasi editor Notepad++ sebagai Administrator untuk membuat user dan password untuk di hashing.

![Membuka aplikasi Notepad++ sebagai Administrator](/files/-MbeXLJYtHxcdpP8E30V)

Buat teks berisi user:password misalnya **AdminMQTT:pwd123**, kemudian simpan file tanpa disertai tipe file dengan nama **password**. Dalam kasus komputer saya, letakkan file di **C:\Program Files\mosquitto**

![Buat file password yang berisi user:password](/files/-MbeXzoIQfwtTZAo5dl7)

![Simpan file password](/files/-MbeYKTYzJiNWfyEJCDN)

Lakukan hashing terhadap file password tersebut dengan perintah pada command **mosquitto\_passwd -U password**. Parameter "password" yang terakhir adalah nama file yang dibuat sebelumnya.

![Hashing password dari file password](/files/-MbeZW1rCopktPf1EJ-j)

Untuk membuktikann apak password telah di-hashing, silahkan buka kembali file **password** yang berada di C:\Program Files\mosquitto dengan editor Notepad++.

![Membuka file password](/files/-Mbe_7UjfUFQpT5_nsiT)

![Hasil Hashing password Mosquitto](/files/-Mbe_GyfDxas6RMsoxBJ)

Konfigurasi pada file mosquitto.conf yang semula

```cpp
#allow_anonymous false
```

menjadi

```cpp
allow_anonymous false
```

Pengujian akses service message broker mosquitto dengan user dan password dengan cara mengubah konfigurasi koneksi pada MQTTBox. Isikan parameter berikut:

* Host: localhost:1883 atau 192.168.0.101:1883
* Username: AdminMQTT
* Password: pwd123

![Akses mosquitto dengan user, password dan localhost](/files/-MbfCbi_euGhwZ45egRp)

Anda juga mengakses service message broker mosquitto menggunakan host alamat IP, dalam hal ini adalah 192.168.0.101

![Akses mosquitto dengan user, password dan ip:192.168.0.101:1883](/files/-MbfDqt1XRZVZC4uRSng)

Jika koneksi antara MQTT Client (MQTTBox) dan MQTT Broker (mosquitto), saatnya sekarang membuat entitas publisher yang dibernama **dht**. kolom payload adalah data yang dikirim ke message broker mosquitto.

![Menambahkan Publisher](/files/-MbfDvAmF35jArlaa1n6)

Subscriber adalah sisi yang meminta me-*request* data ke publisher, tentunya melalui jembatan message broker yang bertindak sebagai manajer lalu lintas data antara subscriber dan publisher.

Nama topic antara subscriber dan publisher harus sesuai agar komunikasi keduanya bisa terjalin. Sebagai contoh nama topic subsciber adalah **dht** (sama dengan topic pada publisher).

![Menambahkan Subscriber](/files/-MbfEGfGNG62T1PY02ko)

Ketika tombol publish dipilih, maka data pada kolom payload akan dikirim ke subscriber dengan topic dht.

![Hasil komunikasi antara publisher dan subscriber](/files/-MbfEcmGLxH-K1T5RlCk)

## Konfigurasi Akses Service Message Broker Mosquitto Secara Remote

Banyak kasus ditemui bahwa komunikasi antara Client MQTT dan Broker MQTT berada pada mesin berbeda. Misalnya sisi client menggunakan perangkat Embedded System, sedangkan Message Broker berada di laptop.

Di sini kita perlu mengkonfigurasi MQTT Message Broker Mosquitto terlebih dahulu agar dapat diakses oleh client-client secara remote dalam satu network.

### Konfigurasi File mosquitto.conf

Pertama dilakukan adalah mengkonfigurasi file **mosquitto.conf** yang berada di folder **C:\Program Files\mosquitto** dengan aplikasi editor Notepad++.

![Buka file konfigurasi mosquitto.conf](/files/-Mbea824PLhwE9oc8hmu)

Cek alamat IP komputer lokal Anda dimana aIP Listener Message Broker Mosquitto berada. Gunakan perintah **ipconfig** pada window command yang akan bertindak. Dalam kasus laptop saya adalah 192.168.0.101.

![Melihat alamat IP Mosquitto](/files/-MbecMe6RVDsvRyYoslS)

Selanjutnya lakukan perubahan terhadap 4 parameter pada **mosquitto.conf**:

* listener 1883 192.168.0.101&#x20;
* listener 1883 localhost&#x20;
* protocol mqtt&#x20;
* allow\_anonymous false&#x20;
* password\_file C:\Program Files\mosquitto\password

![Salah satu contoh perubahan paramater konfigurasi mosquitto](/files/-Mbed2VHHRBvwtZZIdoH)

Menghentikan dan me-restart ulang service message broker dengan command sebagai berikut:

* net stop mosquitto&#x20;
* net start mosquitto

![Stop dan start service message broker mosquitto](/files/-MbeeLhTKY8FitK2sGCR)

### Firewall Rule Aplikasi mosquitto.exe

Tujuan konfigurasi firewall dengan rule aplikasi agar layanan message broker mosquitto tidak diblokir oleh firewall windows defender.

![Buka service firewall dengan menuliskan firewall.cpl](/files/-MbejW0YeLGUYae4TZPX)

![Pilih menu Allow an app or feature through Windows Defender Firewall](/files/-MbepxizbWsN8sjKOg-y)

![Pilih button Allow another app](/files/-Mbeq2tnpyto6udkOpxS)

![Pilih tombol Browse untuk memilih aplikasi mosquitto](/files/-Mbeq7QAGNHjmMBZbMGJ)

![Pilih file mosquitto pada C:\Program Files\mosquitto](/files/-MbeqB71vi621o5RwOw8)

![Setelah masuk daftar pilih tombol OK](/files/-MbeqEmH1RMXTTbePOtf)

### Firewall Rule Port

Konfigurasi firewall dengan rule port bertujuan agar firewall windows defender memberi izin message broker mosquitto dengan port 1883 dapat diakses dari luar.

Terdapat dua jenis rule port yang harus dikofigurasi, yaitu:

* Port - Inbound Rule
* Port - Outbound Rule

**Konfigurasi Port Inbound Rule**

![Buka layana firewall](/files/-MbfWoDJmZy3Pbd1GkcW)

![Pilih Inbound Rules dan New Rules](/files/-MdIBMqsRc54AlZpjrqy)

![Pilih Port kemudian klik tombol Next](/files/-MdIBMqtdcgsO8JAFCqW)

![Pilih Specific local Port dan isikan 1883](/files/-MdIBMquFAyOrJfzkzPt)

![Pilih Allow the connection](/files/-MbfZWfKEKPeDstXvUAR)

![Beri tanda centang pada semua pilihan](/files/-MbfZaweEPgSrcCgXCQN)

![Beri nama rule dan sertakan deksripsi rule](/files/-MbfXE4U36xYreaeVrIT)

**Konfigurasi Port Outbound Rule**

Dengan cara serupa dengan inbound rule, ikuti langkah-langkah berikut untuk membentuk port outbound rule

![Konfigurasi port outbound rule](/files/-MdIBMqyj9EXcKA3N-3K)

![Pilih Port](/files/-Mbf_5jt_L2dRhV0EqMO)

![Menentukan port 1883](/files/-Mbf_9PD7_mEGAm_9gdf)

![Mengizinkan semua koneksi untuk port 1883](/files/-Mbf_DS7KtL7Dmc_8Pd9)

![Mengaplikasikan izin port 1883 untuk domain, private, dan public](/files/-Mbf_HJm3PWOdP-eQDZT)

![Memberi nama rule dan deskripsi rule](/files/-Mbf_LS6qUBan8mO50E6)

## Mengakses Message Broker Secara Remote

Setelah semua konfigurasi dijalankan, saatnya kita menguji coba message broker secara remote. Sebagai bahan percobaan akan kita gunakan aplikasi Android MQTT Client bernama **MyMQTT**. Silahkan download aplikasi tersebut melalui Google Play Store.

![](/files/-Mbfcbu-V3opdEE0Lz5k)

Sesuaikan konfigurasi koneksi pada MyMQTT, dimana alamat IP Message Broker adalah **192.168.0.101**. Hal ini tentu harus disesuaikan dengan alamat IP Anda masing-masing.

Sesuaikan dengan nama user dan password message broker dengan setting sebelumnya, dimana user adalah **AdminMQTT** dan password adalah **pwd123**.

![Pilih menu Settings](/files/-MbffBFKrVpwiVqW_uBY)

![Konfigurasi Koneksi](/files/-Mbfch5uEwq1YPi07X7T)

Setelah memilih tombol Save akan muncul notifikasi bahwa koneksi sukses, artinya koneksi antara MyMQTT Android dan Message Broker Mosquitto sukses terjalin.

Selanjutnya pilih menu publish, yang akan mengirim data (payload) dari MyMQTT Android ke message broker mosquitto.

![](/files/-MbffSZUFS-FjWKAobDA)

Sebagai contoh, kita akan mengirim data string "**kirim dari andoid**", kemudian pilih tombol Publish.

![](/files/-MbfcpVgEpttGu3n7obt)

Sekarang cek kembali MQTT client pada MQTTBox. Pada bagian box Subscriber dengan topic **dht** akan diterima data string berupa tulisan "kirim dari Android".

![](/files/-MdIBMr1FdW3AWeX-FqC)

Sampai di sini kita telah memahami bagaimana cara mengkomunikasikan antara MQTT Client dan MQTT Broker, bagaimana teknik instalasi dan konfigurasi message broker, baik bekerja secara lokal maupun remote, bagaimana cara kerja subscriber dan publisher, dan topic.

> Untuk mengkases message broker secara remote, pastikan bahwa perangkat antara message broker dan perangkat message client berada dalam satu network.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dsp-tech.gitbook.io/internet-of-things/membangun-aplikasi-iot-create-from-scratch/instalasi-and-konfigurasi-message-broker-mqtt-mosquitto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
