Chapter 2

Install the Woow EMQX add-on

Install the Woow EMQX add-on (EMQX 5.8.9): add the WoowTech repository, install and start it, host_network, the five ports, how you get in through Ingress, first login and changing the password, and port conflicts with Mosquitto.

Why this matters

The Home Assistant add-on store does not carry Woow EMQX by default, so before you can install it you have to add the WoowTech repository to your Home Assistant. The process is not hard, but if you have not sorted out three keywords first — "host_network mode", "ports 1883/18083" and "Ingress" — what usually happens is that the add-on will not start, and you are left in front of the log with no idea why.

By the end of this chapter you will be able to do the whole thing yourself: add the repository → install → start → log in for the first time with admin/public → change the default password. You will also know what each of the five ports is for, and what to do when Mosquitto has taken a port you need.

Core concepts

Woow EMQX is a Home Assistant add-on that WOOWTECH maintains as a fork of hassio-addons/addon-emqx. It ships EMQX 5.8.9 (Open Source) on the Erlang/OTP runtime, with a built-in SQLite store for its settings. The add-on runs with host_network: true, which means it does not seal its networking into a small virtual network inside the container; it sends and receives MQTT on the ports of the Home Assistant host itself.

The upside is that other browsers, phone apps and external devices can reach ports such as 1883 and 8883 on your host directly, with nothing in between. The cost is that you now have to care about who is holding a port: if you keep Home Assistant's Mosquitto add-on, both use 1883, so the two cannot start at the same time.

The add-on also serves its admin interface through ingress mode: you can open the EMQX Dashboard straight from the Home Assistant sidebar, with no need to remember http://<host>:18083. The add-on's config.yaml already sets both ingress_port: 18083 and host_network: true.

Terms at a glance

TermPlain EnglishWhat it means
Repositoryadd-on sourceWhere Home Assistant gets extra add-ons from
Host Networkhost network modeThe mode in which the add-on uses the host's network directly
Ingressentry channelOpens the add-on's web page straight from the Home Assistant sidebar
Listener Portlistener portWhich ports the broker takes MQTT and admin traffic on
Web UIweb admin interfaceThe way in to the EMQX Dashboard

One repo address matters here: https://github.com/WOOWTECH/Woow_ha_emqx — that is the repository source you are about to add to Home Assistant.

Hands-on

  1. Add the WoowTech repository

    In Home Assistant, go to Settings → Add-ons → Add-on store, open the ⋯ menu at the top right → Add repository, paste in https://github.com/WOOWTECH/Woow_ha_emqx and click Add.

  2. Install Woow EMQX

    Refresh the store, find Woow EMQX, open it and click Install (the download can take a while).

  3. Start the add-on

    Check that host_network is enabled on the add-on page, then click Start. Afterwards read the log and confirm there is no "port already in use" error.

  4. Open the Web UI and log in for the first time

    Click Open Web UI and log in with the user name admin and the password public. If you are asked to change the password, change it there and then to <your-new-password>, and do not use public again before you create real MQTT accounts in a later chapter.

The five ports clients connect on

Because of host_network, these five ports are open on the Home Assistant host itself. The add-on README lists the following defaults.

PortProtocolWhat it means
1883MQTTStandard MQTT (TCP)
8083MQTT/WSMQTT over WebSocket
8084MQTT/WSSMQTT over secure WebSocket (TLS)
8883MQTTSMQTT over SSL/TLS
18083HTTPEMQX Dashboard (the admin interface)

Day to day you only need two of them: 1883 for devices and Home Assistant, and 18083 to open the Dashboard. The rest are WebSocket and TLS options. If another service is holding one of the ports — WebRTC uses 8083, for example — you have to stop the conflicting side first, then change the port on the Dashboard's Listeners page.

First login and changing the password

The default account for the EMQX Dashboard is admin/public. The official documentation is explicit about this: the first time you log in with the default credentials, EMQX detects that you are still on the default password and forces you to change it; the new password cannot be the same as the old one, and keeping public for real use is not recommended.

This is an important first step in protecting the admin surface: the Dashboard is the way in to controlling the whole broker, so anyone who guesses admin/public can rewrite all of your authentication and authorization. In Chapter 6 you will create real MQTT accounts for your devices and Home Assistant; in this chapter you only have to change the Dashboard login password.

If you forget the new password, EMQX gives you the CLI command emqx ctl admins passwd <username> <new-password> to reset it; Chapter 18 covers the details under diagnostics and the API.

Troubleshooting

  • You added the repository but Woow EMQX does not show up in the store: refresh the page, or leave the store and come back in; check that you pasted the whole URL, including the trailing Woow_ha_emqx.
  • It will not start, and the log says a port is in use: the most likely cause is that the Mosquitto add-on or WebRTC is running at the same time, and both hold 1883 or 8083. Stop the conflicting service first, then start EMQX.
  • The Dashboard will not open: get in through Ingress (the EMQX icon in the sidebar), or use http://<home-assistant-host>:18083 instead. Check that nothing else is holding 18083.
  • Once you have changed it, really stop using public: if you were not asked to change the password on first login, this is not a fresh install; if you are still on the default credentials, change them by hand in the Dashboard's user settings.

FAQ

Why must I change the password immediately after installing?

The default admin/public is a public value to anyone who has read the documentation. If your host is exposed to the outside, leaving it in place hands over control of the whole broker. Make changing it to a strong password of your own the very first thing you do.

Can Mosquitto and Woow EMQX run at the same time?

No. Both add-ons listen for MQTT on 1883, and once the port conflicts one of the two cannot start. Either pick one of them, or use Listeners to move one of them to a different port.

What is Ingress, and how does it differ from going straight to 18083?

Ingress is the reverse-proxy entry point Home Assistant provides: you open EMQX from the sidebar, with no port to remember and no worry about someone else connecting to it directly. Going straight to 18083 reaches the same Dashboard; the difference is security and convenience.

It uses more resources once installed — will it slow Home Assistant down?

EMQX costs a little more RAM/CPU than Mosquitto. The Woow README recommends at least 512MB RAM. If memory on your host is tight, Mosquitto may still be the lighter choice; if you want EMQX, check first that your hardware can carry it.

Official sources