Lewati ke konten utama

Mosquitto Docker: Cara Menyiapkan Broker Eclipse Mosquitto MQTT dengan Docker dan Docker Compose

Panduan langkah demi langkah untuk menerapkan broker Mosquitto MQTT siap produksi menggunakan container Docker. Termasuk autentikasi, enkripsi TLS, konfigurasi persistensi, dan integrasi dengan Home Assistant.
Diperbarui 28 Sep 2026  · 14 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Menyiapkan broker MQTT dari nol seharusnya tidak memakan waktu berjam-jam untuk konfigurasi dan pemecahan masalah.

Eclipse Mosquitto adalah broker MQTT open-source yang mengimplementasikan protokol MQTT v5, 3.1.1, dan 3.1, sehingga cocok untuk perangkat IoT, sistem automasi rumah, aplikasi cloud, dan arsitektur berbasis pesan apa pun. Namun memasang dan mengonfigurasi Mosquitto langsung di sistem Anda sering kali menimbulkan konflik dependensi, masalah izin, dan persoalan spesifik platform yang menghabiskan waktu pengembangan Anda. Alih-alih membangun aplikasi, Anda justru disibukkan oleh proses setup.

Docker menghilangkan sakit kepala ini dengan menyediakan lingkungan yang konsisten dan terisolasi untuk menjalankan Mosquitto di platform mana pun. Anda bisa menjalankan broker MQTT yang sepenuhnya fungsional dalam hitungan menit, lengkap dengan konfigurasi kustom, autentikasi, dan persistensi.

Dalam panduan ini, saya akan memandu Anda menerapkan Eclipse Mosquitto menggunakan Docker dan Docker Compose, mengonfigurasi autentikasi dan logging, menyiapkan persistensi data, serta menguji broker Anda dengan klien MQTT nyata.

Baru pertama kali menggunakan Docker? Saya sarankan mulai dari kursus Introduction to Docker kami untuk memahami dasar-dasarnya.

Apa Itu Mosquitto dan Mengapa Menggunakannya di Docker

Anda tidak memerlukan sistem messaging yang berat ketika yang Anda butuhkan hanyalah komunikasi cepat dan andal antar perangkat.

MQTT adalah protokol publish-subscribe yang ringan, dirancang untuk situasi dengan bandwidth terbatas dan reliabilitas yang krusial. Bayangkan sensor IoT, aplikasi seluler, atau skenario apa pun saat perangkat perlu bertukar pesan kecil dengan cepat tanpa polling terus-menerus.

Mosquitto bertindak sebagai perantara — broker — antara publisher dan subscriber. 

Publisher mengirim pesan ke topik tertentu. Subscriber mendengarkan topik tersebut. Mosquitto menangani perutean, memastikan pesan dikirim ke tempat yang tepat tanpa publisher dan subscriber perlu saling mengetahui.

Inilah alasan Docker membuat setup Mosquitto semakin baik:

  • Setup konsisten lintas platform: Windows, macOS, atau Linux — container Docker berjalan persis dengan cara yang sama. Tidak perlu mencari installer spesifik platform atau menghadapi konflik dependensi.
  • Manajemen versi yang mudah: Anda dapat mengunci versi Mosquitto tertentu menggunakan tag image, rollback jika terjadi masalah, dan menguji versi baru tanpa menyentuh sistem host.
  • Portabilitas sesungguhnya: Setup docker mosquitto yang sama bekerja di development, staging, dan produksi. Lingkungan lokal Anda sesuai dengan yang berjalan di server.

Mosquitto hadir dalam dua varian: versi open-source (yang mencakup sebagian besar use case) dan Pro Edition komersial dari Cedalo dengan fitur lanjutan seperti clustering dan keamanan yang ditingkatkan. Untuk sebagian besar proyek, versi open-source sudah memenuhi kebutuhan.

Selanjutnya, saya akan membahas prasyarat lalu kita akan langsung memasang Mosquitto.

Prasyarat

Anda perlu menjalankan Docker di sistem Anda sebelum dapat menerapkan Mosquitto.

