NAS od Synology se hodí na poustu věcí a jednou z nich je například možnost provozovat na něm jednoduchý MQTT server jako Mosquitto.
Instalace z balíčků
Mosquitto není součástí standardních balíčků a tak pokud jsme to už neudělali dříve musíme neprve přidat zdroj balíčků ze stránek synocommunity.com
V seznamu balíčků si pak najdeme Mosquitto a nainstalujeme běžným způsobem. Po instalaci bude služba ve stavu „Zastaveno“ a pokud se ji pokusíme ručně spustit tak dostaneme informace, že „Služba balíčku nebyla spuštěna“.
Úprava skriptu pro úspěšný start
Přihlasíme se přes ssh klienta na Synology a do shellu dáme následující příkazy:
cd /var/packages/mosquitto/scripts
sudo vi start-stop-status
a ve skriptu start-stop-status zakomentujeme řádek s názvem uživatele:
#!/bin/sh
# Package
PACKAGE="mosquitto"
DNAME="Mosquitto"
# Others
INSTALL_DIR="/usr/local/${PACKAGE}"
PATH="${INSTALL_DIR}/bin:${PATH}"
#USER="mosquitto" <--- TENTO RADEK ZAKOMENTUJEME
MOSQUITTO="${INSTALL_DIR}/sbin/mosquitto"
PID_FILE="${INSTALL_DIR}/var/mosquitto.pid"
CFG_FILE="${INSTALL_DIR}/var/mosquitto.conf"
Vrátíme se do menu s balíčky a pokusíme se spustit službu znovu a nyní by už mělo být vše vpořádku
Konfigurace
Ukážeme si jak změnit nastavení tak, aby bylo nutné se k MQTT přihlašovat pomocí uživatelského jména a hesla.
Hlavní konfigurační soubor mosquitto.conf se nachází ve složce /usr/local/mosquitto/var a upravíme jej takto:
allow_anonymous false
password_file /usr/local/mosquitto/etc/mosquitto/pwfile
Oba klíče by už v souboru měly být, takže je stačí odkomentovat a nastavit hodnoty.
Přepneme se do adresáře /usr/local/mosquitto/bin a zadáme příkaz:
sudo ./mosquitto_passwd -c /usr/local/mosquitto/etc/mosquitto/pwfile <uzivatel>
a poté budete vyzváni k zadání hesla. Pro aplikování změn zrestartujeme Mosquitto prostřednictvím správce balíčků.
Otestování konfigurace
Pro odzkoušení, že jsme vše nastavili správně potřebujeme nějakého MQTT klienta. Já používám MQTT.fx, který je multiplatformní a poměrně dobře se s ním dělá.
Nejprve nastavíme parametry MQTT Brokeru a vyplníme i záložku „User Credentials“, kam zadáme jméno uživatele a heslo, které jsme si vygenerovali výše.
Pokud vše funguje měli bychom po stisknutí na „Connect“ vidět vpravo zelenou bublinu.
Status si můžeme ověřit i pomocí obrazovky „Broker Status“.
Abychom si vyzkoušeli i opačný scénář, tj. že v případě špatných přistupových údajů se nebudeme schopni na MQTT brokera napojit změníme konfiguraci na nesprávný údaj v uživatelském jméně nebo hesle.
Měli bychom dostat informaci, že uživatel nebyl autorizován a spojení bylo odmínuto – červená bublina vpravo.
Dobry den,
na toto tema je i na youtube video. Provedl jsem podle neho, ale po zadani ssh user@ip_address a napsani hesla mi DS oznami „Permission denied, please try again“.
zkousel jsem i prihlaseni pres noveho uzivatele ssh svc-mosquitto@ip_address (heslo jsem zmenil, abych ho znal), ale vysledek je tentyz.
mam povolenou SSH sluzbu na portu 22 u Terminal and SNMP.
co s tim? dekuji za radu.
Dobrý den,
hmm zajímavé. Předpokládám povolenou službu máte přes „Ovládací panely->Terminál a SNMP->Terminál“ a volbu „Povolit službu SSH“ že? To by mělo být snad dostatečné. Možná ještě uživatel musí být administrátor, čili koukněte zda je ten váš ve skupině administrators.
A ještě jeden dotaz. Používal jste jiného uživatele než root že? Jelikož při rootovi mi to píše tu stejnou chybu.
J.
Zdravím, návod super jen prosim o radu jak konfigurovat server dal. Kde prosím mohu definovat jmena, hesla…? Děkuji
Díky za podnět. Původní článek jsem rozšířil o návod jak nastavit uživatelskou autentifikaci. Kdyby Vám v článku ještě něco chybělo tak dejte vědět.
Za rozšíření návodu mockrát děkuji 🙂 krásná práce. I tak jsem se ale zasekl na přidání uživatele:
login as: admin
[email protected]‚s password:
admin@RohlikNAS:/$ cd /usr/local/mosquitto/bin
admin@RohlikNAS:/usr/local/mosquitto/bin$ sudo ./mosquitto_passwd -c
Password:
mosquitto_passwd is a tool for managing password files for mosquitto.
Usage: mosquitto_passwd [-c | -D] passwordfile username
mosquitto_passwd -b passwordfile username password
mosquitto_passwd -U passwordfile
-b : run in batch mode to allow passing passwords on the command line.
-c : create a new password file. This will overwrite existing files.
-D : delete the username rather than adding/updating its password.
-U : update a plain text password file to use hashed passwords.
See http://mosquitto.org/ for more information.
admin@RohlikNAS:/usr/local/mosquitto/bin$ /usr/local/mosquitto/etc/mosquitto/pwf ile
-sh: syntax error near unexpected token `newline‘
admin@RohlikNAS:/usr/local/mosquitto/bin$ /usr/local/mosquitto/etc/mosquitto/pwfile
-sh: syntax error near unexpected token `newline‘
admin@RohlikNAS:/usr/local/mosquitto/bin$
Když na to tak koukám, tak důvodem mohlo být jedno z následujícího:
Zkuste to tedy příkaz zkopírovat znovu a pokud to nepomůže tak ručně přepsat. Možná to dělá skutečně jen neplechu při zkopírování.
Zdravím, perfektní článek, díky za něj. Zasekl jsem se na přidání uživatele, po zadání vašeho příkazu:
sudo ./mosquitto_passwd -c /usr/local/mosquitto/etc/mosquitto/pwfile
Mi to vyhodí chybu:
-sh: syntax error near unexpected token `newline‘
Nějaký nápad?
Děkuji
Vojta
Nevidím v tom vašem příkazu název uživatele. Zkuste to spustit kompletně, tj. např. pokud uživatel bude mít název „nas“ pak příkaz by byl:
sudo ./mosquitto_passwd -c /usr/local/mosquitto/etc/mosquitto/pwfile nas
Dobrý den, právě jsem na Synology NAS instaloval Mosquitto verze 1.4.14-9 a ten se okamžitě spustil. Nebylo potřeba žádnou úpravu. Domoticz se dle vašeho návodu také spustil. Nahrál jsem fw Tasmota do Sonoff basic, ale pokud ho vytáhnu ze zásuvky, tak v Domoticzu svítí pořád jako on-line. Prostě jsem nanstaloval Domoticz, MQTT a všechno šlo napoprvé. Prosím o nakopnutí, jak odstranit tuto chybu, děkuji.
Skvělá zpráva, že Mosquitto už šlape rovnou 🙂 Co se týče vašeho problému. Já tady tuším žádný článek k Domoticzu nemám, nebo ano? Nemám s tímto systémem žádné zkušenosti – víceméně odzačátku jsem používal HomeAssistant. Podle vašeho popisu se obvávám, že ten problém bude spíše na straně Domoticz než Tasmoty :(, ale fundovaně odpovědět neumím.
Zdravím, měl bych dotaz k Mosquitto a HomeAssistant. Mosquitto mi běží, ovlánání bez problému, ale občas se stane, že se nějaký výstup ze zařízení Sonof s Tasmotou se opakovaně sám zapíná. Můžeto bý způsobeno, že nemám Mosquitto se zařízeními Sonoff přihlášené přes heslo u uživatelské jméno? Děkuji. Pepa
Tuším, že by zrada v přístupu bez hesla neměla být. Samotnému se mě to občas stalo – tak jednou za 14dní a než jsem po tom začal pátrat tak jsem přešel na ESPHome. Jak často se vám to děje?
Když vypnu a zachvíly zapnu Mosquitto tak mám třeba na den dva klid, ale pak se to stává několikrát za den a vetšinou se to stává na jednom určitém výstupu. Ale jednou za čas (2-3 za týden) se to stane i na jiných výstupech, více méně na náhodných výstupech. Mám celkem cca 35 výstupů. Ale když jsem si nastavil výstup jako tlačítko s impulzem na 2s (ovládání vjezdové brány) tak v tomto případě se samovolně spínal i 10-15 za den, zkušel jsem to i na ruzných zařízeních Basic, Wemos D1 mini, 4 Ch a všude to bylo stejné, neustálé samovolné spínání.
Zkusil bych se připojit na MQTT pomocí třebas MQTT.fx aplikace a dát subsribe na jedno zařízení – popř. i více ale zase abyste tam pak toho neměl moc a z logu zpráv by pak mohlo jít odvodit, kde ten problém nastává. Např. jestli nedochází k restartu těch zařízení.
A kdyz se vam to stavalo mel jste pripojeni Mosquitto-Sonoff pod heslem?
Ano, měl. Byl to pravda divný pocit když se to samo seplo během noci a svítila lampa. Člověk začne trochu pochybovat, zda mu to někdo neovládá. Mate ten MQTT na synology nasce?
Ano na Synology. Mam tento problem od zacatku co jsem presel na Tasmotu. Mam pres Sonoff ovladany skoro cely dum a dost me to ted znepokojuje kdyz se mi v noci rozsvici svetlo v loznici a v detskych pokojich 🙁 hledam po netu nejake reseni ale zatim bez uspechu.
Jj, chápu. Nic konkrétního mě takhle nenapadá. Šel bych na přes logovani a zkusil tam najít příčinu. A nebo šílenější varianta přejít na ESPHome 🙂
Jak moc je narocny prechod na ESPHome? Predpokladam ze bude potreba prepsat cely config home assistanta..?
Dobrý den, děkuji Vám za vaše články, jsou velice inspirující.
V balíčcích na „synocommunity.com/packages“ jsem našel beta verzi Home Assistant:
https://synocommunity.com/package/homeassistant
Nemáte s tím nějakou zkušenost? Po instalaci se Home Assistant spustí, ale nedokáži se do něj přihlásit, protože asi neznám správné jméno a heslo.
Děkuji
BB
Dobrý den, zajímavé. Já kdysi HomeAssistant zkoušel dostat na Synology NAS, podle návodu na Homeassistant webu, ale odradila mě tahle věta:
A koukám, že je to s verzí Pythonu na NASu stále stejné. Otázka je tedy jak to dělá váš uvedený balíček, jelikož má očividně novější verzi HA než 0.65. Na druhou stranu je tohle trochu cesta do pekel, jelikož jste pak hodně závislý na balíčku pro Synology, které bohužel nebývají zrovna nejčerstvější. Z podobného důvodu jsem přestal používat na NASu i Ubiquiti controller.
Je škoda, že ten NASový systém od Synology není nějaký univerzálnější, že by si tam člověk doinstaloval co potřebuje, jelikož HW je to supr stabilní. Jediným řešením jsou asi ty vyšší verze, které podporují docker kontejnery, ale to už je cenově dost šílené.
Nějak jsem se rozepsal a trochu odbočil takže ve zkratce s tímhle balíčkem zkušenosti nemám.
Dobrý den, v synocommunity.com je Python 3.5.6 – to by možná mohlo pomoct s HA… 🙂
Dobrý den,
jsem nováček v tomto, udelal jsem
cd /var/packages/mosquitto/scripts
sudo vi start-stop-status
za asekl jsem se v instalaci u textu:
„ve skriptu start-stop-status zakomentujeme řádek s názvem uživatele“
Vůbec nevím co tím autor myslel nebo jak s tím dále naložit?
Dobrý den, komentováním je myšleno přidání znaku
#
na začátek řádkuUSER="mosquitto"
. Je už to nyní jasnější?vubec ne, nejsem programator napsalo mi tohle a nevim co s tim
https://uloz.to/!SJbkutBWS7oG/mosquitto-jpg
Ten váš screenshot obsahuje jen konec skriptu. Ten řádek k zakomentování je úplně nahoře 🙂 Bohužel tedy práce s editorem vi není úplně komfortní a nic jiného na NASu tuším standardně není 🙁 Zkuste se možná podívat sem https://milux.php5.cz/skoleni/skoleni-unix-4.html pokud netušíte jak v tom pracovat.
prave ze to je veskery kod ktery se zobrazil
dobrý den,
instalaci jsem provedl podle návodu, ale při spuštění MQTT FX se mi spouští ať zadám uživatele nebo bez? …vždy zelená bublinka, což je zřejmě špatně…co dělám špatně?
Dobrý den, jestli to dobře chápu, jde vám o to, že vám nefunguje přihlašování na základě uživatele, resp. to tyto údaje ignoruje?
přesně tak, vytvořil jsem uživatele „X“ s heslem „Y“ do souboru „pwfile“, v configu jsem aktivoval pravidlo „allow_anonymous false“ a zároveň jsem zde nastavil odkaz na soubor s nově vytvořeným uživatelem „password_file /usr/local/mosquitto/etc/mosquitto/pwfile“.
Ale v MQTT FX i když zadám uživatele „A“ s heslem „B“, nebo nechám políčka prázdná, tak se vpohodě připojí.
Kouknul jsem na to a nic jiného v konfiguračním souboru u mě nevidím a funguje chová se to jak je to v článku. Napadá mě snad jedině jestli jste po nastavení NAS či tuto službu restartoval, ale to předpokládám že ano. Nic dalšího tam nevidím 🙁
tak nevím v čem byl bug, ale po 2. restartu NASu a následném zastavení a spuštění MQTT serveru se to rozběhlo korektně, kdy je vyžadován autorizovaný uživatel….každopádně díky support
Super 🙂