Eclipse Mosquitto en yaygın kullanılan açık kaynak MQTT broker’ıdır: küçük, hızlı ve neredeyse her işletim sistemi için mevcut. Bu eğitimde Mosquitto’yu Ubuntu, Debian, Windows ve macOS’a nasıl kuracağınızı, arka planda servis olarak nasıl çalıştıracağınızı, komut satırı client’larıyla nasıl doğrulayacağınızı ve Mosquitto 2.x’in en yaygın tuzağından — broker’ın uzak bağlantıları sessizce reddetmesinden — nasıl kaçınacağınızı göreceksiniz.
MQTT’de yeni misiniz? Önce MQTT nedir yazısını okuyun; host’a hiçbir şey kurmak istemiyorsanız Mosquitto’yu Docker’da çalıştırma rehberine bakın.
Mosquitto’yu Ubuntu ve Debian’a kurma
Mosquitto, Ubuntu ve Debian’ın varsayılan depolarında bulunur. Broker ve CLI client’ları ayrı paketlerdir, bu yüzden ikisini birden kurun:
sudo apt update
sudo apt install -y mosquitto mosquitto-clientsDağıtım paketleri upstream sürümlerin gerisinde kalabilir. Ubuntu’da en yeni sürüme ihtiyacınız varsa Mosquitto projesi bir PPA yayınlar:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt update
sudo apt install -y mosquitto mosquitto-clientsHangi sürümün kurulduğunu kontrol edin:
mosquitto -h | head -n 1Mosquitto’yu systemd servisi olarak çalıştırma
Debian paketi bir mosquitto systemd unit’i kaydeder ve genellikle onu hemen başlatır. Yönetmek için alışılmış komutları kullanın:
sudo systemctl enable --now mosquitto # start now and at boot
sudo systemctl status mosquitto # is it running?
sudo systemctl restart mosquitto # after editing the config
journalctl -u mosquitto -f # follow the logsAna yapılandırma dosyası /etc/mosquitto/mosquitto.conf’tur. Bu dosya /etc/mosquitto/conf.d/ içindeki her *.conf dosyasını dahil eder; kendi ayarlarınız için en temiz yer burasıdır.
Mosquitto’yu Windows’a kurma
- Windows kurulum dosyasını (64-bit
.exe)mosquitto.org/downloadadresindeki resmi indirme sayfasından indirin. - Çalıştırın. Mosquitto’nun Windows servisi olarak çalışmasını istiyorsanız Service bileşenini seçili bırakın. Varsayılan kurulum yolu
C:\Program Files\mosquitto’dur. mosquitto_pubvemosquitto_subher terminalden çalışsın diye bu klasörüPATH’inize ekleyin.
Servisi yönetici yetkili bir PowerShell veya Komut İstemi’nden başlatın:
net start mosquitto
# or run in the foreground with verbose logging:
cd "C:\Program Files\mosquitto"
.\mosquitto.exe -c mosquitto.conf -vMosquitto’yu macOS’a kurma
Homebrew ile tek satırlık bir iştir ve Homebrew’un servis yöneticisi onu arka planda çalışır halde tutar:
brew install mosquitto
brew services start mosquitto # run as a background service
brew services info mosquitto # check statusYapılandırma dosyası Homebrew’un prefix’i altında bulunur: Apple Silicon’da /opt/homebrew/etc/mosquitto/mosquitto.conf, Intel Mac’lerde ise /usr/local/etc/mosquitto/mosquitto.conf. Client’lar aynı formül içinde gelir.
Kurulumu mosquitto_sub ve mosquitto_pub ile doğrulama
Broker’ın çalıştığı makinede iki terminal açın. Birincisinde abone olun:
mosquitto_sub -h localhost -t 'test/#' -vİkincisinden publish edin:
mosquitto_pub -h localhost -t 'test/hello' -m 'Mosquitto works'Terminal 1’de test/hello Mosquitto works çıktısını görmelisiniz. Tüm parametreler için mosquitto_pub ve mosquitto_sub kopya kâğıdımızı açık tutun.
Mosquitto 2.x’teki "local only mode" tuzağı
localhost testi çalışıyor, ama başka bir makinedeki client connection refused hatası alıyor. Bu tasarım gereğidir. 2.0 sürümünden beri, mosquitto.conf hiçbir listener tanımlamıyorsa Mosquitto yalnızca loopback arayüzüne bağlanır ve log’a şuna benzer bir şey yazar:
Starting in local only mode. Connections will only be possible from clients running on this machine.
Create a configuration file which defines a listener to allow remote access.Mosquitto 2.x ayrıca bir listener tanımladığınız anda varsayılan olarak allow_anonymous false kullanır. Yani portu açmak yetmez — client’ların nasıl kimlik doğrulayacağına da karar vermeniz gerekir. Küçük bir yapılandırma dosyası oluşturun:
listener 1883
allow_anonymous truelistener 1883
allow_anonymous false
password_file /etc/mosquitto/passwdBroker’ı yeniden başlatın (sudo systemctl restart mosquitto); port artık ağdan erişilebilir olur. Parola dosyasının oluşturulması, ACL ve TLS eklenmesi Mosquitto’yu güvenli hale getirme rehberinde adım adım anlatılıyor. Direktifleri ezberlemeden bir yapılandırma oluşturmak için mosquitto.conf oluşturucuyu kullanın.
İsteğe bağlı: WebSocket’leri etkinleştirme
Tarayıcı client’ları ham TCP kullanamaz. Broker’ınızı bir web sayfasından test etmek için WebSockets protokolüyle ikinci bir listener ekleyin (bkz. MQTT over WebSockets ve MQTT portları):
listener 9001
protocol websocketsHTTPS üzerinden sunulan bir sayfanın yalnızca wss:// bağlantıları açabileceğini unutmayın; dolayısıyla public web’deki bir tarayıcı client’ı için o listener’da TLS de gerekecektir. O noktaya gelmeden önce, tarayıcıda bir public test broker’ına karşı MQTT’yi deneyimleyebilirsiniz:
Online MQTT istemcisinde deneyin
Mosquitto dosyalarını nerede tutar
| Platform | Yapılandırma | Log’lar |
|---|---|---|
| Ubuntu / Debian | /etc/mosquitto/mosquitto.conf + conf.d/ | /var/log/mosquitto/mosquitto.log ve journalctl -u mosquitto |
| Windows | C:\Program Files\mosquitto\mosquitto.conf | log_dest file neyi gösteriyorsa orası; aksi halde ön planda -v kullanın |
| macOS (Homebrew) | $(brew --prefix)/etc/mosquitto/mosquitto.conf | brew services info mosquitto log yolunu gösterir |
Platform ne olursa olsun, bir şey başlamadığında terminalde mosquitto -c <path-to-conf> -v çalıştırın: yapılandırma hatalarını bir servis log’unda saklamak yerine doğrudan ekrana yazar. Önce servisi durdurun, aksi halde port zaten kullanımda olduğu için ön plandaki instance başarısız olur.
Yeni bir kurulumda sorun giderme
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Başka bir host’tan connection refused | Local only mode (listener yok) | listener 1883 ekleyin ve yeniden başlatın |
| "not authorised" / CONNACK kodu 5 | Anonim erişim devre dışı | -u/-P verin veya bir parola dosyası yapılandırın |
| "Address already in use" | 1883 numaralı port başka bir broker’da veya instance’ta | Onu durdurun veya sudo ss -ltnp | grep 1883 ile kontrol edin |
| Yapılandırma düzenlemesinden sonra servis başlamıyor | Yazım hatası veya hatalı dosya izinleri | Hatayı görmek için mosquitto -c /etc/mosquitto/mosquitto.conf -v komutunu ön planda çalıştırın |
Diğer CONNACK kodları ve zaman aşımları için MQTT bağlantı hataları rehberine bakın.
Sonraki adımlar
- Parolalar, ACL’ler ve TLS ile güvenliği sıkılaştırın: Mosquitto kimlik doğrulama.
- Container’ları mı tercih ediyorsunuz? Mosquitto’yu Docker’da çalıştırın.
- Mosquitto’yu diğer broker’larla broker dizinimizde karşılaştırın.
Sıkça sorulan sorular
Mosquitto neden yalnızca localhost’tan gelen bağlantıları kabul ediyor?
Mosquitto 2.0’dan beri, hiçbir listener yapılandırılmamışsa broker local only modunda başlar. mosquitto.conf dosyasına listener 1883 gibi bir listener satırı ve allow_anonymous true ya da bir password_file ekleyin, ardından broker’ı yeniden başlatın.
Ubuntu’da mosquitto kurmak mosquitto_pub ve mosquitto_sub’ı da kurar mı?
Hayır. Debian ve Ubuntu’da komut satırı client’ları ayrı mosquitto-clients paketinde bulunur. sudo apt install mosquitto-clients ile kurun.
mosquitto.conf dosyası nerede?
Linux’ta /etc/mosquitto/mosquitto.conf, Windows’ta kurulum klasöründe (genellikle C:\Program Files\mosquitto), Homebrew ile ise Homebrew’un etc dizini altındadır; örneğin Apple Silicon’da /opt/homebrew/etc/mosquitto/mosquitto.conf.