Docker Desktop paling cocok untuk pengguna Windows dan macOS karena mencakup semua yang Anda butuhkan dalam satu paket. Pengguna Linux dapat memasang Docker CLI langsung melalui manajer paket mereka atau dari repositori resmi Docker.

Docker Compose tidak wajib, tetapi membuat pengelolaan setup multi-container jauh lebih mudah. Sebagian besar instalasi Docker Desktop sudah menyertakan Compose secara default. Jika Anda menggunakan Linux, Anda mungkin perlu memasangnya secara terpisah.

Anda juga memerlukan keterampilan dasar baris perintah. Tidak rumit, cukup kemampuan menjalankan perintah, menavigasi direktori, dan mengedit file teks.

Setup Langkah demi Langkah

Menjalankan mosquitto docker memerlukan tiga langkah: membuat direktori, menjalankan container, dan opsional menyiapkan Docker Compose untuk pengelolaan yang lebih mudah.

Membuat direktori yang diperlukan

Mosquitto memerlukan penyimpanan yang terorganisasi untuk konfigurasi, data, dan log.

Buat direktori berikut untuk memulai:

mkdir mosquitto-docker
cd mosquitto-docker
mkdir config data logs

Ini memberi Anda folder yang rapi untuk file konfigurasi Mosquitto, data persisten, dan keluaran log.

Berikut fungsi masing-masing direktori:

  • /mosquitto/config menyimpan mosquitto.conf dan file konfigurasi tambahan
  • /mosquitto/data menampung data pesan persisten dan informasi langganan
  • /mosquitto/log berisi file log Mosquitto untuk debugging dan pemantauan

Direktori ini akan di-mount sebagai volume di dalam container Docker, sehingga pengaturan dan data Anda tetap ada saat container dimulai ulang.

Menjalankan Mosquitto dengan Docker

Perintah Docker dasar menjalankan Mosquitto dengan pemetaan port dan mount volume yang tepat.

docker run -d \
  --name mosquitto \
  -p 1883:1883 \
  -v $(pwd)/mosquitto/config:/mosquitto/config \
  -v $(pwd)/mosquitto/data:/mosquitto/data \
  -v $(pwd)/mosquitto/log:/mosquitto/log \
  eclipse-mosquitto:latest

Image 1 - Running Mosquitto with Docker

Gambar 1 - Menjalankan Mosquitto dengan Docker

Berikut penjelasan flag yang digunakan:

  • -d menjalankan container di latar belakang (detached mode)
  • --name mosquitto memberi container nama yang mudah diingat
  • -p 1883:1883 memetakan port 1883 pada host ke port 1883 di container
  • -v me-mount direktori lokal sebagai volume di dalam container

Mosquitto 2.0+ berjalan dalam mode lokal saja secara default. Artinya, hanya menerima koneksi dari localhost kecuali Anda mengonfigurasikannya sebaliknya. Anda perlu membuat file konfigurasi untuk mengizinkan koneksi eksternal.

Menggunakan Docker Compose

Docker compose untuk Mosquitto membuat pengelolaan instalasi jauh lebih sederhana, terutama saat Anda menjalankan banyak layanan.

Buat file docker-compose.yml dan tempelkan isi berikut:

services:
  mosquitto:
    image: eclipse-mosquitto:latest
    container_name: mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883"    # MQTT
      - "8883:8883"    # MQTTS (secure)
      - "9001:9001"    # WebSockets
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log

Mulai dengan perintah:

docker-compose up -d

Image 2 - Running Mosquitto with Docker Compose

Gambar 2 - Menjalankan Mosquitto dengan Docker Compose

Pemetaan volume bekerja sama seperti perintah Docker, tetapi Compose menangani kerumitannya. Konfigurasi port mencakup semua protokol MQTT umum: MQTT standar (1883), MQTTS aman (8883), dan koneksi WebSocket (9001).

Compose sangat berguna untuk setup multi-layanan. Misalnya, jika Anda menjalankan Home Assistant, Node-RED, atau alat IoT lain bersama Mosquitto, Anda dapat mendefinisikan semuanya dalam satu file dan memulai semua layanan sekaligus.

