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:latestWhat 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 restartsWhy 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:
- Sign in, open Certificate Manager, select the Web Server tab, and select Download node certificate.
- 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 controlbirdStart Again
docker start controlbirdView Logs
docker logs -f controlbirdRemove
docker rm -f controlbirdYour data is safe in the controlbird-data volume.