Перейти к основному содержимому
Версия: Пульт 2.3.0

pult-report-server

pult-report-serverопциональный компонент отчётности: формирует отчётные данные и готовит пользовательские отчёты. Его запускают, если в системе нужна функциональность отчётности; при отказе от отчётов компонент можно не разворачивать.

Установка в Docker

Подготовка

  1. Создайте отдельную базу данных PostgreSQL (и пользователя-владельца), отличную от основной БД Пульта (pult-server). Версия PostgreSQL — та же, что для основной БД Пульта (15–16).

  2. Создайте каталог для volume и назначьте права до запуска контейнера:

mkdir -p reports_files
chown -R 1997:1995 reports_files
  1. Подготовьте файл .env_rs (см. ниже) и переменные для pult-web.

Сервис в docker-compose.yml

Добавьте сервис pult-report-server в docker-compose.yml:

pult-report-server:
image: registry.pult.chislitellab.ru:8123/releases/2.3.0/report-server-redos8:7.4.9
container_name: pult-report-server
restart: on-failure
env_file:
- .env_rs
volumes:
- ./reports_files:/var/lib/pult_reports/reports_files
ports:
- "8088:8000"
depends_on:
- pult-web
- pult-server

Порт 8088:8000 пробрасывает API report-server на хост (8088 — внешний порт).

Пример .env_rs

# Database
DB_URL=postgresql+psycopg2://pult:changeme@postgresql:5432/report_server

# Auth
JWT_SECRET=<jwt_secret>
JWT_ALGORITHM=HS256
JWT_EXPIRE_MINUTES=60

# Workers
WORKERS=2
MAX_RETRIES=3
RETRY_DELAY=3

# Storage
REPORT_STORAGE=/var/lib/pult_reports/reports_files
USER_UPLOADS_DIR=/var/lib/pult_reports/templates

# Pult
PULT_URL=http://<external_pult-web_hostname>
PULT_TOKEN=<generated_token_in_webUI>

# Housekeeping
CHECK_INTERVAL_SECONDS=60
RETENTION_DAYS=30
BATCH_SIZE=100
DRY_RUN=false

# CORS
CORS_ALLOWED_ORIGINS=*
CORS_ALLOW_CREDENTIALS=false

# Dev auth
ALLOW_ANON_AUTH=true

В DB_URL укажите хост PostgreSQL с отдельной БД для report-server (в примере — имя сервиса postgresql в docker-сети).

Настройка pult-web

Добавьте переменные окружения в сервис pult-web (через env_file или блок environment в docker-compose.yml):

# Report server
REPORT_API_URL=http://<external_pult-report-server_hostname>:8088/api
REPORT_API_TOKEN=<jwt_secret>
ПеременнаяОписание
REPORT_API_URLURL API report-server: http://<внешний_IP_или_hostname>:<внешний_порт>/api (при маппинге 8088:8000 — порт 8088)
REPORT_API_TOKENЗначение JWT_SECRET из .env_rs (тот же секрет)

Получение токенов

PULT_TOKEN (для .env_rs):

  1. В Web UI Пульта перейдите в ПользователиAPI токены.
  2. Создайте токен и скопируйте значение в переменную PULT_TOKEN.

JWT_SECRET (для .env_rs и REPORT_API_TOKEN в pult-web):

  1. Сгенерируйте секрет (произвольная строка) и укажите его в JWT_SECRET в .env_rs.
  2. То же значение укажите в REPORT_API_TOKEN для pult-web.

Пример генерации JWT-токена для проверки (требуется pip3 install pyjwt):

import jwt
import time

secret = "ТУТ_СЕКРЕТ"

now = int(time.time())

payload = {
"sub": "1",
"type": 3,
"scope": "report.api",
"iat": now,
"exp": now + 3600
}

token = jwt.encode(payload, secret, algorithm="HS256")
print(token)

Подставьте сгенерированный секрет в JWT_SECRET и используйте тот же секрет как REPORT_API_TOKEN для pult-web.

Запуск

docker compose up -d pult-report-server

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

docker compose down && docker compose up -d

Активация пользовательских отчётов в Web UI Пульта

Для активации пользовательских отчётов перейдите в АдминистрированиеОбщиеМодули.

report-install1

Введите в поле Имя название модуля Pult Reports, нажмите Применить и смените состояние модуля Модуль для генерации пользовательских отчётов через веб интерфейс на «Активировано».

Если модуль не найден, нажмите Сканировать директорию.

report-install2

Состояние модуля станет «Активировано».

report-install3

В разделе Отчеты появится подраздел Пользовательские отчёты.

report-install4