Selanjutnya, mari kita bahas konfigurasi lebih dalam.

Apakah konsep Docker tingkat lanjut terasa membingungkan? Kursus Intermediate Docker kami membahas lebih dari dasar-dasar.

Mengonfigurasi Mosquitto

Mosquitto tidak akan menerima koneksi eksternal secara default, Anda memerlukan file konfigurasi untuk itu.

Konfigurasi dasar (mosquitto.conf)

Buat file mosquitto.conf di direktori mosquitto/config Anda dan tambahkan berikut ini:

# Basic listener configuration
listener 1883
allow_anonymous true

# WebSocket listener
listener 9001
protocol websockets
allow_anonymous true

# Persistence
persistence true
persistence_location /mosquitto/data/

# Logging
log_dest file /mosquitto/log/mosquitto.log
log_type error
log_type warning
log_type notice
log_type information

Pengaturan allow_anonymous true memungkinkan klien terhubung tanpa kredensial. Ini baik untuk pengembangan atau jaringan internal, tetapi Anda sebaiknya menonaktifkannya untuk lingkungan produksi. Saat Anda mengatur allow_anonymous false, setiap klien harus diautentikasi dengan nama pengguna dan kata sandi.

Listener WebSocket pada port 9001 mengaktifkan klien MQTT berbasis browser. Aplikasi web dapat terhubung langsung ke broker menggunakan pustaka JavaScript seperti Paho MQTT.

Menyiapkan autentikasi

Autentikasi memerlukan pembuatan file kata sandi dan memperbarui konfigurasi Anda.

Buat file kata sandi di dalam container:

docker exec -it mosquitto mosquitto_passwd -c /mosquitto/config/passwd username

Image 3 - Mosquitto authentication

Gambar 3 - Autentikasi Mosquitto

Perintah ini membuat file kata sandi baru dan meminta Anda memasukkan kata sandi. Untuk pengguna tambahan, hilangkan flag -c:

docker exec -it mosquitto mosquitto_passwd /mosquitto/config/passwd another_user

Sekarang, perbarui mosquitto.conf Anda untuk mewajibkan autentikasi:

# Disable anonymous access
allow_anonymous false

# Point to password file
password_file /mosquitto/config/passwd

# Basic MQTT listener
listener 1883

# WebSocket listener
listener 9001
protocol websockets

# Persistence
persistence true
persistence_location /mosquitto/data/

# Logging
log_dest file /mosquitto/log/mosquitto.log
log_type error
log_type warning
log_type notice
log_type information

File kata sandi disimpan di volume config yang di-mount, sehingga tetap ada di antara restart container.

Mengaktifkan TLS/SSL

Enkripsi TLS melindungi lalu lintas MQTT Anda dari penyadapan dan manipulasi.

Tambahkan baris berikut ke mosquitto.conf Anda:

# Secure MQTT listener
listener 8883
cafile /mosquitto/config/ca.crt
certfile /mosquitto/config/server.crt
keyfile /mosquitto/config/server.key

# Secure WebSocket listener
listener 9002
protocol websockets
cafile /mosquitto/config/ca.crt
certfile /mosquitto/config/server.crt
keyfile /mosquitto/config/server.key

Anda perlu memperoleh sertifikat SSL untuk domain Anda. Let's Encrypt menyediakan sertifikat gratis, atau Anda dapat menggunakan reverse proxy seperti Caddy Server yang menangani pembuatan sertifikat secara otomatis. Tempatkan file sertifikat Anda di direktori mosquitto/config agar tersedia di dalam container.

Persistensi dan logging

Persistensi menyimpan pesan dan langganan ke disk, sementara logging yang tepat membantu Anda men-debug masalah koneksi.

Anda dapat mengonfigurasi persistensi di mosquitto.conf seperti ini:

# Enable persistence
persistence true
persistence_location /mosquitto/data/

# Save to disk every 300 seconds
autosave_interval 300

# Keep messages for offline clients
persistent_client_expiration 1d

