Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ajumalp/0ad2517d15c999cfc440cdf3d623fab8 to your computer and use it in GitHub Desktop.
Save ajumalp/0ad2517d15c999cfc440cdf3d623fab8 to your computer and use it in GitHub Desktop.
Install Mosquitto MQTT on Synology NAS Server
From https://synocommunity.com add http://packages.synocommunity.com to your NAS package sources.
For that, go to NAS->Package Cnter->Click Settings->Package Sources tab.
Then from the community, you can see Mosquitto. Install it.
After installing, please stop the Mosquitto service before updating configuration. You can start service after changes.
Enable Admin login for Synology
Enable SSH in NAS
Download putty and connect to NAS Server
Login using admin
Change to root user [sudo -i, {use admin password}]
Find mosquitto.conf file [find / -name mosquitto.conf]
Go to that path using cd [in my case cd /volume1/@appstore/mosquitto/var]
Edit mosquitto.conf [vi mosquitto.conf]
Might say it's used by another process. Force edit.
Scroll down and find # allow_anonymous [around line 513]
Remove # and make [allow_anonymous false] [Use insert on keyboard to edit]
Scroll and find #password_file [around line 555]
Remove # and make password_file /volume1/@appstore/mosquitto/var/password_file [where 2nd password_file is the actual filename]
Save the file [Esc-> :wq to save]
Now create a file password_file in /volume1/@appstore/mosquitto/var/
Ensure your are still in same directory, type vi password_file
This will create new file, press insert and type your username and password in below format
username:password [Username should not contain :]. You can add multiple users line by line
Save file and clseo [Esc->:wq]
Find mosquitto_passwd [find / -name mosquitto_passwd]
Stay in the mosquitto.conf folder itself. Because we have password_file file here.
From mosquitto.conf folder, type mosquitto_passwd [along with path] -U password_file to encrypt password.
In my case /volume1/@appstore/mosquitto/bin/mosquitto_passwd -U password_file
Start/restart Mosquitto Server
All done. Thank You.
@oddbytes
Copy link

Thanks!

@fastlink30
Copy link

thanks

@ajumalp
Copy link
Author

ajumalp commented Jun 25, 2020

Hi all,

I'm very happy to know this was helpful to you all.

Thank You

I've published a code to Automate Home and Office here

Smart Home

Get the source code here

A web based complete source code for Home Automation including ESP8266 firmware.
This application helps to control electronic devices remotely. This can be installed in your local network, and because you all have Synology NAS Server you can access your devices from any where. You need a WiFi/Ethernet at Home/Office to connect Arduino devices. Then from your phone, you can control connected appliances

  • This support PWA [Progressive Web App]. So this can be easily installed into any OS supporting PWA
  • The Arduino code for the devices is also included in the Hardware folder
  • Mainly supporting ESP8266 devices
  • Mainly developed for Synology NAS Server [tested in DS218+]

@krzychb
Copy link

krzychb commented Sep 13, 2020

This instruction was very helpful for me, thanks @ajumalp!

@quizzical86
Copy link

Many thanks for these instructions. The find functionality didnt work for me but I didn't needit. More importantly I cound encrypt my password as I got errors that my password file was corrupt. The workaround I found was to let the mosquitto_paswd tool add the username and password (immediately encrypted) into the password file. This is the command:
/volume1/@appstore/mosquitto/bin/mosquitto_passwd -c password_file addyourusernamehere
It will then prompt you for the desired password twice

@ThierryM
Copy link

ThierryM commented Apr 7, 2021

Thanks for the sharing @ajumalp !
I updated (April 7th 2021) in french here : https://lofurol.fr/joomla/electronique/domotique/279-nas-syno-installation-du-broker-mosquitto-mqtt
Regards

@ebolisa
Copy link

ebolisa commented Sep 27, 2021

Hi, thanks for sharing.

I followed through and set it up with no errors.
However, when connecting with any client, it's connecting with any name/password. It's like if 'allow_anonymous false' has no effect.
Listing the files, I noticed a differance in users between the password file and conf. Could that be the problem?
TIA

$ ls -la
total 56
drwxr-xr-x 2 sc-mosquitto sc-mosquitto 4096 Sep 27 12:33 .
drwxr-xr-x 9 sc-mosquitto sc-mosquitto 4096 Aug 11 00:08 ..
-rw-r--r-- 1 sc-mosquitto sc-mosquitto 44637 Sep 27 01:48 mosquitto.conf
-rw-r--r-- 1 root root 116 Sep 27 12:33 pwd_file

EDIT:
I changed the owner/groupship for file pwd_file with no avail. Of course, did stop/run the server.

