Install ThingsBoard CE 4.0.1 on Bare Metal Ubuntu 24.04

Introduction

This guide walks you through installing ThingsBoard CE 4.0.1 on Ubuntu 24.04 with the following setup:

  • Entity database: PostgreSQL
  • Telemetry database: Apache Cassandra
  • Message queue: Kafka (running in Docker)

This hybrid architecture is production-ready and scalable for large IoT deployments.


  1. Install Java 17 (OpenJDK)
sudo apt install -y openjdk-17-jdk
java -version

Make sure Java 17 is the default version.


  1. ThingsBoard service installation
wget https://github.com/thingsboard/thingsboard/releases/download/v4.0.1/thingsboard-4.0.1.deb
udo dpkg -i thingsboard-4.0.1.deb

  1. Install PostgreSQL
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt update
sudo apt -y install postgresql-16
sudo su - postgres
psql
CREATE DATABASE thingsboard;

  1. Install Apache Cassandra
echo "deb [signed-by=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 50x main" | sudo tee /etc/apt/sources.list.d/cassandra.sources.list
sudo curl -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS
sudo apt-get update
sudo apt-get install -y cassandra cassandra-tools

Check Cassandra service status

nodetool status
sudo systemctl status cassandra.service 

  1. Start Kafka in Docker

Create the docker-compose.yml:

vi ~/thingsboard-kafka.yml

Paste the following:

version: '3.2'
services:
  kafka:
    restart: always
    image: bitnami/kafka:3.8.1
    ports:
      - 9092:9092 #to localhost:9092 from host machine
      - 9093 #for Kraft
      - 9094 #to kafka:9094 from within Docker network
    environment:
      ALLOW_PLAINTEXT_LISTENER: "yes"
      KAFKA_CFG_LISTENERS: "OUTSIDE://:9092,CONTROLLER://:9093,INSIDE://:9094"
      KAFKA_CFG_ADVERTISED_LISTENERS: "OUTSIDE://localhost:9092,INSIDE://kafka:9094"
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT,CONTROLLER:PLAINTEXT"
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: "INSIDE"
      KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1"
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: "1"
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: "1"
      KAFKA_CFG_PROCESS_ROLES: "controller,broker" #KRaft
      KAFKA_CFG_NODE_ID: "0" #KRaft
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: "CONTROLLER" #KRaft
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: "0@kafka:9093" #KRaft
    volumes:
      - kafka-data:/bitnami
volumes:
  kafka-data:
    driver: local

Start Kafka:

docker compose -f ~/thingsboard-kafka.yml up -d

  1. Configure ThingsBoard

Edit the config file:

sudo vi /etc/thingsboard/conf/thingsboard.conf

Set the following environment variables:

# DB Configuration
export DATABASE_TS_TYPE=cassandra
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=postgres

export CASSANDRA_CLUSTER_NAME=Thingsboard Cluster
export CASSANDRA_KEYSPACE_NAME=thingsboard
export CASSANDRA_URL=127.0.0.1:9042
export CASSANDRA_USE_CREDENTIALS=false
export CASSANDRA_USERNAME=
export CASSANDRA_PASSWORD=

export TB_QUEUE_TYPE=kafka
export TB_KAFKA_SERVERS=localhost:9092

Save and exit.


  1. Start ThingsBoard service

Initialize ThingsBoard Database

sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

Start and ThingsBoard

sudo service thingsboard start

  1. Access the Web UI

Open a browser and go to:

http://thingsboard.maksonlee.com:8080

Login credentials:

  • System Administrator: sysadmin@thingsboard.org / sysadmin
  • Tenant Administrator: tenant@thingsboard.org / tenant

Conclusion

You’ve successfully installed ThingsBoard CE 4.0.1 on Ubuntu 24.04 using:

  • PostgreSQL for entities
  • Cassandra for telemetry
  • Kafka (in Docker) for the queue

This setup is scalable, production-ready, and suitable for large-scale IoT applications.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top