Untuk logging, berikut cara menyiapkan logging terperinci:

# Log to file and stdout
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout

# Choose what to log
log_type error
log_type warning
log_type notice
log_type information
log_type debug

# Log connection details
connection_messages true
log_timestamp true

Opsi log_type memungkinkan Anda memfilter apa yang dicatat:

  • error dan warning untuk pemantauan produksi
  • notice dan information untuk wawasan operasional umum
  • debug untuk menelusuri masalah koneksi

Mount volume Anda memastikan data persistensi dan log tetap ada saat container dimulai ulang. Direktori data menyimpan semua pesan persisten dan informasi langganan, sementara direktori log menyimpan informasi debugging yang dapat diakses dari sistem host.

File konfigurasi memberi Anda kendali penuh atas perilaku Mosquitto tanpa perlu membangun ulang container.

Menguji Setup

Broker Anda belum berguna sampai Anda memastikan klien dapat terhubung dan bertukar pesan.

Menggunakan mosquitto_pub dan mosquitto_sub

Alat baris perintah mosquitto_pub dan mosquitto_sub menyediakan cara tercepat untuk menguji broker Anda.

Mulailah dengan memasang Mosquitto, sesuai platform Anda:

  • Linux (Ubuntu/Debian): sudo apt-get install mosquitto-clients
  • macOS: brew install mosquitto
  • Windows: Unduh dari situs resmi Eclipse Mosquitto atau gunakan WSL

Mari mulai menguji tanpa autentikasi. Anda membutuhkan dua jendela atau tab terminal. Jalankan perintah ini di sesi terpisah:

# Subscribe to a topic (run this first)
mosquitto_sub -h localhost -p 1883 -t test/topic

# Publish a message (run in another terminal)
mosquitto_pub -h localhost -p 1883 -t test/topic -m "Hello MQTT"

Di tab publikasi, Anda akan melihat ini:

Image 4 - Publishing a message

Gambar 4 - Mempublikasikan pesan

Dan di tab subscribe, Anda akan langsung melihat pesannya:

Image 5 - Subscribing to a Mosquitto topic

Gambar 5 - Berlangganan topik Mosquitto

Jika Anda memerlukan autentikasi, perintahnya serupa — Anda hanya perlu menyertakan nama pengguna dan kata sandi:

# Subscribe with username and password
mosquitto_sub -h localhost -p 1883 -t test/topic -u username -P password

# Publish with credentials
mosquitto_pub -h localhost -p 1883 -t test/topic -m "Authenticated message" -u username -P password

Jika Anda tidak ingin memasang klien Mosquitto secara lokal, jalankan di dalam container Docker Anda:

# Subscribe using the container
docker exec -it mosquitto mosquitto_sub -h localhost -t test/topic

# Publish using the container
docker exec -it mosquitto mosquitto_pub -h localhost -t test/topic -m "Container message"

Anda akan melihat ini di tab publikasi:

Image 6 - Publishing a message without auth

Gambar 6 - Mempublikasikan pesan tanpa autentikasi

Dan di tab subscribe, Anda akan melihat pesannya:

Image 7 - Subscribing to a Mosquitto topic without auth

Gambar 7 - Berlangganan topik Mosquitto tanpa autentikasi

Menguji dengan klien MQTT

Klien GUI memudahkan pengujian skenario kompleks dan memantau lalu lintas pesan yang sedang berlangsung.

MQTT Explorer menyediakan antarmuka yang rapi untuk menelusuri topik dan mengirim pesan. Sambungkan ke localhost:1883 dan Anda akan melihat tampilan pohon semua topik aktif. Ini ideal untuk debugging alur pesan dan memahami struktur topik Anda.

Image 8 - MQTT Explorer app

Gambar 8 - Aplikasi MQTT Explorer

MQTTX menawarkan fitur yang lebih canggih seperti scripting dan pengiriman pesan massal. Kedua klien mendukung autentikasi, koneksi TLS, dan protokol WebSocket.

Pengguna Home Assistant dapat menguji integrasi MQTT langsung dari developer tools. Tambahkan detail broker Anda ke integrasi MQTT dan gunakan antarmuka publish/subscribe bawaan.

