Most people should use Docker or Docker Compose for the broker and the Coreflux HUB. Just evaluating with nothing to install? Use the Cloud Trial tab. The HUB desktop tab is the standalone app. Native broker binaries and cloud droplets are in the remaining tabs.
Coreflux runs as a single install. No separate databases or message queues—pick a method below and run it.
Default login credentials
Every local install method uses the same defaults:
Setting
Value
Username
root
Password
coreflux
For a Cloud Trial, use the credentials from your email instead.
Docker
Docker Compose
HUB desktop
Cloud Trial
DigitalOcean
Windows
Linux
~2 min if Docker is already installed — broker, HUB, or both.
The broker and Coreflux HUB are separate images. Pick the command that matches what you want to run. The HUB desktop app is in the HUB desktop tab.
Open http://localhost:3000. Click New Connection (or Enter on a saved one). If the broker is on the same machine, set Protocolmqtt://, Hosthost.docker.internal (Docker Desktop) or the host’s LAN IP, and Port1883 — not localhost, because the HUB proxies MQTT from inside its container.
Create a shared network and start both containers in one command:
Open the HUB at http://localhost:3000, click New Connection, and connect with Protocolmqtt://, Hostbroker, Port1883 (or Protocolws://, Hostbroker, Port5000, Pathmqtt). Skip docker network create coreflux && if the coreflux network already exists.
Protocol mqtt://, Host broker, Port 1883 (or ws://, Host broker, Port 5000, Path mqtt)
HUB only
Protocol mqtt://, Host host.docker.internal if the broker is on the same machine, or the broker’s host address
The HUB proxies MQTT from inside Docker, so Hostlocalhost does not reach a broker container.That’s it—Coreflux is now running locally. Confirm it works under Verify Installation below.
What does the broker command do?
Breaking the broker docker run down piece by piece:
--pull=always — always fetch the latest image before starting, so you never run a stale version.
-d — runs the container detached (in the background), so your terminal stays free.
--name coreflux_broker — names the container so you can reference it later (for example docker logs coreflux_broker).
-p 1883:1883 -p 5000:5000 -p 9100:9100 — each -p host:container maps a port on your machine to the same port inside the container. See the port table above for what each one is for.
-v project-volume:/etc/project — mounts a named volume so your project (LoT, routes, configuration) persists across restarts and image updates.
coreflux/coreflux-mqtt-broker:latest — the broker image, pulled from Docker Hub. The HUB image is coreflux/coreflux-hub:latest.
TLS/SSL Ports (when using certificates)
If you configure TLS certificates, expose these additional broker ports (8883 and 5443):
~3 min if Docker is already installed — broker and HUB on one network.
Docker Compose starts the broker and the Coreflux HUB as two services on a shared network. Use the full profile to run both, or start either service alone. The HUB desktop app is in the HUB desktop tab.Create a directory, then add docker-compose.yml:
# Coreflux — Broker + Hub deployment # # Profiles: # full -> broker + hub, on the same network # broker -> broker only # hub -> hub only # # Usage: # docker compose --profile full up # broker + hub # docker compose --profile broker up # broker only # docker compose --profile hub up # hub only services: broker: image: coreflux/coreflux-mqtt-broker:latest profiles: [full, broker] container_name: coreflux-broker restart: unless-stopped ports: - "1883:1883" # MQTT (plain TCP) - "8883:8883" # MQTT over TLS - "5000:5000" # WebSocket transport / HTTP API - "5443:5443" # WebSocket / HTTP API over TLS - "9100:9100" # Operational endpoints: /health /ready /info /metrics volumes: # Persists everything under /etc/project/Coreflux (encrypted config, # routes, actions, models, rules, logs, stats, projects). - broker-data:/etc/project # The published image has no shell, so a shell-based # healthcheck cannot run inside the container. Check health externally # via HTTP GET http://localhost:9100/health. healthcheck: disable: true hub: image: coreflux/coreflux-hub:latest profiles: [full, hub] container_name: coreflux-hub restart: unless-stopped ports: - "3000:3000" # Web UI + API + MQTT WebSocket proxy (plain HTTP) volumes: # Persists writable Hub state (e.g. theme-media uploads). - hub-data:/opt/coreflux-hub/data # environment: # - GROQ_API_KEY=... # optional, only for the Hub AI assistant feature # # NOTE: the Hub has no broker-connection env var. You choose the broker # from the Hub UI. Because the Hub proxies the MQTT connection # server-side, enter the broker's service name (not "localhost"): # mqtt://broker:1883 (plain MQTT) # ws://broker:5000/mqtt (MQTT over WebSocket) volumes: broker-data: hub-data: # Both services attach to this network and resolve each other by service # name ("broker", "hub"). networks: default: name: coreflux
Then start the stack:
Broker + HUB
Broker only
HUB only
From the directory that contains docker-compose.yml:
docker compose --profile full up -d
Open the HUB at http://localhost:3000. Click New Connection and set Protocolmqtt://, Hostbroker, Port1883 — the HUB proxies MQTT from inside Docker, so Hostlocalhost does not reach the broker container.
Start just the broker:
docker compose --profile broker up -d
MQTT is on localhost:1883. There is no HUB in this profile.
Start just the HUB (the broker must already be reachable on the coreflux network, or you will connect to a remote broker from the UI):
docker compose --profile hub up -d
Open the HUB at http://localhost:3000, click New Connection, and enter the broker Host, Protocol, and Port on the login screen.
The HUB talks to the broker from inside Docker. On New Connection, set Host to the Compose service name (broker) — Protocol mqtt:// and Port 1883, or Protocol ws://, Port 5000, and Path mqtt. Do not use Hostlocalhost.
That’s it—Coreflux is running locally. Confirm it works under Verify Installation below.
Check broker health
The broker image has no shell, so Compose cannot run a healthcheck inside the container. Probe it from the host:
curl http://localhost:9100/health
Named volumes
broker-data persists broker configuration, routes, actions, models, rules, logs, and projects under /etc/project. hub-data persists HUB state such as theme-media uploads. Stopping or recreating containers does not delete these volumes.
Stop or remove the stack
docker compose down
Add -v only if you also want to delete the named volumes (this wipes broker and HUB data).
~2 min — no Docker required for the HUB.
The standalone HUB is a desktop application for Windows x64, Linux x64, and Linux ARM64. It does not require a broker on the same machine.
Run the executable — the HUB window opens immediately.
3
Connect
Click New Connection. If the broker is on this machine, set Protocolmqtt://, Hostlocalhost, Port1883, then enter the default credentials and click Connect.
~5 min, nothing to install — hosted broker and HUB in your browser.
Get a hosted Coreflux instance without installing anything. Request a trial on the Coreflux website, and you will receive an email with a URL (used for both the Coreflux HUB and the MQTT broker) and login credentials.
1
Request a trial
Go to coreflux.org and submit a trial request using the form on the site.
2
Check your email
When your environment is ready, Coreflux sends an email with:
Item
What you use it for
URL
Open the HUB in your browser and connect MQTT clients to the same host (broker and HUB share one address)
Credentials
Username and password for the HUB login screen and for MQTT clients
The broker may take up to 60 seconds to be fully available after you receive the email. If the HUB or MQTT connection fails immediately, wait briefly and try again.
3
Open the HUB
Paste the URL from the email into your browser. Click New Connection (or Enter on a saved connection), enter your username and password, and click Connect. Use the broker host from the email if it is pre-filled differently than your trial URL.
Coreflux HUB — New Connection with broker host, protocol, port, and credentials
From the HUB you can deploy LoT Actions, browse MQTT topics in the Data Viewer, and manage Routes—same experience as a local Docker install.
4
Connect MQTT clients
Use the same host as the URL in your email (not localhost). For MQTT Explorer and other desktop clients:
Setting
Value
Protocol
MQTTS (MQTT over TLS)
Port
8883
Username / Password
From your trial email
In MQTT Explorer specifically: enable Encryption, and disable Validate certificate (the trial broker uses a certificate that desktop tools may not trust by default).
That’s it—your trial is live and ready to use, with the broker and HUB already running on the URL from your email.
HUB remote access: If your browser blocks the HUB page, allow unsecure access (or proceed past the certificate warning) for the trial URL. Managed trial environments often use certificates that browsers flag on first visit.
After the HUB loads, continue with Getting Started using the Coreflux HUB tabs—your trial already includes the HUB and broker.
~10 min (plus a DigitalOcean account) — production-ready broker running in the cloud.
Deploy Coreflux in seconds with our 1-Click Droplet on DigitalOcean Marketplace. This is the fastest way to get a production-ready broker running in the cloud.
That’s it—the service is now registered, set to start automatically on boot, and running, so Coreflux is ready to use. For the HUB, use the HUB desktop tab or run the HUB container from the Docker tab.
Manage the service
Use these native Windows commands to control the service:
You can also manage it from Services (services.msc) in Windows.
Uninstall the service
Stop and remove the service with:
sc stop CorefluxBrokersc delete CorefluxBroker
~10 min — broker installed from native packages and running as a systemd service.
Install the MQTT broker with your distribution’s package manager. Packages are published at packages.coreflux.org for Debian-based systems (APT) and RHEL-compatible systems (DNF).
Debian & Ubuntu (APT)
RPM (dnf)
APT is the package manager on Debian, Ubuntu, and Debian-based distributions—including Raspberry Pi OS. The package manager picks the right architecture (x64 or ARM64) for your machine.
OS
Codename
Ubuntu 22.04
jammy
Ubuntu 24.04
noble
Debian 12
bookworm
Debian 13
trixie
On Raspberry Pi OS, use the codename that matches your release (for example bookworm on Pi OS based on Debian 12, noble on releases based on Ubuntu 24.04).
1
Check your distribution codename
Run lsb_release -a and note the Codename line—you will use it in the next step.
lsb_release -a
Example output on Ubuntu 24.04:
Codename: noble
2
Install the signing key
Download Coreflux’s archive signing key into /usr/share/keyrings:
Refresh package lists and install the broker package:
sudo apt updatesudo apt install coreflux-broker
Optional — list available versions before installing:
apt-cache policy coreflux-broker
5
Confirm the service is running
The package registers and starts coreflux-broker as a systemd service:
systemctl status coreflux-broker.service
active (running) means Coreflux is up. MQTT listens on port 1883 by default.
That’s it—the broker is installed under /opt/coreflux-broker and managed by systemd. Confirm it works under Verify Installation below. For the HUB, use the HUB desktop tab or run the HUB container from the Docker tab.
Verify the signing key (optional)
The key UID should show Coreflux Portugal S.A. Package Signing with email packages@coreflux.org:
Use dnf on RHEL-compatible distributions—RHEL, Rocky Linux, AlmaLinux, and CentOS Stream. The repository uses $releasever and $basearch, so one repo file covers your EL version and CPU architecture (x86_64 or aarch64).
Optional — list available versions before installing:
dnf list --showduplicates coreflux-broker
4
Confirm the service is running
The package registers and starts coreflux-broker as a systemd service:
systemctl status coreflux-broker.service
active (running) means Coreflux is up. MQTT listens on port 1883 by default.
That’s it—the broker is installed under /opt/coreflux-broker and managed by systemd. Confirm it works under Verify Installation below. For the HUB, use the HUB desktop tab or run the HUB container from the Docker tab.
The quickest visual check is the Coreflux HUB in your browser. You can also confirm directly by connecting an MQTT client and seeing Coreflux’s system topics—that’s how the broker is actually used. Use the default credentials from the top of the page (or your trial email).
Coreflux HUB
MQTT Client
1
Open the HUB
Open your environment URL in the browser—for a Cloud Trial, use the address from your email; for Docker or Docker Compose, use http://localhost:3000. For the HUB desktop app, the window opens on its own.
Coreflux HUB — choose a stored connection or click New Connection
2
Choose or create a connection
The login screen lists stored connections. Click Enter on a saved one, or click New Connection to add a broker.Fill in the broker fields, then enter the default credentials (or your trial email) and click Connect. Optionally click Save connection so the HUB remembers this broker next time.
Install
Protocol
Host
Port
Path
Docker / Compose (broker + HUB)
mqtt://
broker
1883
—
Docker / Compose (WebSocket)
ws://
broker
5000
mqtt
HUB desktop, broker on this machine
mqtt://
localhost
1883
—
HUB-only container, broker on the host
mqtt://
host.docker.internal
1883
—
New Connection — name the broker, set protocol, host, and port, then Connect
3
Confirm the dashboard loaded
After a successful login, you should see the HUB home screen with the bottom navigation bar.
Coreflux HUB after login — start from the first icon in the navigation bar
The status bar shows route count and license info—the broker is reachable from the HUB.
4
Browse MQTT data
Select MQTT → Data Viewer. Expand $SYS/Coreflux in the Topic Tree—you should see broker topics such as Config, Version, and Resources updating live.
Data Viewer — Topic Tree, Publish panel, and live topic values
1
Open MQTT Explorer
Download MQTT Explorer or use any MQTT client of your choice.
2
Connect to the Broker
Create a new connection with these settings:
Setting
Value
Host
localhost (or your trial URL host for Cloud Trial)
Port
1883 (local Docker or Compose) or 8883 with MQTTS (Cloud Trial)
Username / Password
The default credentials above
For Cloud Trial, use MQTTS on port 8883, enable Encryption, and disable Validate certificate in MQTT Explorer.
3
Check System Topics
Subscribe to $SYS/# to see broker status messages. If you see topics such as $SYS/Coreflux/Version, the broker is running correctly.
You should see Coreflux system topics under $SYS/Coreflux/.
All Versions — Broker isn't running or won't accept connections
If you can’t connect, confirm the broker is actually up using the tooling for your install method.For a Docker install, inspect the container:
# Is the container running?docker ps# View broker logs (live)docker logs -f coreflux_broker# View HUB logs (if you started the HUB container)docker logs -f coreflux_hub# Restart the containerdocker restart coreflux_broker
For Docker Compose, use docker compose ps and docker compose logs -f from the directory that contains docker-compose.yml. The broker container is named coreflux-broker.For a service install, check the service status: sudo systemctl status coreflux-broker (Linux package install), sudo systemctl status coreflux (DigitalOcean droplet), or sc query CorefluxBroker (Windows).
All Versions — localhost doesn't load the HUB
Symptom: the HUB loads in some environments but not in a Docker-in-VM or remote setup.Fix: use the host’s actual address instead of localhost.
Docker Only — Docker daemon not running
Symptom: the command errors with “cannot connect to the Docker daemon”.Fix: start Docker Desktop (or the Docker service) and run the command again.
Docker Only — Port already in use
Symptom: an error binding a port, e.g. 3000 or 1883 is already allocated.Fix: stop the process using that port, or remap the host side of the port (for example -p 1884:1883 on Docker, or change the left-hand port in docker-compose.yml).
Docker Only — Container exits immediately
Symptom:docker ps shows nothing after you start the broker.Fix: run docker logs coreflux_broker to see why it exited. For Compose, run docker compose logs broker from the directory that contains docker-compose.yml.
Docker Compose — HUB cannot reach the broker
Symptom: the HUB at http://localhost:3000 fails to connect when Host is localhost, or shows Broker isn’t reachable.Fix: the HUB proxies MQTT from inside Docker. On New Connection, set Host to broker, Protocolmqtt://, Port1883 (or Protocolws://, Port5000, Pathmqtt).
Cloud Only — Can't connect to your trial
Symptom: the HUB or an MQTT client fails to connect right after you receive your trial email.Fix: wait up to 60 seconds for the broker to become available, then retry. In the browser, allow unsecure access (or proceed past the certificate warning) for the trial URL. In MQTT Explorer, use MQTTS on port 8883, enable Encryption, and disable Validate certificate.