Руководство администратора

Установка из deb-пакетов поддерживается для операционной системы Debian 13 (Trixie).

Установка

  1. Получаем архив с необходимыми файлами и распаковываем:

    tar xf example_client.tar.gz
    cd example_client
    example_client/
    ├── client.crt
    ├── client.key
    ├── install.sh
    └── license.txt
    
    1 directory, 4 files
  2. Запускаем скрипт для установки сертификата, файла конфигурации и репозитория APT:

    sudo ./install.sh
  3. Устанавливаем пакеты:

    1. Только Tengri

      sudo apt install tengri
    2. Tengri с локальным S3 (MinIO)

      sudo apt install tengri tengri-minio
  • После установки Tengri будет готов к работе на порту 3000.
    Логин и пароль по умолчанию: admin / admin.

  • Пакет tengri-minio установит локальный MinIO с дефолтными настройками. Подробности о дальнейшей настройке можно узнать в документации MinIO.

Настройка конфигурации

  • Дополнительные настройки конфигурации Tengri можно задать в файле /etc/tengri/tengri.conf (по умолчанию файл отсутствует).

    Полный список возможных настроек в файле tengri.conf
    # TNGRi configuration parameters
    
    # =========
    # Licencing
    # =========
    #
    TNGRI_LICENSE_FILE=/opt/tengri/license.txt
    
    # ===========================
    # S3 configuration parameters
    # ===========================
    #
    #
    # Access key id and secret key of user that will connect to S3
    # rename SECRET_ACCESS_KEY to SECRET_KEY
    TNGRI_S3_ACCESS_KEY_ID=minioadmin
    TNGRI_S3_SECRET_ACCESS_KEY=minioadmin
    #
    # Region to send to S3 server. Generally you don't need to change that, just make
    # sure that target S3 has this same region
    TNGRI_S3_REGION=eu-central-1
    TNGRI_S3_DEFAULT_REGION=eu-central-1
    #
    # API endpoint URL for target S3. Must be in FQDN form
    #     TNGRI_S3_ENDPOINT_URL=http://example.com
    TNGRI_S3_ENDPOINT_URL=http://127.0.0.1:9002
    #
    # Bucket name to use. Must exist before start, so make sure that it exists and
    # has full access rights for this bucket. Must be in full form, i.e.
    #     TNGRI_S3_BUCKET_NAME=s3://example:9000
    TNGRI_S3_BUCKET_NAME=prostore
    
    # =======================
    # TNGRi server parameters
    # =======================
    #
    #
    # Iceberg catlog path in S3 bucket
    TNGRI_WAREHOUSE_PATH=s3://prostore/iceberg/
    #
    # Name for the default schema in TNGRi.
    TNGRI_DEFAULT_SCHEMA=public
    #
    # URI for catalog endpoint. Must be either PostgreSQL or SQLite connection string, i.e.
    #     TNGRI_CATALOG_URI=postgresql://user:password@example.com/database
    TNGRI_CATALOG_URI=postgresql://prostore:prostore@127.0.0.1:5432/prostore
    #
    # Path to writable directory where cached files will be placed.
    #
    # WARNING: Should be placed on SSD storage. Tngri uses aggressive caching strategies
    # to reduce S3 load
    #
    TNGRI_CACHE_DIR=/var/lib/tengri/cache
    #
    # Path to writable directory where python kernels will be stored.
    TNGRI_KERNEL_DIR=/var/lib/tengri/kernels
    #
    # If set to false then no agent is required to process queries.
    # Must be true for production environments
    TNGRI_REMOTE_SESSIONS=true
    #
    # Set to true for more log output
    TNGRI_DEBUG=false
    #
    # Host to bind main server to
    TNGRI_HOST=0.0.0.0
    #
    # Port to bind PostgreSQL protocol implementation to
    TNGRI_PORT=5433
    #
    # Host to bind RPC server for communication between agent and server
    TNGRI_RPC_HOST=0.0.0.0
    #
    # Port to bind RPC server for communication between agent and server
    TNGRI_RPC_PORT=57776
    
    # =============================
    # Web application configuration
    # =============================
    #
    #
    # SSL configuration. If set then Web communication will be done over SSL, otherwise
    # it will be plaintext.
    #
    # Path to SSL key.
    # TNGRI_SSL_KEY=
    #
    # Path to SSL certificate file.
    # TNGRI_SSL_CERT=
    #
    # Enables TNGRi web app.
    TNGRI_ENABLE_WEBSOCKET=true
    #
    # Path to static files for web app.
    TNGRI_WEBAPP_DIR=/usr/share/tengri-web
    #
    # Host to bind HTTP server to
    TNGRI_WEBAPP_HOST=0.0.0.0
    #
    # Port to bind HTTP server to
    TNGRI_WEBAPP_PORT=3000
    #
    # Host to bind Websocket server to. It is used extensively by webapp and python clients
    TNGRI_WEBSOCKET_HOST=0.0.0.0
    #
    # Port to bind Websocket server to
    TNGRI_WEBSOCKET_PORT=3001
    #
    # Host to bind PyLSP server to. It is used by webapp to provide code completion
    TNGRI_PYLSP_HOST=0.0.0.0
    #
    # Port to bind PyLSP server to
    TNGRI_PYLSP_PORT=3003
    #
    # Host to bind CRUD. Used by webapp to send messages in chats, manage scheduled
    # notebooks and manage external catalogs
    TNGRI_CRUD_HOST=0.0.0.0
    #
    # Port to bind CRUD to
    TNGRI_CRUD_PORT=3004
    
    # ============================
    # TNGRi services configuration
    # ============================
    #
    # Enable TNGRi's Iceberg REST catalog API provider
    TNGRI_ENABLE_REST_CATALOG=true
    
    # Host to bind REST catalog server to
    TNGRI_REST_CATALOG_HOST=0.0.0.0
    
    # Port to bind REST catalog to
    TNGRI_REST_CATALOG_PORT=3005
    
    # Enable compaction daemon
    TNGRI_ENABLE_COMPACTION=true
    
    # Enable notebook CRON daemon
    TNGRI_ENABLE_CRON=true
    
    # ============================
    # TNGRi deployment information
    # ============================
    #
    # Needed for external clients to connect to TNGRi services. For example, python clients
    # connecting from user's local machines. Set these to the values that point to this
    # installation, for example, if using reverse proxy for HTTP or Postgres protocol.
    #
    # Change the name of site deployment
    # TNGRI_SITE_NAME=tngri
    #
    # Websocket address to connect to. Must be in FQDN form, i.e.
    #     TNGRI_SITE_WS_ADDR=ws://example.com:3001
    TNGRI_SITE_WS_ADDR=ws://0.0.0.0:3001
    #
    # Postgres protocol address to connect to, i.e.
    #     TNGRI_SITE_PSQL_ADDR=example.com:5433
    # TNGRI_SITE_PSQL_ADDR=
    #
    # S3 address to connect to. Must be in FQDN form, i.e.
    #     TNGRI_SITE_S3_ADDR=http://example.com:9000
    # TNGRI_SITE_S3_ADDR=
    #
    # S3 access key for public usage (Stage only)
    # TNGRI_SITE_PUBLIC_LOADER_ACCESS_KEY=public_loader
    #
    # S3 secret key for public usage (Stage only)
    # TNGRI_SITE_PUBLIC_LOADER_SECRET_KEY=public_loader
    #
  • Дополнительные настройки конфигурации MinIO можно задать в файле /etc/default/tengri-minio в соответствии с документацией MinIO.

    После обновления файла конфигурации MinIO необходимо выполнить:

    sudo systemctl daemon-reload
    sudo systemctl restart minio