Untuk pengujian terprogram, klien Paho MQTT Python bekerja dengan baik:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print(f"Connected with result code {rc}")
    client.subscribe("test/topic")

def on_message(client, userdata, msg):
    print(f"Received: {msg.payload.decode()}")

client = mqtt.Client()
# client.username_pw_set("username", "password")  # If using auth
client.on_connect = on_connect
client.on_message = on_message

client.connect("localhost", 1883, 60)
client.loop_forever()

Jalankan skrip ini di satu terminal, lalu publikasikan pesan dari terminal lain atau klien GUI. Skrip akan mencetak pesan yang diterimanya, memastikan broker Anda merutekan trafik dengan benar.

Berikut yang perlu Anda lakukan untuk mempublikasikan pesan:

Image 9 - Publishing a message for the Python example

Gambar 9 - Mempublikasikan pesan untuk contoh Python

Dan Anda akan melihat ini di sesi terminal yang menjalankan skrip Python:

Image 10 - Receiving a message for the Python example

Gambar 10 - Menerima pesan untuk contoh Python

Operasi publish dan subscribe yang berfungsi menandakan setup Mosquitto Docker Anda siap untuk aplikasi nyata.

Mengintegrasikan Mosquitto Docker dengan Home Assistant

Menjalankan Mosquitto berdampingan dengan Home Assistant di Docker menciptakan hub messaging IoT lengkap tanpa repot konfigurasi jaringan.

Docker Compose membuatnya sederhana. Kedua layanan dapat berkomunikasi melalui jaringan internal Docker tanpa mengekspos port tambahan atau menangani alamat IP.

Berikut docker-compose.yml lengkap yang menjalankan kedua layanan:

services:
  mosquitto:
    image: eclipse-mosquitto:latest
    container_name: mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    networks:
      - homeassistant

  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    ports:
      - "8123:8123"
    volumes:
      - ./homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
    networks:
      - homeassistant
    depends_on:
      - mosquitto

networks:
  homeassistant:
    driver: bridge

Bagian networks membuat jaringan bersama di mana kedua container dapat saling menjangkau berdasarkan nama. Home Assistant dapat terhubung ke mosquitto:1883 alih-alih menggunakan localhost atau alamat IP.

Mulai kedua layanan dengan:

docker-compose up -d

Selanjutnya, konfigurasikan integrasi MQTT melalui antarmuka web Home Assistant. Arahkan ke Settings > Devices & Services > Add Integration, lalu cari "MQTT."

Masukkan detail koneksi berikut:

  • Broker: mosquitto (nama container)
  • Port: 1883
  • Username/Password: Kredensial Anda jika autentikasi diaktifkan
  • Biarkan pengaturan lainnya tetap default

Klik Submit dan Home Assistant akan menguji koneksi. Jika berhasil, Anda akan melihat MQTT muncul di daftar integrasi.

Image 11 - Mosquitto configuration with Homelab

Gambar 11 - Konfigurasi Mosquitto dengan Homelab

Sekarang Anda dapat menambahkan perangkat MQTT, membuat automasi yang mempublikasikan pesan, dan memantau data sensor melalui topik. Integrasi MQTT Home Assistant menangani penemuan perangkat secara otomatis untuk perangkat yang kompatibel.

Pemecahan Masalah Umum

Sebagian besar masalah docker mosquitto berkutat pada izin, port, atau kesalahan konfigurasi yang memblokir koneksi.

Kesalahan izin pada volume yang di-mount 

Ini terjadi ketika container tidak dapat menulis ke direktori host Anda. Anda akan melihat pesan error seperti "Permission denied" atau "Cannot create directory" di log.

Perbaiki dengan mengatur kepemilikan yang tepat pada direktori Anda:

sudo chown -R 1883:1883 mosquitto/

Container Mosquitto berjalan sebagai user ID 1883, jadi direktori host Anda harus disesuaikan. Di beberapa sistem, Anda mungkin perlu membuat pengguna terlebih dahulu:

