Skip to content

Mosquitto: custom config loaded before main config, log_type settings get overridden #4531

@balsih

Description

@balsih

Describe the issue you are experiencing

Description

When using the customize feature to load a custom /share/mosquitto/mosquitto.conf,
the file is loaded before /etc/mosquitto/mosquitto.conf. This means any settings
in the custom config (e.g. log_type) are overridden by the main config generated by
the add-on, making it impossible to control log verbosity via the customize folder.

Check the additional information section at the end for the impact.

Expected behavior

Custom config settings should take precedence over (or at least not be overridden by)
the generated main config.

Actual behavior

From the logs it is clear the custom config is loaded first:

  1. Loading config file /share/mosquitto/mosquitto.conf
  2. Config loaded from /etc/mosquitto/mosquitto.conf.

The main config is loaded second and overrides log_type.

Suggestion

Either load the custom config after the main config, or use include_dir at the
end of /etc/mosquitto/mosquitto.conf so custom settings win.

What type of installation are you running?

Home Assistant OS

Which operating system are you running on?

Home Assistant Operating System

Which app are you reporting an issue with?

Mosquitto broker

What is the version of the app?

2.0.22

Steps to reproduce the issue

  1. Enable customize: active: true, folder: mosquitto in the add-on config
  2. Create /share/mosquitto/mosquitto.conf with log_type warning
  3. Restart the add-on
  4. Observe logs — informational connect/disconnect messages still appear

System Health information

System Information

version core-2026.4.0
installation_type Home Assistant OS
dev false
hassio true
docker true
container_arch aarch64
user root
virtualenv false
python_version 3.14.2
os_name Linux
os_version 6.12.47-haos-raspi
arch aarch64
timezone Europe/Zurich
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.5
Stage running
Available Repositories 2929
Downloaded Repositories 3
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 17.1
update_channel stable
supervisor_version supervisor-2026.03.2
agent_version 1.8.1
docker_version 29.1.3
disk_total 28.6 GB
disk_used 18.2 GB
nameservers 192.168.1.1, fe80::3a94:edff:feaf:1191
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Duck DNS (1.26.0), File editor (5.8.0), Samba share (12.6.1), Terminal & SSH (10.0.2), Frigate (0.17.1), Mosquitto broker (6.5.2)
Dashboards
dashboards 3
resources 1
views 4
mode storage
Network Configuration
adapters lo (disabled), end0 (enabled, default, auto), docker0 (disabled), hassio (disabled), vethc3c0375 (disabled), vethe79c466 (disabled), veth9f5c31e (disabled), veth88f053f (disabled), veth05533bb (disabled), vethd317ee9 (disabled), veth3a01787 (disabled), vethb39d019 (disabled), veth669d2dc (disabled)
ipv4_addresses lo (127.0.0.1/8), end0 (192.168.1.131/24), docker0 (172.30.232.1/23), hassio (172.30.32.1/23), vethc3c0375 (), vethe79c466 (), veth9f5c31e (), veth88f053f (), veth05533bb (), vethd317ee9 (), veth3a01787 (), vethb39d019 (), veth669d2dc ()
ipv6_addresses lo (::1/128), end0 (2a00:d2a0:19:d300:b2d8:f818:7123:912a/64, fe80::eff6:8cdc:dcda:82ff/64), docker0 (fe80::186a:abff:fea2:6306/64), hassio (fe80::b808:a8ff:fe77:97c2/64), vethc3c0375 (fe80::a860:caff:feb3:247d/64), vethe79c466 (fe80::9491:29ff:fe92:c74a/64), veth9f5c31e (fe80::d04b:32ff:fef3:466a/64), veth88f053f (fe80::e898:46ff:fe8e:60c8/64), veth05533bb (fe80::e8d0:10ff:fed1:df1c/64), vethd317ee9 (fe80::c406:4fff:fe93:692d/64), veth3a01787 (fe80::c93:1fff:fe05:547d/64), vethb39d019 (fe80::d094:b9ff:fed6:a8ef/64), veth669d2dc (fe80::ec6f:83ff:fe8f:6351/64)
announce_addresses 192.168.1.131, 2a00:d2a0:19:d300:b2d8:f818:7123:912a, fe80::eff6:8cdc:dcda:82ff
Recorder
oldest_recorder_run 21. März 2026 um 16:18
current_recorder_run 2. April 2026 um 09:17
estimated_db_size 60.70 MiB
database_engine sqlite
database_version 3.49.2

Anything in the Supervisor logs that might be useful for us?

Anything in the app logs that might be useful for us?

2026-04-03 11:20:50: Client <unknown> closed its connection.
2026-04-03 11:22:50: New connection from 172.30.32.2:40150 on port 1883.
2026-04-03 11:22:50: Client <unknown> closed its connection.
2026-04-03 11:24:50: New connection from 172.30.32.2:34934 on port 1883.
2026-04-03 11:24:50: Client <unknown> closed its connection.
2026-04-03 11:26:50: New connection from 172.30.32.2:36322 on port 1883.
2026-04-03 11:26:50: Client <unknown> closed its connection.
2026-04-03 11:28:50: New connection from 172.30.32.2:60914 on port 1883.
2026-04-03 11:28:50: Client <unknown> closed its connection.
2026-04-03 11:30:50: New connection from 172.30.32.2:43750 on port 1883.
2026-04-03 11:30:50: Client <unknown> closed its connection.
2026-04-03 11:32:50: New connection from 172.30.32.2:35246 on port 1883.
2026-04-03 11:32:50: Client <unknown> closed its connection.
2026-04-03 11:34:50: New connection from 172.30.32.2:59764 on port 1883.
2026-04-03 11:34:50: Client <unknown> closed its connection.

Additional information

Why this matters

The inability to control log verbosity has real hardware consequences for users
running HAOS on SD card-based devices (e.g. Raspberry Pi).

The Mosquitto add-on watchdog (watchdog: tcp://[HOST]:1883) probes port 1883
every ~2 minutes via a raw TCP connection. Since it never completes the MQTT
handshake, Mosquitto logs every probe as:

New connection from 172.30.32.2:PORT on port 1883.
Client <unknown> closed its connection.

This generates ~720 unnecessary log entries per day — caused entirely by the
add-on's own internal infrastructure. Users cannot suppress this noise because
the custom config's log_type setting gets overridden by the main config.

Excessive log writes accelerate SD card wear. For users on Raspberry Pi or
similar embedded hardware, this is not a cosmetic issue — it directly impacts
the lifespan of their storage medium.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions