Upgrade ThingsBoard CE 4.3.1.6 to 4.4 on Ubuntu with a Community Grant

On this page11 sections

Upgrading from ThingsBoard CE 4.3 to ThingsBoard 4.4 changes the licensing model as well as the software. This guide covers the Community Grant application and the upgrade of a standalone Ubuntu DEB installation.

Before upgrading: device limits and the option to stay on 4.3

ThingsBoard 4.4 combines CE and PE under Business Source License 1.1. Production deployments require a license key. For existing CE installations, the Community Grant provides a fixed capacity at no charge.

Evaluate future device growth before upgrading. Once the grant is full, new devices beyond the licensed capacity cannot be added until you increase the licensed capacity. Existing devices and services keep running, but further expansion requires purchasing additional capacity through the License Portal.

You can choose to keep using ThingsBoard CE 4.3. It remains under Apache 2.0, without the 4.4 license-key and device-capacity restrictions. Official security updates for CE 4.3 end on July 20, 2027, although the software can continue running afterward. See the licensing announcement for details.

Environment

  • Operating system: Ubuntu Server 26.04, amd64.
  • Upgrade: ThingsBoard CE 4.3.1.6-1 to 4.4.0-1.
  • Java: OpenJDK 21 to OpenJDK 25.
  • Database and queue: PostgreSQL 18.6 on the host; Kafka 4.0 in Docker.
  • Service: thingsboard.service, direct HTTPS on 443, MQTT on 1883, and MQTT over TLS on 8883.

Run the commands on the ThingsBoard server with sudo access. The examples use a local PostgreSQL database named thingsboard; adjust connection settings and paths for your installation.

1. Update CE to the latest 4.3 patch

The official upgrade guide requires the latest 4.3 LTS patch before migration. This installation was updated to 4.3.1.6, which provides the Get your Community Grant button on the Home page.

ThingsBoard CE 4.3.1.6 version card with the 4.4 notice and Get your Community Grant button.
CE 4.3.1.6 provides the Community Grant registration entry. Click to enlarge.

Obtain the issued grant key before installing 4.4. CE can continue running while the application is processed.

2. Register the existing deployment

Select Get your Community Grant → Register this deployment to open the License Portal.

ThingsBoard Community Grant registration explanation for the existing deployment.
Registration starts from the running CE deployment. Click to enlarge.

Sign in with your ThingsBoard License Portal account, or create one if needed.

ThingsBoard License Portal Sign in step, with the email concealed and password hidden.
Sign in with the existing License Portal account. Click to enlarge.

Review the terms and deployment eligibility declaration, then select Accept and continue if your deployment qualifies.

Community Grant terms page with the acceptance checkbox not yet selected.
Review the terms and deployment declaration before continuing. Click to enlarge.

Some applications require manual review after the automatic checks. If requested, provide the deployment history and provisioning context, then wait for approval.

License Portal showing automatic verification completed and deployment scale awaiting manual review.
The application passed the automatic checks and awaited manual review. Click to enlarge.

3. Check the issued grant

When the portal shows Your Community Grant is ready, check its device, production-instance, and Edge limits and save the key privately.

License Portal showing an issued Community Grant for 2,158 devices, one production server and one Edge, with the account and entire key concealed.
The issued grant covers 2,158 devices, one production server, and one Edge. Click to enlarge.

This grant covers 2,158 devices from a baseline of 1,958. The 10% headroom is rounded up to the next 10: 1,958 + 200 = 2,158. That leaves 200 additional slots; the headroom does not grow as devices are added.

4. Back up the existing installation

Check the installed version and service state:

dpkg-query -W -f='${Version}\n' thingsboard
java -version
sudo systemctl status thingsboard --no-pager

Stop ThingsBoard for the maintenance window. Leave PostgreSQL and Kafka running:

sudo systemctl stop thingsboard
sudo systemctl is-active thingsboard

Confirm the service is inactive, then back up the database and PostgreSQL roles:

set -o pipefail
backup_dir="/var/backups/thingsboard-before44-$(date -u +%Y%m%dT%H%M%SZ)"
sudo install -d -m 0700 "$backup_dir"

sudo -u postgres pg_dump -Fc -d thingsboard |
  sudo tee "$backup_dir/thingsboard.pgdump" >/dev/null
sudo -u postgres pg_dumpall --globals-only |
  sudo tee "$backup_dir/postgres-globals.sql" >/dev/null
sudo chmod 0600 "$backup_dir/thingsboard.pgdump" \
  "$backup_dir/postgres-globals.sql"

sudo pg_restore --list "$backup_dir/thingsboard.pgdump" >/dev/null
sudo pg_restore --file=/dev/null "$backup_dir/thingsboard.pgdump"

