# Install / Upgrade 5giotlead/tb-ce [toc] >[!Note] **試著從 3.8.0 開始部署, 逐步升級至 3.9.0 (切勿直接跳升到最終目標版本)** ## Environment **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/" ``` **Docker Engine** $ ``docker --version`` ```shell Docker version 27.5.1, build 9f9e405 ``` ## Install ghcr.io/5giotlead/tb-ce:3.8.0 參考: - https://thingsboard.io/docs/user-guide/install/docker/ - https://hub.docker.com/_/postgres ### 1. docker-compose.yml ```yml== services: mytb: image: "ghcr.io/5giotlead/tb-ce:3.8.0" # specified version container_name: mytb depends_on: - postgres environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard TB_QUEUE_TYPE: in-memory ports: - "8080:9090" - "1883:1883" - "7070:7070" - "5683-5688:5683-5688/udp" restart: always volumes: - ./mytb-data:/data - ./mytb-logs:/var/log/thingsboard postgres: image: postgres:16 container_name: postgres environment: POSTGRES_USER: thingsboard POSTGRES_PASSWORD: postgres POSTGRES_DB: thingsboard PGPORT: 5432 ports: - "5432:5432" restart: always volumes: - ./postgre-data:/var/lib/postgresql/data ``` ### 2. create mount folders ```shell mkdir -p ./mytb-data && sudo chown -R 799:799 ./mytb-data mkdir -p ./mytb-logs && sudo chown -R 799:799 ./mytb-logs mkdir -p ./postgre-data && sudo chown -R 799:799 ./postgre-data ``` ### 3. start the container ```shell docker compose up -d docker compose logs -f mytb ``` -------------------------------- ## Upgrade to tb-ce:3.8.1 **shell** ```shell docker compose stop # ensure upgrade from 380 echo "3.8.0" | sudo tee ./mytb-data/.upgradeversion > /dev/null # start postgres docker compose up -d postgres # temp-nw for upgrade-tb connect to postgres docker network create --driver bridge temp_network docker network connect temp_network postgres # modify the network, url if needed docker pull ghcr.io/5giotlead/tb-ce:3.8.1 docker run -it --network temp_network -e SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard -v ./mytb-data:/data --rm ghcr.io/5giotlead/tb-ce:3.8.1 upgrade-tb.sh # shutdown postgres, remove temp-nw docker network disconnect temp_network postgres docker compose down docker network remove temp_network docker compose rm -f mytb ``` **更新docker-compose.yml** update image version ```diff - image: "ghcr.io/5giotlead/tb-ce:3.8.0" # specified version + image: "ghcr.io/5giotlead/tb-ce:3.8.1" # specified version ``` **shell** ``` docker compose up -d ``` ## Upgrade to tb-ce:3.9.0 **shell** ```shell docker compose stop # ensure upgrade from 381 echo "3.8.1" | sudo tee ./mytb-data/.upgradeversion > /dev/null # start postgres docker compose up -d postgres ``` [fix from #13074](https://github.com/thingsboard/thingsboard/issues/13074) ``` psql -h 127.0.0.1 -U thingsboard ``` ``` UPDATE tb_schema_settings SET schema_version=3008000 WHERE schema_version=3006004; exit; ``` **shell** ```shell # temp-nw for upgrade-tb connect to postgres docker network create --driver bridge temp_network docker network connect temp_network postgres # modify the network, url if needed docker pull ghcr.io/5giotlead/tb-ce:3.9.0 docker run -it --network temp_network -e SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard -v ./mytb-data:/data --rm ghcr.io/5giotlead/tb-ce:3.9.0 upgrade-tb.sh # shutdown postgres, remove temp-nw docker network disconnect temp_network postgres docker compose down docker network remove temp_network docker compose rm -f mytb ``` **更新docker-compose.yml** update image version ```diff - image: "ghcr.io/5giotlead/tb-ce:3.8.1" # specified version + image: "ghcr.io/5giotlead/tb-ce:3.9.0" # specified version ``` **shell** ``` docker compose up -d ``` ## Upgrade to tb-ce:3.9.1-spx **shell** ```shell docker compose stop # ensure upgrade from 390 echo "3.9.0" | sudo tee ./mytb-data/.upgradeversion > /dev/null # start postgres docker compose up -d postgres # temp-nw for upgrade-tb connect to postgres docker network create --driver bridge temp_network docker network connect temp_network postgres # modify the network, url if needed docker pull ghcr.io/5giotlead/tb-ce:3.9.1-spx docker run -it --network temp_network -e SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard -v ./mytb-data:/data --rm ghcr.io/5giotlead/tb-ce:3.9.1-spx upgrade-tb.sh # shutdown postgres, remove temp-nw docker network disconnect temp_network postgres docker compose down docker network remove temp_network docker compose rm -f mytb ``` **更新docker-compose.yml** update image version ```diff - image: "ghcr.io/5giotlead/tb-ce:3.9.0" # specified version + image: "ghcr.io/5giotlead/tb-ce:3.9.1-spx" # specified version ``` **shell** ``` docker compose up -d ``` ## Upgrade to tb-ce:4.0.0-spx **shell** ```shell docker compose stop # ensure upgrade from 391 echo "3.9.1" | sudo tee ./mytb-data/.upgradeversion > /dev/null # start postgres docker compose up -d postgres # temp-nw for upgrade-tb connect to postgres docker network create --driver bridge temp_network docker network connect temp_network postgres # modify the network, url if needed docker pull ghcr.io/5giotlead/tb-ce:4.0.0-spx docker run -it --network temp_network -e SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard -v ./mytb-data:/data --rm ghcr.io/5giotlead/tb-ce:4.0.0-spx upgrade-tb.sh # shutdown postgres, remove temp-nw docker network disconnect temp_network postgres docker compose down docker network remove temp_network docker compose rm -f mytb ``` **更新docker-compose.yml** update image version ```diff - image: "ghcr.io/5giotlead/tb-ce:3.9.1-spx" # specified version + image: "ghcr.io/5giotlead/tb-ce:4.0.0-spx" # specified version ``` **shell** ``` docker compose up -d ``` ## Upgrade to tb-ce:4.0.1-spx **shell** ```shell docker compose stop # ensure upgrade from 400 echo "4.0.0" | sudo tee ./mytb-data/.upgradeversion > /dev/null # start postgres docker compose up -d postgres # temp-nw for upgrade-tb connect to postgres docker network create --driver bridge temp_network docker network connect temp_network postgres # modify the network, url if needed docker pull ghcr.io/5giotlead/tb-ce:4.0.1-spx docker run -it --network temp_network -e SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard -v ./mytb-data:/data --rm ghcr.io/5giotlead/tb-ce:4.0.1-spx upgrade-tb.sh # shutdown postgres, remove temp-nw docker network disconnect temp_network postgres docker compose down docker network remove temp_network docker compose rm -f mytb ``` **更新docker-compose.yml** update image version ```diff - image: "ghcr.io/5giotlead/tb-ce:4.0.0-spx" # specified version + image: "ghcr.io/5giotlead/tb-ce:4.0.1-spx" # specified version ``` **shell** ``` docker compose up -d ```