sudo useradd -u 1883 mosquitto
sudo chown -R mosquitto:mosquitto mosquitto/

Konflik port

Ini terjadi saat ada proses lain yang menggunakan port 1883. Periksa apa yang berjalan pada port tersebut:

# Linux/macOS
sudo lsof -i :1883

# Windows
netstat -an | findstr :1883

Jika layanan lain menggunakan port tersebut, hentikan atau petakan Mosquitto ke port lain:

docker run -p 1884:1883 eclipse-mosquitto:latest

Mode lokal saja mencegah koneksi eksternal

Ini terjadi bahkan saat container Anda berjalan. Mosquitto 2.0+ secara default hanya menerima koneksi dari localhost kecuali Anda mengonfigurasikannya sebaliknya.

Buat file mosquitto.conf dasar untuk mengizinkan koneksi eksternal:

listener 1883
allow_anonymous true

Tempatkan file ini di direktori mosquitto/config Anda dan mulai ulang container.

Direktori kosong saat startup

Ini berarti mount volume Anda tidak berfungsi dengan benar. Periksa apakah path bersifat absolut dan direktori ada:

# Wrong - relative path might not work
-v ./mosquitto/config:/mosquitto/config

# Better - absolute path
-v $(pwd)/mosquitto/config:/mosquitto/config

Buat direktori sebelum memulai container:

mkdir -p mosquitto/{config,data,log}

UID/GID bentrok antara host dan container

Ini akan menyebabkan masalah izin yang persisten. Container diharapkan berjalan sebagai user 1883, tetapi sistem host Anda mungkin memiliki kebutuhan kepemilikan yang berbeda.

Paksa container berjalan sebagai pengguna Anda:

docker run --user $(id -u):$(id -g) eclipse-mosquitto:latest

Atau sesuaikan izin direktori host Anda agar sesuai dengan ekspektasi container. Pendekatan container lebih baik untuk pengembangan, sementara memperbaiki izin host lebih cocok untuk penerapan produksi.

Periksa log container ketika ada masalah — biasanya log memberi tahu Anda secara jelas letak masalahnya.

Tingkat Lanjut: Fitur Mosquitto Pro Edition

Mosquitto open-source mencakup sebagian besar use case, tetapi lingkungan enterprise memerlukan fitur yang hanya tersedia di Pro Edition.

Manajemen pengguna berbasis peran memungkinkan Anda mendefinisikan izin granular untuk berbagai grup pengguna. Alih-alih mengelola akses pengguna satu per satu, Anda membuat peran seperti "sensor-readers", "actuator-controllers", atau "admin-users" dan menetapkan izin ke seluruh peran. Pengguna mewarisi izin dari peran yang ditugaskan, sehingga lebih mudah mengelola akses di ratusan atau ribuan perangkat.

Anda dapat membatasi akses berdasarkan pola topik, rentang IP, atau jendela waktu. Ini jauh lebih baik daripada mengonfigurasi file ACL secara manual saat Anda mengelola deployment IoT yang kompleks dengan kebutuhan keamanan berbeda-beda.

Opsi autentikasi lanjutan melampaui kombinasi nama pengguna/kata sandi sederhana. Autentikasi token JWT terintegrasi dengan penyedia identitas yang ada seperti Auth0, Okta, atau sistem SSO perusahaan Anda. Integrasi LDAP terhubung langsung ke Active Directory atau layanan direktori enterprise lainnya.

Inspeksi dan pemantauan mendalam memberi Anda visibilitas waktu nyata atas aliran pesan, pola koneksi, dan kinerja broker. Pro Edition menyertakan dashboard bawaan yang menampilkan klien mana yang mengonsumsi bandwidth terbanyak, topik mana dengan laju pesan tertinggi, dan di mana bottleneck terbentuk.

Anda mendapatkan metrik terperinci tentang latensi pesan, kedalaman antrean, dan pola perilaku klien. Data ini membantu Anda mengoptimalkan struktur topik dan mengidentifikasi klien bermasalah sebelum memengaruhi seluruh sistem.