Also save /etc/thingsboard, systemd overrides, TLS certificates and private keys, renewal scripts, custom extensions, and the original CE package. Copy the backup off the server.

Before proceeding, test the dump by restoring it into a separate temporary database and checking the restored data. The pg_restore commands above check the archive; they do not perform that restore test.

5. Install Java 25 and the font dependencies

ThingsBoard 4.4 requires Java 25 and font libraries:

sudo apt update
sudo apt install openjdk-25-jdk-headless libharfbuzz0b fontconfig fonts-dejavu-core
sudo update-alternatives --set java \
  "/usr/lib/jvm/java-25-openjdk-$(dpkg --print-architecture)/bin/java"
java -version

Confirm Java 25 is selected. Update any explicit Java path in your service configuration as well.

6. Install the 4.4 package and merge the configuration

Download the official 4.4 DEB and inspect its package metadata:

mkdir -p ~/thingsboard-44
cd ~/thingsboard-44
curl -fL --retry 3 -o thingsboard-4.4.deb \
  https://github.com/thingsboard/thingsboard/releases/download/v4.4/thingsboard-4.4.deb
dpkg-deb -f thingsboard-4.4.deb Package Version Architecture
sha256sum thingsboard-4.4.deb

For this amd64 installation, the package version is 4.4.0-1. Install it:

sudo dpkg -i thingsboard-4.4.deb

If prompted about thingsboard.conf, install the new maintainer version, then merge your settings from the saved old file. Preserve the database connection, Kafka settings, HTTPS and MQTT TLS configuration, certificate paths, and service overrides.

Finish the merge before migrating the database, then check the file’s syntax:

sudo bash -n /etc/thingsboard/conf/thingsboard.conf

7. Migrate the CE database

With ThingsBoard stopped and the configuration merged, run:

sudo /usr/share/thingsboard/bin/install/upgrade.sh --fromVersion=CE

Wait for ThingsBoard upgraded successfully! before starting the service.

On this server, the installer initially failed to bind HTTPS port 443 because it did not inherit the normal service’s binding capability. After confirming that migration had not started, I ran it with a temporary loopback port:

sudo env JAVA_TOOL_OPTIONS="-Dserver.port=0 -Dserver.address=127.0.0.1" \
  /usr/share/thingsboard/bin/install/upgrade.sh --fromVersion=CE

Use this only for that pre-migration port-binding failure. It changes the installer’s HTTP listener for that run; the service keeps its configured HTTPS port. Do not repeat a completed CE migration.

8. Start ThingsBoard and activate the grant

Start the upgraded service and follow the startup log:

sudo systemctl start thingsboard
sudo systemctl status thingsboard --no-pager
sudo tail -f /var/log/thingsboard/thingsboard.log

Open the web interface, enter the issued Community Grant key, and sign in with your existing account. Successful activation produces License client initialized; instance ACTIVATED. in the log.

After activation, restrict access to the license cache and set a private file-creation mask for the service:

sudo install -d -m 0755 /etc/systemd/system/thingsboard.service.d
sudo tee /etc/systemd/system/thingsboard.service.d/20-license-private-files.conf >/dev/null <<'EOF'
[Service]
UMask=0077
EOF
sudo chmod 0700 /var/lib/thingsboard/license
sudo chmod 0600 /var/lib/thingsboard/license/instance-license.data
sudo systemctl daemon-reload
sudo systemctl restart thingsboard
sudo stat -c '%a %U:%G %n' /var/lib/thingsboard/license/instance-license.data

The cache path above is from the DEB installation used here; confirm it exists before applying these permissions.

9. Check the upgrade and licensed features

On the Home page, confirm version 4.4.0 and the active Community Grant. Check that existing devices, dashboards, and rule chains are present.

Actual ThingsBoard 4.4.0 Home page showing 1,958 devices and a Community Grant device limit of 2,158.
The upgraded 4.4.0 instance retains 1,958 devices and shows the active grant. Click to enlarge.

Publish telemetry from a test device and check its dashboard. Review the application log for transport, database, or license errors.

Open License Management to confirm the grant type, usage, and limits:

ThingsBoard License Management in light mode showing Community Grant limits and the optional Professional Pack with White-labeling, Integrations, Scheduler, and Reports.
License Management shows the grant limits and Professional Pack as a separate add-on. Click to enlarge.

Professional Pack adds White-labeling, Integrations, Scheduler, and Reports. The Add to license button shows it is available as a separate purchase and is not included in this Community Grant. Buying the pack does not increase the device limit.

Leave a Comment

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

Scroll to Top