Сброс пароля администратора

В случае если утрачен доступ к паролю администратора, его можно сбросить.

Для этого на сервере, где был установлен пакет, нужно выполнить:

sudo -u tengri bash -c 'export $(egrep -v "^#|^$|.*#" /var/lib/tengri/tengri.defaults | xargs); prostore reset-admin-password'

После этого текущий пароль администратора сбросится, и новый автоматически сгенерированный пароль будет показан в логе вывода.

Просмотр системных таблиц

Администратору доступны для просмотра следующие системные таблицы:

  • system.query_log — история запросов пользователей
    (текст запроса, статус, время выполнения, длительность выполнения и прочее)

  • system.users — информация о пользователях
    (имя, текущий вычислительный пул, тип авторизации и прочее)

  • system.worker_pools — информация о вычислительных пулах
    (имя, размер, максимальное количество воркеров, стратегия масштабирования и прочее)

Посмотреть пример

Выведем все запросы пользователя tengri_user, сделанные им в период между 21 и 23 декабря 2025 года, с их временной меткой, длительностью и статусом:

SELECT
    query,
    duration_ms,
    started_at
FROM system.query_log
WHERE username = 'tengri_user'
  AND started_at BETWEEN '2025-12-21' AND '2025-12-23'
+-------------------+-------------+----------------------------+---------+
| query             | duration_ms | started_at                 | status  |
+-------------------+-------------+----------------------------+---------+
| select * from ... | 490         | 2025-12-22 13:27:21.349305 | success |
+-------------------+-------------+----------------------------+---------+
| ...               | ...         | ...                        | ...     |
+-------------------+-------------+----------------------------+---------+

Настройка ролей для пользователей

Создание ролей для пользователей

Чтобы создать роль analyst, выполним запрос:

CREATE ROLE analyst;

Назначение ролей пользователям

Чтобы назначить пользователю tengri_user роль analyst, выполним запрос:

GRANT ROLE analyst TO tengri_user;

Предоставление привилегий

Чтобы предоставить роли analyst привилегии для чтения и записи внутри схемы analytical_sandbox, выполним запрос:

GRANT
    USAGE,
    CREATE TABLE,
    CREATE VIEW
ON SCHEMA analytical_sandbox
TO ROLE analyst;

После этого у всех пользователей с ролью analyst появятся права на чтение и изменение таблиц и представлений внутри схемы analytical_sandbox.

При необходимости скорректируйте список предоставляемых привилегий для данной роли.

Предоставлять привилегии можно как ролям, так и пользователям на прямую.
  • Подробнее о предоставлении привилегий ролям или пользователям.

Отзыв привилегий

Чтобы отозвать у роли analyst привилегию на создание таблиц внутри схемы analytical_sandbox, выполним запрос:

REVOKE
    CREATE TABLE
ON SCHEMA analytical_sandbox
FROM ROLE analyst;

При необходимости скорректируйте список отзываемых привилегий для данной роли.

Отзывать привилегии можно как у ролей, так и у пользователей на прямую.
  • Подробнее об отзыве привилегий у ролей или пользователей.

Отзыв ролей у пользователей

Чтобы отозвать у пользователя tengri_user роль analyst, выполним запрос:

REVOKE ROLE analyst FROM USER tengri_user;