Integrasi basis data dan layanan cloud menghilangkan kebutuhan aplikasi bridge kustom. Pro Edition dapat meneruskan pesan secara otomatis ke PostgreSQL, MongoDB, InfluxDB, AWS IoT Core, Azure IoT Hub, atau Google Cloud IoT. Anda mendefinisikan aturan perutean yang menentukan pesan mana pergi ke mana berdasarkan pola topik, konten pesan, atau metadata klien.

Antrean persisten menangani skenario volume tinggi saat persistensi standar Mosquitto tidak memadai. Pro Edition dapat melakukan buffer jutaan pesan untuk klien offline dan mendistribusikan beban di beberapa instance broker. Termasuk manajemen antrean otomatis yang mencegah kehabisan memori dan mempertahankan jaminan urutan pesan.

Dukungan clustering memungkinkan Anda menjalankan beberapa instance broker yang berbagi beban pesan dan menyediakan perlindungan failover. Saat satu broker down, klien secara otomatis tersambung ke instance yang sehat tanpa kehilangan pesan atau langganan.

Pro Edition masuk akal ketika Anda memerlukan keandalan dan fitur manajemen tingkat enterprise yang akan memakan waktu berbulan-bulan jika dibangun sendiri.

Kelebihan dan Kekurangan Menggunakan Mosquitto di Docker

Docker memudahkan deployment, tetapi bukan solusi sempurna untuk setiap skenario.

Kelebihan

  • Konsistensi lintas platform menghilangkan kerumitan instalasi spesifik OS. Perintah Docker yang sama bekerja di Windows, macOS, dan Linux tanpa perlu mencari manajer paket berbeda atau menangani konflik dependensi. Setup pengembangan Anda persis sama dengan produksi, sehingga lebih sedikit kejutan saat deployment.
  • Pembaruan versi sederhana cukup dengan mengganti tag image. Alih-alih mencopot versi lama dan berharap pembaruan tidak merusak konfigurasi, Anda hanya menarik image baru dan memulai ulang container. Rollback hanya butuh hitungan detik jika terjadi masalah.
  • Backup dan migrasi mudah berkat penggunaan volume untuk data Anda. Salin direktori mosquitto ke mesin lain, jalankan perintah Docker yang sama, dan Anda kembali online. Pindah antar penyedia cloud atau upgrade hardware menjadi sesederhana transfer file.

Kekurangan

Docker tidak selalu tanpa cela.

  • Masalah izin volume sering terjadi pada sistem operasi tertentu, terutama saat berpindah antara host Windows dan Linux. Anda akan menghabiskan waktu memperbaiki kepemilikan dan menangani ketidaksesuaian UID/GID yang tidak akan ada pada instalasi native.
  • Konfigurasi ekstra untuk keamanan tingkat produksi berarti Docker menambah kompleksitas alih-alih menguranginya. Anda harus mengelola kebijakan jaringan, konteks keamanan container, dan enkripsi volume di atas fitur keamanan Mosquitto sendiri. Instalasi native memungkinkan Anda menggunakan kerangka keamanan OS yang sudah ada secara langsung.
  • Potensi penurunan kinerja terjadi pada skenario throughput tinggi di mana setiap mikrodetik berarti. Lapisan jaringan container dan mount volume menambah overhead yang dihindari oleh instalasi native. Untuk sebagian besar aplikasi IoT perbedaan ini dapat diabaikan, tetapi sistem industri waktu nyata mungkin merasakan latensi.

Docker unggul saat Anda membutuhkan deployment yang konsisten dan pengelolaan mudah di berbagai lingkungan.

Kesimpulan

Menjalankan Mosquitto di Docker memberi Anda broker MQTT andal yang bekerja konsisten di semua lingkungan. Baik Anda membuat prototipe perangkat IoT, membangun sistem automasi rumah, atau menghubungkan sensor di lingkungan pengembangan, Docker menghilangkan kerumitan setup dan memungkinkan Anda fokus pada proyek inti.