@dieterplex
Copy link

I followed through and set it up with no errors. However, when connecting with any client, it's connecting with any name/password. It's like if 'allow_anonymous false' has no effect. Listing the files, I noticed a differance in users between the password file and conf. Could that be the problem? TIA

Face similar case on my DSM 7.0.1. Make sure you edit config file
from /volume1/@appdata/mosquitto/mosquitto.conf,
not_ /volume1/@appstore/mosquitto/var/mosquitto.conf.

@ebolisa
Copy link

ebolisa commented Oct 8, 2021

@dieterplex thank you.

@mager33
Copy link

mager33 commented Feb 20, 2022

to avoid multiple .conf files I just put one line in /volume1/@appdata/mosquitto/mosquitto.conf: "include_dir /volume1/@appstore/mosquitto/var/" and stayed with /volume1/@appstore/mosquitto/var/mosquitto.conf

@Koala280
Copy link

to avoid multiple .conf files I just put one line in /volume1/@appdata/mosquitto/mosquitto.conf: "include_dir /volume1/@appstore/mosquitto/var/" and stayed with /volume1/@appstore/mosquitto/var/mosquitto.conf

did you delete everything else in that file? Or just added it somewhere

@hkreb
Copy link

hkreb commented Jul 4, 2023

Don't forget to chown sc-mosquitto:sc-mosquitto pw_file

@monfiston
Copy link

Good morning
the code no longer works, it is impossible to connect to the mqtt
the paths are no longer the same
the var folder does not exist
the @appstore folder is replaced by @appdata
1

@mischa13
Copy link

Thank you all to all for the helpful snippets and hints.
I am a noob when it comes to mosquitto and shell configuration files.
My pitfall was definitely the configuration of the IP address and port on the listener.
In my case, mosquitto.conf said
listener 1883 127.0.0.1
and I had no access without an error message in the log.
After I entered the IP address of my NAS there, it worked.

@budda85
Copy link

budda85 commented Sep 20, 2023

Good morning the code no longer works, it is impossible to connect to the mqtt the paths are no longer the same the var folder does not exist the @appstore folder is replaced by @appdata 1

Hey @monfiston
you can find the config under /var/packages/mosquitto/var/

@didi31
Copy link

didi31 commented Oct 4, 2023

Hey,
doesn't work for me on my DS723+ under DSM 7.2.1
I modified the files /var/packages/mosquitto/var/mosquitto. conf and /var/packages/mosquitto/var/passwd
Encrypted the passwd, open port 1883 on the firewall and start the package.

