Mosquitto is an open source message broker that Implements MQTT versions 3.1 and 3.1.1.
It is available as a free download for Windows and Linux,and In this tutorial you will learn how to install the mosquitto MQTT broker (server) on both on Windows and Linux, and then test the installation.
Installing The Mosquitto Broker on Windows
Note: The term server instead of broker as been adopted as of MQTT version 3.1.1
There are two possibilities:
- Quick Install
- Standard Install
Quick Windows Install
The problem with the standard install is that there are certain dependencies that need to be installed before you do the mosquitto install.
This involves installing software and copying files from the install into the Mosquitto install folder.
However, if you have already installed Mosquiito on another windows machine e.g. XP and want to install it on another machine e.g. Windows 10 then you can just copy the directory containing the mosquitto files to the new machine.
I copied my windows XP install (32 bit) onto a window10 (64bit) machine and a Windows 7 machine and it worked OK.
I’ve create a zipped directory which I’ve used on Windows 10 and Windows 7.
You can download it here– Don’t forget to virus check it let me know if you have any problems with it.
Just unzip it go to the directory and run the broker manually as covered later.
Standard Install On Windows
As mentioned earlier the big problem with the Windows Install is that there are lots of dependencies that you also need to install or have installed.
However the advantage is that you can install Mosquitto as a service which starts automatically. This is not important for a test environment
First you will need to download the Windows install files from here.
I used the cygwin version (not sure of the exact differences ).
There are good detailed step by step install instructions for windows here.
It is important that you install the addition files, and copy them to the mosquitto directory as mentioned in the article.
If you don’t then when you try to start mosquitto you will get an error message complaining about a missing dll.
In the above case it was the cygcrypto-1.0.0.dll.
When you have installed Mosquitto and copied the additional files then this is what the mosquitto directory looks like when finished.
Note 1: above screenshot is missing some files from cygwin as it was installed and the files were in the right path.
Note 2: there is readme-windows.txt file in the mosquitto install directory that you should read
Here is a complete list of additional files that you need:
Starting Mosquitto on Windows
If you have installed Mosquitto using the install .exe and ticked the start as service box then the mosquitto broker starts as a service.
This is what you want in a production environment but for testing you will want to start it manually.
To stop the mosquitto server if it is running as a service. go to control panel>admin tools>services.
You can stop the broker and change the automatic startup settings so it doesn’t automatically start on Windows start up.
Note: On my install (on XP) it wouldn’t start as a service and gave error code 1053. This wasn’t a problem because I wanted to start it manually anyway.
To start the broker manually open a command prompt and go to the mosquitto install directory and type mosquitto.
You can also use various command line switches. Type
Installing The Mosquitto Broker on Linux
The download links and install directions for Linux are here
I followed the install instructions for Ubuntu but they seemed to miss a few important steps. Here are the steps I used for Linux Mint.
- sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
- sudo apt-get update
- sudo apt-get install mosquitto
- sudo apt-get install mosquitto-clients
It should automatically start mosquitto.
To Stop and start the service I needed to use
- sudo service stop mosquitto
- sudo service start mosquitto #see note later
Most sites I discovered where using the format.
- sudo /etc/init.d/mosquitto stop
However it seems newer installations use upstart initialization system instead of the init.d initialization system.
The stop/start scripts start the mosquitto broker in the background and also use the default mosquitto.conf file in the /etc/mosquitto/ folder.
If you want to see control messages on the console then you need to start the mosquitto broker from a command line.
You first need to to stop the broker from running, and then type:
Testing The Install
To test it is running use command:
- netstat –at for Linux and netstat -a for Windows
You should see the Mosquitto broker running on port 1883 as shown in the screen shot above.
Starting Mosquitto Using a Configuration file
The configuration file (mosquitto.conf) that comes with the install is completely commented out, and the MQTT broker doesn’t need it.
To start mosquitto using a configuration file use the following command:
- mosquitto -c filename
On windows the mosquitto.conf template file is found in the mosquitto directory.
On linux you can find the mosquitto.conf template file in the /etc/mosquitto/ folder.
It is a good idea to create a copy of this file before editing it.
This is useful for troubleshooting. Logging is already enabled in the default config file so all you need do is start mosquitto with this config file.
Important Note: on Linux although you stop mosquito from running using the command
- sudo stop mosquitto
to start it use:
- mosquitto -c /etc/mosquitto/mosquitto.conf
On Windows you may also need to specify the path to the config file e.g.
- mosquitto -c c:\mosquitto\mosquitto.conf
You can also use a command line switch -v to enable logging:
Running Multiple Mosquitto Brokers
You can configure a broker to listen on several ports, but to create multiple brokers with their own configurations then you will need to start multiple instances of mosquitto. See Quick Guide to the Mosquitto.conf file and this video on running multiple brokers.
Start mosquitto and listen on port 1883
mosquitto -p 1883
Start mosquitto as a daemon and listen on port 1884
mosquitto -p 1884 -d
Start mosquitto as a daemon and use the mosquitti-2.conf file. – Windows
mosquitto -c c:\mosquitto\mosquitto-2.conf -d
mosquitto -c /etc/mosquitto/mosquitto-2.conf -d
Useful Linux Commands
To stop Mosquitto when running as a daemon:
ps -aux | grep mosquitto
kill -9 PID (that you get from above command)
Mosquitto Client Scripts
The windows install includes the client scripts, on Linux they need to be installed. Use
- sudo apt-get install mosquitto-clients
There is a simple subscriber client
and a publisher client
They are useful for some quick tests. See Using The Mosquitto_pub and Mosquitto_sub Client Tools- Examples
- I didn’t get the scripts to work on Windows XP -Error not a vaild win32 application
- On Windows 7 and 10 they gave an error regarding a missing msvcr100.dll file. I found the file on my system and copied it to the Mosquitto directory and they worked OK.
MQTTlens is also very useful for troubleshooting and quick testing. It is an add-on for the chrome browser.
It lets you publish and subscribe to topics using a web interface, and is much easier to use than the command line clients.
Mosquitto Configuration Tutorials
- Configuring and Testing MQTT Topic Restrictions
- Quick Guide to The Mosquitto.conf File With Examples
- Configuring Username and Password Authentication
- MQTT TLS Security – Mosquitto Broker Configuration
- Understanding and Configuring Logging on Mosquitto
- Understanding and Configuring Bridging on Mosquitto
- Configure Mosquitto Bridge With SSL Encryption- Examples
Other Related Articles and Resources: