pult-report-server
pult-report-server — опциональный компонент отчётности: формирует отчётные данные и готовит пользовательские отчёты. Его запускают, если в системе нужна функциональность отчётности; при отказе от отчётов компонент можно не разворачивать.
Установка в Docker
Подготовка
-
Создайте отдельную базу данных PostgreSQL (и пользователя-владельца), отличную от основной БД Пульта (
pult-server). Версия PostgreSQL — та же, что для основной БД Пульта (15–16). -
Создайте каталог для volume и назначьте права до запуска контейнера:
mkdir -p reports_files
chown -R 1997:1995 reports_files
- Подготовьте файл
.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_URL | URL API report-server: http://<внешний_IP_или_hostname>:<внешний_порт>/api (при маппинге 8088:8000 — порт 8088) |
REPORT_API_TOKEN | Значение JWT_SECRET из .env_rs (тот же секрет) |
Получение токенов
PULT_TOKEN (для .env_rs):
- В Web UI Пульта перейдите в Пользователи → API токены.
- Создайте токен и скопируйте значение в переменную
PULT_TOKEN.
JWT_SECRET (для .env_rs и REPORT_API_TOKEN в pult-web):
- Сгенерируйте секрет (произвольная строка) и укажите его в
JWT_SECRETв.env_rs. - То же значение укажите в
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 Пульта
Для активации пользовательских отчётов перейдите в Администрирование → Общие → Модули.

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

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

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