- Prerequisites
- Step 1. Install Java 17 (OpenJDK)
- Step 2. ThingsBoard service installation
- Step 3. Configure ThingsBoard database
- Step 4. Choose ThingsBoard queue service
- Step 5. Memory update for slow machines (4GB of RAM)
- Step 6. Run installation script
- Step 7. Start ThingsBoard service
- Troubleshooting
- Next steps
Prerequisites
This guide describes how to install ThingsBoard on a Raspberry Pi. Hardware requirements depend on chosen database and amount of devices connected to the system. To run ThingsBoard and PostgreSQL you will need at least 4Gb of RAM. To run ThingsBoard and Cassandra you will need at least 8Gb of RAM.
Step 1. Install Java 17 (OpenJDK)
ThingsBoard service is running on Java 17. To install OpenJDK 17, follow these instructions
1
sudo apt update && sudo apt install openjdk-17-jdk
Configure your operating system to use OpenJDK 17 by default. You can configure the default version by running the following command:
1
sudo update-alternatives --config java
To check the installed Java version on your system, use the following command:
1
java -version
The expected result is:
1
2
3
openjdk version "17.x.xx"
OpenJDK Runtime Environment (...)
OpenJDK 64-Bit Server VM (...)
Step 2. ThingsBoard service installation
Download installation package.
1
wget https://github.com/thingsboard/thingsboard/releases/download/v3.9.1/thingsboard-3.9.1.deb
Install ThingsBoard as a service
1
sudo dpkg -i thingsboard-3.9.1.deb
Step 3. Configure ThingsBoard database
PostgreSQL Installation
Instructions listed below will help you to install PostgreSQL.
1
2
3
4
5
6
7
8
9
10
11
12
13
# install **wget** if not already installed:
sudo apt install -y wget
# import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# add repository contents to your system:
echo "deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
# install and launch the postgresql service:
sudo apt update
sudo apt -y install postgresql
sudo service postgresql start
Once PostgreSQL is installed, it is recommended to set the password for the PostgreSQL main user.
The following command will switch the current user to the PostgreSQL user and set the password directly in PostgreSQL.
1
sudo -u postgres psql -c "\password"
Then, enter and confirm the password.
Then, connect to the “postgres” database as the “postgres” user:
1
psql -U postgres -d postgres -h 127.0.0.1 -W
Create the ThingsBoard database named “thingsboard” :
1
CREATE DATABASE thingsboard;
Press “Ctrl+D” twice to exit PostgreSQL.
ThingsBoard Configuration
Edit ThingsBoard configuration file
1
sudo nano /etc/thingsboard/conf/thingsboard.conf
Add the following lines to the configuration file. Don’t forget to replace “PUT_YOUR_POSTGRESQL_PASSWORD_HERE” with your real postgres user password:
1
2
3
4
5
6
7
# DB Configuration
export DATABASE_TS_TYPE=sql
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HERE
# Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE.
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS
Step 4. Choose ThingsBoard queue service
ThingsBoard uses queue services for API calls between micro-services and able to use next queue services: In Memory (default), AWS SQS, Google Pub/Sub or Azure Service Bus.
In Memory queue is built in and enabled by default. No additional configuration is required. |
AWS SQS ConfigurationTo access AWS SQS service, you first need to create an AWS account. To work with AWS SQS service you will need to create your next credentials using this instruction:
ThingsBoard ConfigurationEdit ThingsBoard configuration file
Add the following lines to the configuration file. Don’t forget to replace “YOUR_KEY”, “YOUR_SECRET” with your real AWS SQS IAM user credentials and “YOUR_REGION” with your real AWS SQS account region:
You can update default Rule Engine queues configuration (poll interval and partitions) using UI. More about ThingsBoard Rule Engine queues see in documentation. |
Google Pub/Sub ConfigurationTo access Pub/Sub service, you first need to create an Google cloud account. To work with Pub/Sub service you will need to create a project using this instruction. Create service account credentials with the role “Editor” or “Admin” using this instruction, and save json file with your service account credentials step 9 here. ThingsBoard ConfigurationEdit ThingsBoard configuration file
Add the following lines to the configuration file. Don’t forget to replace “YOUR_PROJECT_ID”, “YOUR_SERVICE_ACCOUNT” with your real Pub/Sub project id, and service account (it is whole data from json file):
You can update default Rule Engine queues configuration (poll interval and partitions) using UI. More about ThingsBoard Rule Engine queues see in documentation. |
Azure Service Bus ConfigurationTo access Azure Service Bus, you first need to create an Azure account. To work with Service Bus service you will need to create a Service Bus Namespace using this instruction. Create Shared Access Signature using this instruction. ThingsBoard ConfigurationEdit ThingsBoard configuration file
Add the following lines to the configuration file. Don’t forget to replace “YOUR_NAMESPACE_NAME” with your real Service Bus namespace name, and “YOUR_SAS_KEY_NAME”, “YOUR_SAS_KEY” with your real Service Bus credentials. Note: “YOUR_SAS_KEY_NAME” it is “SAS Policy”, “YOUR_SAS_KEY” it is “SAS Policy Primary Key”:
You can update default Rule Engine queues configuration (poll interval and partitions) using UI. More about ThingsBoard Rule Engine queues see in documentation. |
Confluent Cloud ConfigurationTo access Confluent Cloud you should first create an account, then create a Kafka cluster and get your API Key. ThingsBoard ConfigurationEdit ThingsBoard configuration file
Add the following lines to the configuration file. Don’t forget to replace “CLUSTER_API_KEY”, “CLUSTER_API_SECRET” and “localhost:9092” with your real Confluent Cloud bootstrap servers:**
You can update default Rule Engine queues configuration using UI. More about ThingsBoard Rule Engine queues see in documentation. |
Step 5. Memory update for slow machines (4GB of RAM)
Edit ThingsBoard configuration file
1
sudo nano /etc/thingsboard/conf/thingsboard.conf
Add the following lines to the configuration file.
1
2
# Update ThingsBoard memory usage and restrict it to 2G in /etc/thingsboard/conf/thingsboard.conf
export JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx2G"
We recommend adjusting these parameters depending on your server resources. It should be set to at least 2G (gigabytes), and increased accordingly if there is additional RAM space available. Usually, you need to set it to 1/2 of your total RAM if you do not run any other memory-intensive processes (e.g. Cassandra), or to 1/3 otherwise.
Step 6. Run installation script
Once ThingsBoard service is installed and DB configuration is updated, you can execute the following script:
1
2
# --loadDemo option will load demo data: users, devices, assets, rules, widgets.
sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo
Step 7. Start ThingsBoard service
Execute the following command to start ThingsBoard:
1
sudo service thingsboard start
Once started, you will be able to open Web UI using the following link:
1
http://localhost:8080/
The following default credentials are available if you have specified –loadDemo during execution of the installation script:
- System Administrator: [email protected] / sysadmin
- Tenant Administrator: [email protected] / tenant
- Customer User: [email protected] / customer
You can always change passwords for each account in account profile page.
Troubleshooting
ThingsBoard logs are stored in the following directory:
1
/var/log/thingsboard
You can issue the following command in order to check if there are any errors on the backend side:
1
cat /var/log/thingsboard/thingsboard.log | grep ERROR
Next steps
-
Getting started guides - These guides provide quick overview of main ThingsBoard features. Designed to be completed in 15-30 minutes.
-
Connect your device - Learn how to connect devices based on your connectivity technology or solution.
-
Data visualization - These guides contain instructions on how to configure complex ThingsBoard dashboards.
-
Data processing & actions - Learn how to use ThingsBoard Rule Engine.
-
IoT Data analytics - Learn how to use rule engine to perform basic analytics tasks.
-
Hardware samples - Learn how to connect various hardware platforms to ThingsBoard.
-
Advanced features - Learn about advanced ThingsBoard features.
-
Contribution and Development - Learn about contribution and development in ThingsBoard.