An error occurred when installing TTS 3.22.2 with Docker in ubantu18.4

An error occurred when installing TTS 3.22.2 with Docker in ubantu18.4.
The error is as follows:

The storage integration is not available in the open-source version of The Things Stack.

$ sudo docker-compose run --rm stack is-db migrate
[+] Running 2/0
 ⠿ Container the-things-stack-postgres-1  Running                                                                                     0.0s
 ⠿ Container the-things-stack-redis-1     Running                                                                                     0.0s
INFO    Connecting to Identity Server database...
INFO    Applied: 6 migrations (20220520000000 ... 20220808000000)
INFO    Database is up to date
 sudo docker-compose run --rm stack storage-db init
[+] Running 2/0
 ⠿ Container the-things-stack-postgres-1  Running                                                                                     0.0s
 ⠿ Container the-things-stack-redis-1     Running                                                                                     0.0s
The storage integration is not available in the open-source version of The Things Stack.
For more information, see https://www.thethingsindustries.com/docs/integrations/storage/
error:cmd/ttn-lw-stack/commands:storage_integration_not_available (Storage Integration not available)
    correlation_id=b653bc5907d5446898611a74229f5892

Attached are my two profiles.

# Identity Server configuration
# Email configuration for "thethings.example.com"
is:
  email:
    sender-name: 'The Things Stack'
    sender-address: 'noreply@thethings.example.com'
    network:
      name: 'The Things Stack'
      console-url: 'https://thethings.example.com/console'
      identity-server-url: 'https://thethings.example.com/oauth'

    # If sending email with Sendgrid
    # provider: sendgrid
    # sendgrid:
    #   api-key: '...'              # enter Sendgrid API key

    # If sending email with SMTP
    # provider: smtp
    # smtp:
    #   address:  '...'             # enter SMTP server address
    #   username: '...'             # enter SMTP server username
    #   password: '...'             # enter SMTP server password

  # Web UI configuration for "thethings.example.com":
  oauth:
    ui:
      canonical-url: 'https://thethings.example.com/oauth'
      is:
        base-url: 'https://thethings.example.com/api/v3'

# HTTP server configuration
http:
  cookie:
    block-key: 'd0505de5a4af2311a08cb987f73db93170fa3779675379868671697bcb42a1f1'                # generate 32 bytes (openssl rand -hex 32)
    hash-key: '09b48a420f8cee62d516f2e1b46f10d06771c25bd1ea6ad14e460c7041c04bf78497e7bd1237d218e49f5edd06f22f9bde2bf7f7687e5aa7767423e5a21233c2'                 # generate 64 bytes (openssl rand -hex 64)
  metrics:
    password: 'metrics'               # choose a password
  pprof:
    password: 'pprof'                 # choose a password

# If using custom certificates:
# tls:
#   source: file
#   root-ca: /run/secrets/ca.pem
#   certificate: /run/secrets/cert.pem
#   key: /run/secrets/key.pem

# Let's encrypt for "thethings.example.com"
tls:
  source: 'acme'
  acme:
    dir: '/var/lib/acme'
    email: 'you@thethings.example.com'
    hosts: ['thethings.example.com']
    default-host: 'thethings.example.com'

# If Gateway Server enabled, defaults for "thethings.example.com":
gs:
  mqtt:
    public-address: 'thethings.example.com:1882'
    public-tls-address: 'thethings.example.com:8882'
  mqtt-v2:
    public-address: 'thethings.example.com:1881'
    public-tls-address: 'thethings.example.com:8881'

# If Gateway Configuration Server enabled, defaults for "thethings.example.com":
gcs:
  basic-station:
    default:
      lns-uri: 'wss://thethings.example.com:8887'
  the-things-gateway:
    default:
      mqtt-server: 'mqtts://thethings.example.com:8881'

# Web UI configuration for "thethings.example.com":
console:
  ui:
    canonical-url: 'https://thethings.example.com/console'
    is:
      base-url: 'https://thethings.example.com/api/v3'
    gs:
      base-url: 'https://thethings.example.com/api/v3'
    gcs:
      base-url: 'https://thethings.example.com/api/v3'
    ns:
      base-url: 'https://thethings.example.com/api/v3'
    as:
      base-url: 'https://thethings.example.com/api/v3'
    js:
      base-url: 'https://thethings.example.com/api/v3'
    qrg:
      base-url: 'https://thethings.example.com/api/v3'
    edtc:
      base-url: 'https://thethings.example.com/api/v3'

  oauth:
    authorize-url: 'https://thethings.example.com/oauth/authorize'
    token-url: 'https://thethings.example.com/oauth/token'
    logout-url: 'https://thethings.example.com/oauth/logout'
    client-id: 'console'
    client-secret: 'console'          # choose or generate a secret