Jika Anda berencana membawa Mosquitto ke produksi, ingat hal ini:

  • Amankan broker Anda sebelum mengeksposnya ke internet
  • Aktifkan autentikasi dengan mosquitto_passwd, konfigurasikan enkripsi TLS dengan sertifikat yang tepat
  • Batasi akses hanya untuk klien yang membutuhkannya

Broker MQTT yang tidak diamankan menjadi pintu terbuka bagi penyerang untuk memantau komunikasi perangkat atau menyuntikkan perintah berbahaya.

Untuk deployment enterprise yang membutuhkan fitur lanjutan seperti kontrol akses berbasis peran, clustering, atau integrasi LDAP, Mosquitto Pro Edition menyediakan alat manajemen dan skalabilitas yang melampaui versi open-source.

Siap meningkatkan kemampuan Docker dan Kubernetes Anda? Daftar di jalur keterampilan Containerization and Virtualization with Docker and Kubernetes untuk membangun keterampilan relevan dan dilirik perekrut.

Mosquitto Docker FAQs

Apa perbedaan menjalankan Mosquitto secara native dibanding di Docker?

Docker menyediakan konsistensi lintas platform dan menghilangkan konflik dependensi yang sering terjadi pada instalasi native. Setup Mosquitto Anda bekerja identik di Windows, macOS, dan Linux tanpa perlu mencari paket spesifik platform. Docker juga memudahkan pembaruan versi dan rollback — cukup ganti tag image dan mulai ulang container. Namun, instalasi native dapat menawarkan kinerja sedikit lebih baik untuk skenario throughput tinggi.

Apakah saya perlu Docker Compose untuk menjalankan Mosquitto, atau bisa menggunakan perintah Docker biasa?

Anda tentu bisa menjalankan Mosquitto dengan perintah Docker biasa menggunakan docker run. Docker Compose hanya memudahkan pengelolaan, terutama saat Anda menjalankan banyak layanan seperti Home Assistant atau Node-RED bersamaan dengan Mosquitto. Jika Anda hanya menjalankan Mosquitto saja, perintah docker run sederhana sudah sangat memadai.

Apakah Mosquitto di Docker cukup aman untuk penggunaan produksi?

Mosquitto di Docker bisa siap produksi dengan konfigurasi yang tepat. Anda perlu menonaktifkan akses anonim, menyiapkan autentikasi dengan mosquitto_passwd, mengonfigurasi enkripsi TLS, dan membatasi akses jaringan hanya untuk klien tepercaya. Container itu sendiri tidak menambah kerentanan keamanan, tetapi Anda bertanggung jawab mengamankan konfigurasi Mosquitto dan lingkungan Docker.

Mengapa container Mosquitto saya berjalan tetapi menolak koneksi eksternal?

Mosquitto 2.0+ secara default berada di mode lokal saja, yang hanya menerima koneksi dari localhost di dalam container. Anda perlu membuat file mosquitto.conf dengan listener 1883 dan allow_anonymous true (untuk pengujian) atau pengaturan autentikasi yang tepat. Tempatkan file config ini di direktori /mosquitto/config yang di-mount dan mulai ulang container.

Bagaimana cara memperbaiki error "Permission denied" saat Mosquitto menulis ke volume yang di-mount?

Container Mosquitto berjalan sebagai user ID 1883, tetapi direktori host Anda mungkin memiliki kepemilikan berbeda. Jalankan sudo chown -R 1883:1883 mosquitto/ untuk memperbaiki kepemilikan, atau buat pengguna mosquitto terlebih dahulu dengan sudo useradd -u 1883 mosquitto lalu ubah kepemilikan. Di beberapa sistem, Anda juga bisa menjalankan container dengan --user $(id -u):$(id -g) agar sesuai dengan pengguna host Anda.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.
Topik
Docker
Rekayasa Data

Kursus Teratas DataCamp

{count, plural, one {Kursus} other {Kursus}}

Pengantar Docker

{hours} jam
52.5K
Dapatkan pengenalan tentang Docker dan temukan pentingnya dalam kotak alat profesional data. Pelajari tentang kontainer Docker, gambar, dan lainnya.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya