mosquitto.conf oluşturucu
Listener, TLS, WebSocket, kimlik doğrulama, kalıcılık ve loglama ayarlarını seçin; uygun mosquitto_passwd, Docker ve systemd komutlarıyla birlikte açıklamalı bir Mosquitto 2.x yapılandırması alın.
# mosquitto.conf — Mosquitto 2.x
# Generated with the TestMQTT mosquitto.conf generator.
# Full reference: man mosquitto.conf / https://mosquitto.org/man/mosquitto-conf-5.html
# ------------------------------------------------------------------
# General
# ------------------------------------------------------------------
# One set of authentication settings shared by every listener.
per_listener_settings false
# ------------------------------------------------------------------
# Persistence
# ------------------------------------------------------------------
# Save retained messages, subscriptions and queued QoS 1/2 messages to disk.
persistence true
persistence_location /var/lib/mosquitto/
# ------------------------------------------------------------------
# Logging
# ------------------------------------------------------------------
log_dest file /var/log/mosquitto/mosquitto.log
log_type error
log_type warning
log_type notice
log_type information
log_timestamp true
log_timestamp_format %Y-%m-%dT%H:%M:%S
# ------------------------------------------------------------------
# Security (applies to all listeners)
# ------------------------------------------------------------------
allow_anonymous false
password_file /etc/mosquitto/passwd
# ------------------------------------------------------------------
# Listeners
# ------------------------------------------------------------------
# MQTT over TCP
listener 1883
# MQTT over WebSockets
listener 9001
protocol websocketsKullanıcıları oluşturun
# Create the password file with the first user (-c creates / overwrites it)
sudo mosquitto_passwd -c /etc/mosquitto/passwd alice
# Add more users later — without -c
sudo mosquitto_passwd /etc/mosquitto/passwd bob
# Mosquitto 2.x warns if the file is readable by other users
sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
sudo chmod 0700 /etc/mosquitto/passwdDocker ile çalıştırın
# Layout: ./config/mosquitto.conf, ./config/passwd
mkdir -p config data log
cp mosquitto.conf config/mosquitto.conf
docker run -d --name mosquitto --restart unless-stopped \
-p 1883:1883 \
-p 9001:9001 \
-v "$PWD/config:/mosquitto/config" \
-v "$PWD/data:/mosquitto/data" \
-v "$PWD/log:/mosquitto/log" \
eclipse-mosquitto:2
docker logs -f mosquitto
# Tip: set "Paths for" to Docker so the file paths in the config match the container.Bir Linux sunucusunda uygulayın (systemd)
# Install the config
sudo cp mosquitto.conf /etc/mosquitto/mosquitto.conf
# Optional: run in the foreground to spot config errors (Ctrl+C to stop)
sudo systemctl stop mosquitto
sudo mosquitto -c /etc/mosquitto/mosquitto.conf -v
# Restart the service and follow its log
sudo systemctl restart mosquitto
sudo systemctl status mosquitto
sudo journalctl -u mosquitto -fMosquitto 2.0’ın yalnızca yerel varsayılanı
Mosquitto 2.0, kutudan çıktığı haliyle güvenli olması için varsayılanları değiştirdi. Yapılandırmada hiç listener satırı yoksa broker yalnızca localhost’a bağlanır ve siz açıkça izin vermedikçe anonim client’ları reddeder. Yeni bir kurulumun aynı makinede mosquitto_sub ile çalışıp diğer tüm cihazları reddetmesinin nedeni budur. Çözüm, açık bir listener ve kimlik doğrulama konusunda bir karardır — bu oluşturucu tam olarak bunu yazar. Sıfırdan mı kuruyorsunuz? Mosquitto kurulumu ile başlayın.
Listener’lar
Her listener satırı bir port açar ve bir blok başlatır: ardından gelen satırlar (protokol, sertifikalar, max_connections) bir sonraki listener’a kadar o listener’a aittir. 1883 düz MQTT, 8883 TLS üzerinden MQTT’dir; protocol websockets içeren bir listener ise tarayıcı client’larına hizmet eder — genellikle 9001 tercih edilir. Bir listener’ı yalnızca host’a açık tutmak için 127.0.0.1 gibi isteğe bağlı bir bind adresi ekleyin. MQTT port’ları rehberi ve WebSocket üzerinden MQTT bu kuralları açıklıyor.
TLS listener’ları bir certfile ve bir keyfile gerektirir; Let’s Encrypt ile bunlar fullchain.pem ve privkey.pem dosyalarıdır. cafile yalnızca client’ları kendi sertifikalarıyla doğrulamak için require_certificate seçeneğini açtığınızda gereklidir.
Kimlik doğrulama ve ACL’ler
Ağdan erişilebilen her broker için temel kural, allow_anonymous false ile birlikte bir password_file kullanmaktır. Dosyayı mosquitto_passwd -c ile oluşturun — dikkat: -c mevcut dosyanın üzerine yazar, bu yüzden yeni kullanıcı eklerken kullanmayın. Ardından bir acl_file, her kullanıcının hangi topic’leri okuyup yazabileceğini sınırlar; oluşturulan örnek, kullanıcı kurallarını ve %u ile %c yer tutucularını kullanan pattern kurallarını gösterir. Adım adım anlatım için Mosquitto kimlik doğrulama yazısını okuyun.
per_listener_settings listener’lardan önce yer almalıdır. Tek bir ortak kural seti için false bırakın; örneğin localhost listener’ı anonim kalırken herkese açık listener’ın şifre istemesini istiyorsanız true yapın.
Kalıcılık, loglama ve limitler
persistence true ile retained mesajlar, kalıcı session’lar ve kuyruktaki QoS 1 ve 2 mesajları, persistence_location içindeki mosquitto.db dosyasında yeniden başlatmalardan sağ çıkar (sondaki eğik çizgiyi koruyun). Sunucuda bir dosyaya, Docker’da ise docker logs her şeyi göstersin diye stdout’a loglayın. max_packet_size aşırı büyük paketleri reddeder ve kullanımdan kaldırılan message_size_limit seçeneğinin yerini alır; max_connections listener başına client sayısını sınırlar.
Çalıştırma
Container’lar için dosya yollarını resmî imajın düzenine uyacak şekilde Docker’a çevirin, ardından Mosquitto’yu Docker’da çalıştırma rehberini izleyin. Sunucuda servisi yeniden başlatmadan önce dosyayı mosquitto -c … -v ile ön planda test edin. Broker ayağa kalktığında online MQTT client ile WebSocket üzerinden bağlanın ve internete açmadan önce MQTT güvenlik en iyi uygulamalarını gözden geçirin.
mosquitto.conf hakkında sık sorulan sorular
Client’lar neden başka bir makineden Mosquitto 2.0’a bağlanamıyor?
2.0 sürümünden beri listener direktifi olmadan başlatılan Mosquitto yalnızca localhost’u dinler ve anonim client’ları reddeder. "listener 1883" gibi açık bir listener ekleyin ve ya bir password_file yapılandırın ya da allow_anonymous true ayarlayın.
mosquitto.conf nerede bulunur?
Linux paketleri dosyayı /etc/mosquitto/mosquitto.conf konumuna kurar, Homebrew /opt/homebrew/etc/mosquitto/mosquitto.conf kullanır, resmî Docker imajı ise /mosquitto/config/mosquitto.conf dosyasını okur.
per_listener_settings ne işe yarar?
false olduğunda (varsayılan) allow_anonymous, password_file ve acl_file tüm listener’lara uygulanır. true olduğunda her listener kendi kimlik doğrulama ayarlarına sahip olur — örneğin yalnızca localhost’a açık bir port’ta anonim erişim, herkese açık port’ta ise şifre.
Kullanıcı ekledikten sonra Mosquitto’yu yeniden başlatmam gerekir mi?
Mosquitto, SIGHUP aldığında şifre ve ACL dosyalarını yeniden okur; bu yüzden systemctl reload mosquitto veya bir yeniden başlatma yeterlidir. Listener değişiklikleri ise her zaman tam bir yeniden başlatma gerektirir.