# If Application Server enabled, defaults for "thethings.example.com":
as:
  mqtt:
    public-address: 'thethings.example.com:1883'
    public-tls-address: 'thethings.example.com:8883'
  webhooks:
    downlink:
      public-address: 'thethings.example.com:1885/api/v3'
  packages:
    storage:
      provider: postgres
      bulk:
        enabled: true
      postgres:
        database-uri: "postgres://root:root@postgres:5432/ttn_lorawan?sslmode=disable"
        insert-batch-size: 1024 # batch size for INSERT operations
        select-batch-size: 1024 # batch size for SELECT operations
        
# If Device Claiming Server enabled, defaults for "thethings.example.com":
dcs:
  oauth:
    authorize-url: 'https://thethings.example.com/oauth/authorize'
    token-url: 'https://thethings.example.com/oauth/token'
    logout-url: 'https://thethings.example.com/oauth/logout'
    client-id: 'device-claiming'
    client-secret: 'device-claiming'          # choose or generate a secret
  ui:
    canonical-url: 'https://thethings.example.com/claim'
    as:
      base-url: 'https://thethings.example.com/api/v3'
    dcs:
      base-url: 'https://thethings.example.com/api/v3'
    is:
      base-url: 'https://thethings.example.com/api/v3'
    ns:
      base-url: 'https://thethings.example.com/api/v3'

version: '3.7'
services:

  postgres:
    # In production, replace 'latest' with tag from https://hub.docker.com/_/postgres?tab=tags
    image: postgres:15.1
    restart: unless-stopped
    environment:
      - POSTGRES_PASSWORD=root
      - POSTGRES_USER=root
      - POSTGRES_DB=ttn_lorawan
    volumes:
      - ${DEV_DATA_DIR:-.env/data}/postgres:/var/lib/postgresql/data
    ports:
      - "127.0.0.1:5432:5432"

  redis:
    # In production, replace 'latest' with tag from https://hub.docker.com/_/redis?tab=tags
    image: redis:6.2
    command: redis-server --appendonly yes
    restart: unless-stopped
    volumes:
      - ${DEV_DATA_DIR:-.env/data}/redis:/data
    ports:
      - "127.0.0.1:6379:6379"

  stack:
    # In production, replace 'latest' with tag from https://hub.docker.com/r/thethingsnetwork/lorawan-stack/tags
    image: thethingsnetwork/lorawan-stack:3.22.2
    entrypoint: ttn-lw-stack -c /config/ttn-lw-stack-docker.yml
    command: start
    restart: unless-stopped
    depends_on:
      - redis
      - postgres
    volumes:
      - ./blob:/srv/ttn-lorawan/public/blob
      - ./config/stack:/config:ro
      # If using Let's Encrypt:
      - ./acme:/var/lib/acme
    environment:
      TTN_LW_BLOB_LOCAL_DIRECTORY: /srv/ttn-lorawan/public/blob
      TTN_LW_REDIS_ADDRESS: redis:6379
      TTN_LW_IS_DATABASE_URI: postgres://root:root@postgres:5432/ttn_lorawan?sslmode=disable
      TTN_LW_NOC_GRAFANA_NOC_ADDRESS: stack:1884
      TTN_LW_NOC_GRAFANA_TARGET_URL: http://grafana:3000
      TTN_LW_NOC_STORE_DATABASE_URI: postgres://root:root@postgres:5432/ttn_lorawan?sslmode=disable
    ports:
      # If deploying on a public server:
      - "80:1885"
      - "443:8885"
      - "1881:1881"
      - "8881:8881"
      - "1882:1882"
      - "8882:8882"
      - "1883:1883"
      - "8883:8883"
      - "1884:1884"
      - "8884:8884"
      - "1885:1885"
      - "8885:8885"
      - "1886:1886"
      - "8886:8886"
      - "1887:1887"
      - "8887:8887"
      - "1700:1700/udp"

    # If using custom certificates:
    # secrets:
    #   - ca.pem
    #   - cert.pem
    #   - key.pem

# If using custom certificates:
# secrets:
#   ca.pem:
#     file: ./ca.pem
#   cert.pem:
#     file: ./cert.pem
#   key.pem:
#     file: ./key.pem



That’s not an error message, that’s an information message.

Did you follow the link in the message details?

Yes, I clicked it. There are some introductions, but there is no error handling. The entire error message is as follows:

The storage integration is not available in the open-source version of The Things Stack.
For more information, see https://www.thethingsindustries.com/docs/integrations/storage/
error:cmd/ttn-lw-stack/commands:storage_integration_not_available (Storage Integration not available)
    correlation_id=b653bc5907d5446898611a74229f5892

That’s exactly what the error message says. You don’t have to run storage-db init with the Open Source version.

OK, I’ll concede that there is the word error there. It’s a Schrodinger error - neither one nor the other.

But the headline remains, it’s not available in TTS OS.