Step 2: Run ControlBird CE

Start the ControlBird CE container with a single command.

Start ControlBird

Run the following command to start ControlBird CE. This pulls the image (if not already cached) and starts the container:

docker run -d \ --name controlbird \ -p 3000:3000 \ -p 3443:3443 \ -v controlbird-data:/opt/controlbird/data \ controlbird/ce:latest

What This Does

-dRuns in the background (detached mode)
--name controlbirdNames the container for easy management
-p 3000:3000Web UI over HTTP
-p 3443:3443Web UI over HTTPS. Keep the host port at 3443, since links that move a browser to HTTPS name that port.
-v controlbird-data:...Persists your data across container restarts

Why the kernel port is not published

Earlier versions of this guide also published the kernel port with -p 9100:9100. You do not need it. Services inside the container reach the kernel over localhost, so a single node works without it.

Add it only if you are running several nodes that peer with each other. Even then, only do it on a network you trust. Anything that can reach that port can read and write the whole store, so it should never face the public internet.

HTTPS and the Node Certificate

On first start the node creates its own self-signed certificate and serves the web UI over HTTPS on port 3443 alongside plain HTTP on port 3000. Because no public certificate authority signed it, your browser warns the first time you open https://<host>:3443. To remove the warning, trust the node's own certificate:

  1. Sign in, open Certificate Manager, select the Web Server tab, and select Download node certificate.
  2. Install the downloaded file as a trusted certificate on each computer or phone that opens the node, using that operating system's certificate settings.

The certificate names localhost and the container's own host name and addresses, which differ from your computer's. A browser also checks that the address you type is named in it, so tell the node the names and IP addresses you will use to reach it with CB_PUBLIC_HOSTNAME, a comma-separated list, before its first start:

docker run -d \ --name controlbird \ -p 3000:3000 \ -p 3443:3443 \ -e CB_PUBLIC_HOSTNAME=controlbird.lan,192.168.1.10 \ -v controlbird-data:/opt/controlbird/data \ controlbird/ce:latest

The node reads CB_PUBLIC_HOSTNAME when it creates its certificate. On a node that already has one, create or import a certificate that names your addresses in Certificate Manager and choose it on the Web Server tab instead.

The certificate is valid for 825 days. About 30 days before it expires, the node replaces it with a new one and shows a low-priority alarm for a week. Download and install the new certificate when that happens. To serve a certificate from your own CA or a public one instead, or to switch to HTTPS only, see Web Server in the Certificate Manager guide.

Connecting the Command-Line Tools

The ControlBird command-line tools, such as cb-cli, run from their own images and connect to https://<host>:3443 with an API key you create after signing in and the node certificate you downloaded above. See Connecting to a Community Edition node for the full commands.

Additional Ports

If you plan to use protocol integrations, you can expose additional ports:

  • -p 1883:1883: MQTT broker
  • -p 4840:4840: OPC UA server
  • -p 502:502: Modbus TCP server

In-Memory Store

CE keeps entity and field data in memory for sub-millisecond reads. Every change is recorded in a write-ahead log and captured in snapshots under the mounted data directory, so your data survives a container restart. Memory use grows with your data, so leave headroom when running on a small host like a Raspberry Pi.

Verify It's Running

Check that the container is up:

docker ps

You should see controlbird listed with status Up. The web UI takes a few seconds to initialize on first start.

Managing the Container

Stop

docker stop controlbird

Start Again

docker start controlbird

View Logs

docker logs -f controlbird

Remove

docker rm -f controlbird

Your data is safe in the controlbird-data volume.