v3.24.1

Getting Started Devices Gateways Integrations Reference
Get The Things Stack

Getting Started

    Overview
  • Quick Start
  • What Is The Things Stack?
  • Console
  • Subscription and Billing Management
  • Command-line Interface
  • Installing The Things Stack
  • Upgrading The Things Stack
  • Migrating to The Things Stack
  • The Things Stack Cloud
  • The Things Stack AWS Launcher
  • The Things Stack on Kubernetes
  • The Things Join Server
  • The Things Network
  • Server Addresses
  • Packet Broker
  • Single Sign-On
  • Users and Organizations
  • Using the API
  • Working with Events
  • Troubleshooting Getting Started

Upgrading The Things Stack

This section contains instructions to upgrade a The Things Stack Enterprise or Open Source deployment, that was installed using the installation guide.

The Things Stack Cloud and Community Edition are updated automatically (you do not need to do anything!)

Note:
To avoid downtime in production deployments, we strongly suggest The Things Stack users to test the upgrading process in their staging environments first. After confirming that the upgrade process was successful in staging environment, you may proceed with upgrading The Things Stack in your production deployment.

Pulling new images

Replace the tag in your docker-compose.yml file with the newer version of The Things Stack.

  • Enterprise
  • Open Source
# file: docker-compose.yml
services:
  # ...
  stack:
    image: 'thethingsindustries/lorawan-stack:<new-version-tag>'
  # ...
# file: docker-compose.yml
services:
  # ...
  stack:
    image: 'thethingsnetwork/lorawan-stack:<new-version-tag>'
  # ...

Pull the docker images of the new version.

docker-compose pull stack
Pulling stack     ... done

The new version will be pulled locally but not run yet.

Backup

Warning:
We do not recommend manually backing up and restoring databases for production deployments. Consider using a managed database service with support for snapshots.

Stop The Things Stack container.

docker-compose stop stack
Stopping <directory>_stack_1 ... done
Note:
In this guide, <directory> represents the directory containing The Things Stack files, i.e. the directory where you cloned The Things Stack repository.

Redis

Navigate to the Redis data folder, which can be found in the docker-compose.yml for the redis service (ex: ${DEV_DATA_DIR:-.env/data}/redis)

Stop the redis container.

docker-compose stop redis
Stopping <directory>_redis_1 ... done

Copy the ${DEV_DATA_DIR:-.env/data}/redis/appendonly.aof file to a location of your choice. This file is now a snapshot of the database at the time that it is copied.

To restore redis from this file, simply place the file back in the data folder (replacing the appendonly.aof file) and start redis. The contents of the backup will be read and restored.

Start the redis container.

docker-compose up -d redis
Starting <directory>_redis_1 ... done

PostgreSQL

Keep the postgres container running and make a PostgreSQL backup file using the following command:

docker exec -it <directory>_postgres_1 /usr/bin/pg_dump --format=c ttn_lorawan > <location-of-your-choice>/postgres-backup.sql

A postgres-backup.sql file containing a snapshot of the PostgreSQL database at the time that it was backed up will be created in the <location-of-your-choice> directory.

In order to make the backup file available inside the container, just copy the postgres-backup.sql file to the ${DEV_DATA_DIR:-.env/data}/postgres directory on your machine. You can also use the following command to copy the file into the /var/lib/postgresql/data directory inside the container:

docker cp postgres-backup.sql <directory>_postgres_1:/var/lib/postgresql/data

In order to restore the PostgreSQL database contents, you first need to delete (or rename) the old ttn_lorawan database to prevent conflicts. In order to perform deletion or renaming, you have to be disconnected from the ttn_lorawan database.

Create a temporary database temp_db:

docker exec -it <directory>_postgres_1 psql -d ttn_lorawan -c "CREATE DATABASE temp_db;"

Run the following command to disconnect from ttn_lorawan:

docker exec -it <directory>_postgres_1 psql -d ttn_lorawan -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'ttn_lorawan' AND pid <> pg_backend_pid();"

Now connect to temp_db and delete the old ttn_lorawan database with:

docker exec -it <directory>_postgres_1 psql -d temp_db -c "DROP DATABASE ttn_lorawan;"

Recreate the ttn_lorawan database:

docker exec -it <directory>_postgres_1 psql -d temp_db -c "CREATE DATABASE ttn_lorawan;"

At this point, the ttn_lorawan database will be empty. Finally, you can restore the database contents from the postgres-backup.sql snapshot file:

docker exec <directory>_postgres_1 pg_restore -d ttn_lorawan /var/lib/postgresql/data/postgres-backup.sql

For additional info, please refer to the official PostgreSQL documentation for the specific version that you are using.

Optional

Updates to The Things Stack do not modify static (user-uploaded) assets. But those can be backed up as well.

User profile pictures and end device pictures are stored in the assets folder by default.

Check the values set for is.profile-picture.bucket-url and is.end-device-picture.bucket-url configuration options to find these locations (if you are using a non-default location).

You can now copy the contents of those folders to a location of your choice.

Migrations

New minor versions of The Things Stack include new features/fixes which may require an update to the databases. This is done through migrations.

  • Enterprise
  • Open Source

Migrate the Identity Server Database.

docker-compose run --rm stack is-db migrate

Migrate the Network Server Database.

docker-compose run --rm stack ns-db migrate

Migrate the Device Claiming Server Database.

docker-compose run --rm stack dcs-db migrate

Migrate the Application Server Database.

docker-compose run --rm stack as-db migrate

Migrate the Identity Server Database.

docker-compose run --rm stack is-db migrate

Migrate the Network Server Database.

docker-compose run --rm stack ns-db migrate

Running the new version

Once the above steps are successfully completed, start The Things Stack.

docker-compose up -d stack

Troubleshooting

For common issues that might show up during the upgrade process, see the Troubleshooting Installation section.

← Balena Migrating to The Things Stack →

On this page

  • Pulling new images
  • Backup
  • Migrations
  • Running the new version
  • Troubleshooting

The Things Stack

Getting Started

Devices

Gateways

Integrations

Reference

Contributing

GitHub

Forum

About Us

The Things Network

The Things Industries

About this page

Last changed by Nejra Selimović on 13 Jul 2022.
doc: Minor changes in Upgrading TTS section (#915)

Edit on Github