Gallaugher
Gallaugher

Reputation: 1971

Mosquitto 2.0 config still not working on Raspberry Pi

I'm running an MQTT server mosquitto version 2.0.11 on the same Raspberry Pi Bullseye (3 A+) as both broker and client. I had code working, but understand that one needs to modify a .conf file to get things working. I must still not be understanding something because here's my file:

# I had pid_file /run/mosquitto/mosquitto.pid below, but changed this when docs suggested below should be included if running automatically when device boots, which it will be.
pid_file /var/run/mosquitto/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883
allow_anonymous true

Now when I try to run mosquitto like this:

mosquitto -c /etc/mosquitto/conf.d/mosquitto.conf

I get this error:

1637370455: Loading config file /etc/mosquitto/conf.d/mosquitto.conf
1637370455: Error: Duplicate pid_file value in configuration.
1637370455: Error found at /etc/mosquitto/conf.d/mosquitto.conf:7.
1637370455: Error found at /etc/mosquitto/conf.d/mosquitto.conf:14.

Line 7 is the pid_file /var/run/mosquitto/mosquitto.pid Line 14 is the include_dir /etc/mosquitto/conf.d

I can make basic pub and sub tests with localhost but still no luck with the hostname. Yes I know you should use security but I have an app that controls a robot over local WiFi and want to preserve app usage without changing that component too.

Any help on getting me back on track to getting the Mosquitto broker & client working on the same pi, allowing anonymous access, and running, is much appreciated. I hav gone through the docs, example file, and consulted other tutorials like Steve’s but proper configuration is still unclear. Thx!

Upvotes: 2

Views: 4418

Answers (1)

hardillb
hardillb

Reputation: 59781

Firstly the errors about not being able to open the pid or log files are because you are running mosquitto as a normal user (probably pi). This user does not have permission to read/write to file in /var/run or /var/log hence the failure when you try and run it "manually".

You've not said how you installed 2.0.11, as the default version bundled with Bullseys is still a 1.5.x build. Assuming you used the mosquitto.org repository then the mosquitto service will have been installed and configured. It will automatically pick up the default config file at /etc/mosquitto/mosquitto.conf as should be displayed with:

$ sudo service mosquitto status
● mosquitto.service - Mosquitto MQTT Broker
   Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset
   Active: active (running) since Sun 2021-10-31 17:28:52 GMT; 2 weeks 5 days ag
     Docs: man:mosquitto.conf(5)
           man:mosquitto(8)
  Process: 499 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited
  Process: 505 ExecStartPre=/bin/chown mosquitto /var/log/mosquitto (code=exited
  Process: 507 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, st
  Process: 510 ExecStartPre=/bin/chown mosquitto /run/mosquitto (code=exited, st
  Process: 25679 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCE
 Main PID: 511 (mosquitto)
    Tasks: 1 (limit: 2181)
   CGroup: /system.slice/mosquitto.service
           └─511 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Nov 19 00:00:10 www systemd[1]: Reloading Mosquitto MQTT Broker.
Nov 19 00:00:10 www systemd[1]: Reloaded Mosquitto MQTT Broker.
Warning: Journal has been rotated since unit was started. Log output is incomple

The simplest way to enable access from other machines is to do the following:

  • Reset the default config file to as it was when installed

     # Place your local configuration in /etc/mosquitto/conf.d/
     #
     # A full description of the configuration file is at
     # /usr/share/doc/mosquitto/examples/mosquitto.conf.example
    
     pid_file /var/run/mosquitto/mosquitto.pid
    
     persistence true
     persistence_location /var/lib/mosquitto/
    
     log_dest file /var/log/mosquitto/mosquitto.log
    
     port 1883
    
     include_dir /etc/mosquitto/conf.d
    
  • create a new file in /etc/mosquitto/conf.d e.g. called connect.conf

     listener 1883
    
     allow_anonymous true
    
  • restart the service with sudo service mosquitto restart

Upvotes: 2

Related Questions