I have this screen as soon as I click o the Connect button with the error message: Disconnected from server :(
image

@oekiwoeki
Copy link

Thank you all to all for the helpful snippets and hints. I am a noob when it comes to mosquitto and shell configuration files. My pitfall was definitely the configuration of the IP address and port on the listener. In my case, mosquitto.conf said listener 1883 127.0.0.1 and I had no access without an error message in the log. After I entered the IP address of my NAS there, it worked.

This did it for me!

@MrMarioGagnon
Copy link

Thanks for the detailed tutorial, my MQTT server is online

@AndySmithers
Copy link

To update this slightly for December 2024 and DSM 7.2.
(All the necessary information is in this thread but I thought it would be useful to put it all in one place after a successful installation)

Because of slight path changes in DSM, the original instructions should be changed to:

  1. From https://synocommunity.com add http://packages.synocommunity.com to your NAS package sources.
  2. For that, go to NAS->Package Cnter->Click Settings->Package Sources tab.
  3. Then from the community, you can see Mosquitto. Install it.
  4. After installing, please stop the Mosquitto service before updating configuration. You can start service after changes.
  5. Enable Admin login for Synology
  6. Enable SSH in NAS
  7. Download putty and connect to NAS Server
  8. Login using admin
  9. Change to root user [sudo -i, {use admin password}]
  10. Go to mosquitto folder: cd /volume1/@appdata/mosquitto
  11. Edit mosquitto.conf [vi mosquitto.conf]
  12. Scroll down and find # allow_anonymous [around line 23]
  13. Remove # and make [allow_anonymous false] [Use insert on keyboard to edit]
  14. Scroll and find #password_file [around line 26]
    15 Remove # and make password_file /volume1/@appdata/mosquitto/password_file
  15. Scroll and find listener 1883 127.0.0.1 [around line 234]
  16. Change the 127.0.0.1 to the IP address of your NAS
  17. Save the file [Esc-> :wq to save]
  18. Now create a file password_file in /volume1/@appdata/mosquitto/
  19. Ensure your are still in same directory, type vi password_file
  20. This will create new file, press insert and type your username and password in below format
    username:password [Username should not contain :]. You can add multiple users line by line
  21. Save file and clseo [Esc->:wq]
  22. Type: /volume1/@appstore/mosquitto/bin/mosquitto_passwd -U password_file to encrypt password
  23. Type: chown sc-mosquitto:synocommunity password_file
  24. Start/restart Mosquitto Server

It all should work now!

@PaulSinnema
Copy link

PaulSinnema commented Jan 7, 2025

I had to add 'bind_address [NAS IP Address]' to make this work.

@mz54
Copy link

mz54 commented Jan 10, 2025

just configured and started on my DS224+ with DSM 7.2.2-72806 Update 2, but I only see 1 line into the mosquitto.log file:

Starting mosquitto command /volume1/@appstore/mosquitto/sbin/mosquitto -d -c /volume1/@appdata/mosquitto/mosquitto.conf

How can I verify if it is working or not?
Regards, marco
p.s. tried with bind_address, but terminates in error

@PaulSinnema
Copy link

just configured an started on my DS224+ with DSM 7.2.2-72806 Update 2, but I only see 1 line into the mosquitto.log file:

Starting mosquitto command /volume1/@appstore/mosquitto/sbin/mosquitto -d -c /volume1/@appdata/mosquitto/mosquitto.conf

How can I verify if it is working or not? Regards, marco p.s. tried with bind_address, but terminates in error

Something in the text was hidden. I changed it now.

@mz54
Copy link

mz54 commented Jan 11, 2025

with this mosquitto.conf:
listener 1883 192.168.178.62
bind_address 192.168.178.62

the Log Center returns:
System failed to start [Mosquitto].

and mosquitto.log:
Starting mosquitto command /volume1/@appstore/mosquitto/sbin/mosquitto -d -c /volume1/@appdata/mosquitto/mosquitto.conf
1736585298: The 'bind_address' option is now deprecated and will be removed in a future version. The behaviour will default to true.
mosquitto is not running

Mosquitto version is 2.0.20-16

@micenusa
Copy link

micenusa commented Jan 24, 2025

with this mosquitto.conf: listener 1883 192.168.178.62 bind_address 192.168.178.62

the Log Center returns: System failed to start [Mosquitto].

and mosquitto.log: Starting mosquitto command /volume1/@appstore/mosquitto/sbin/mosquitto -d -c /volume1/@appdata/mosquitto/mosquitto.conf 1736585298: The 'bind_address' option is now deprecated and will be removed in a future version. The behaviour will default to true. mosquitto is not running

Mosquitto version is 2.0.20-16

Confirming is not working! I tried all the above configs...Mosquitto failed to start!
no matter what settings I do in the conf file, mosquitto failed to start!

@mz54
Copy link

mz54 commented Jan 24, 2025

Confirming is not working! I tried all the above configs...Mosquitto failed to start! no matter what settings I do in the conf file, mosquitto failed to start!

please help !!!

@micenusa
Copy link

So I was able to turn it on in the end...Anyhow is very sensitive!
1-st, I was understanding this step from @AndySmithers incorrectly...
make sure that password_file line from config looks like this "password_file /volume1/@appdata/mosquitto/password_file"...the path is also needed.An if you have multiple networks inside your NAS, listener must be also set with the desired NAS IP!

@mz54
Copy link

mz54 commented Feb 1, 2025

How can I verify if it is working or not?

OK, tried with default mosquitto.conf 127.0.0.1 and tested with mosquitto_sub/mosquitto_pub commands.

@mz54
Copy link

mz54 commented Feb 1, 2025

I did configure the log file with these steps:

  • in mosquitto.conf:

    • log_type all
    • log_dest file /var/log/mosquitto.log
  • in /var/log:

    • vi mosquitto.log (and :wq to create the file)
    • chown sc-mosquitto:synocommunity mosquitto.log (to assign permissions)

then restart mosquitto and see:

  • cat /var/log/mosquitto.log
    1738425543: mosquitto version 2.0.20 starting
    1738425543: Config loaded from /volume1/@appdata/mosquitto/mosquitto.conf.
    1738425543: Opening ipv4 listen socket on port 1883.
    1738425543: mosquitto version 2.0.20 running

@gibsonmb
Copy link

I had to add 'bind_address [NAS IP Address]' to make this work.

Where did you add this?

@micenusa
Copy link

I had to add 'bind_address [NAS IP Address]' to make this work.

Where did you add this?
step 16...
"Change the 127.0.0.1 to the IP address of your NAS"
in the config file you have to edit the local address allocated by your router...192.168.1.xxx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment