[toc] ## Environment ::: spoiler env **OS** ``` debian-12.9.0-amd64-netinst.iso ``` $ ``cat /etc/os-release`` ``` PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" ``` **Java** $ ``java -version`` ```sh openjdk version "17.0.13" 2024-10-15 OpenJDK Runtime Environment (build 17.0.13+11-Debian-2deb12u1) OpenJDK 64-Bit Server VM (build 17.0.13+11-Debian-2deb12u1, mixed mode, sharing) ``` **Maven** $ ``mvn -version`` ```sh Apache Maven 3.8.7 Maven home: /usr/share/maven Java version: 17.0.13, vendor: Debian, runtime: /usr/lib/jvm/java-17-openjdk-amd64 Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "6.1.0-29-amd64", arch: "amd64", family: "unix" ``` **node.js** $ ``node -v`` ```sh v18.19.0 ``` **npm** $ ``npm -v`` ```sh 9.2.0 ``` **Docker Engine** $ ``docker --version`` ```sh Docker version 27.5.0, build a187fa5 ``` :::spoiler environment setup ```sh== #!/bin/sh # openjdk 17 sudo apt install -y openjdk-17-jdk java -version # maven sudo apt install -y maven mvn -version # nodejs sudo apt install -y nodejs node -v # npm sudo apt install -y npm npm -v # docker - start # https://docs.docker.com/engine/install/debian/ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get -y remove $pkg; done # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version # docker - end ``` ::: ## Build TB 3.9.1 https://thingsboard.io/docs/user-guide/install/building-from-source/ ### build step ```sh # checkout latest release branch git clone -b v3.9.1 https://github.com/thingsboard/thingsboard.git --depth 1 cd thingsboard ``` ```sh # Build local docker images mvn clean install -DskipTests -Ddockerfile.skip=false ``` ::: spoiler build result ![image](https://hackmd.io/_uploads/HybwXTYtkl.png) ![image](https://hackmd.io/_uploads/HJTnvmNDyx.png) ::: ## Run TB 3.9.1 https://thingsboard.io/docs/user-guide/install/docker/ ### 1. docker-compose.yml ```yaml version: '3.0' services: mytb: restart: always image: "thingsboard/tb-postgres:3.9.1" ports: - "8080:9090" # HTTP - "1883:1883" # MQTT - "7070:7070" # edge-RPC - "5683-5688:5683-5688/udp" # for COAP and LwM2M environment: TB_QUEUE_TYPE: in-memory volumes: # mounts - ./mytb-data:/data - ./mytb-logs:/var/log/thingsboard ``` ### 2. create mount folders ```sh mkdir -p ./mytb-data && sudo chown -R 799:799 ./mytb-data mkdir -p ./mytb-logs && sudo chown -R 799:799 ./mytb-logs ``` ### 3. start the container ```sh sudo docker compose up -d ```