Установка Analytics Agent

Не хотите читать всё это?

Просто скиньте в любой ИИ-чат (Claude, ChatGPT и т.д.) ссылку на https://pastukhov.com/agents/analytics/install.md или на https://pastukhov.com/llms.txt и попросите сгенерировать конфигурационные файлы и команды. Он прочитает документацию, задаст несколько вопросов о вашей настройке и выдаст готовую конфигурацию. Экономьте время — пусть модель читает за вас.

Вы также можете связаться со мной через Telegram — я всегда рад помочь. И это не просто вежливость — мне действительно нравится общаться с единомышленниками, особенно если вы так же увлечены программированием, как и я.

Analytics Agent — self-hosted веб-приложение для быстрого анализа и визуализации данных. Разворачивается одним Docker-контейнером, все данные хранятся в постоянном volume /data. Python для Jupyter Notebooks уже встроен в образ. Отчёты — это JSON-файлы: их можно версионировать в Git и переносить простым копированием.

Минимальные требования

Достаточно любого Linux-хоста с Docker. Всё остальное уже в образе:

  • ASP.NET Core 9 runtime — веб-сервер приложения;
  • Python 3 + venv + pip — для исполнения Jupyter Notebooks;
  • sqlite3 и другие файловые утилиты для работы с данными.

СУБД не нужна: документы-отчёты хранятся файлами в volume, а источники данных (SQLite, PostgreSQL, ClickHouse) подключаются по мере надобности через интерфейс.

Docker Compose

Создайте файл compose.yml и запустите docker compose up -d:

services:
  analytics-agent:
    image: maxpastukhov/analytics-agent:latest
    container_name: analytics-agent
    ports:
      - "5011:80"
    volumes:
      - analytics-agent-data:/data
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
      - ANALYTICS_DATA_PATH=/data
      - ANALYTICS_BRAND=pastukhov
      - ANALYTICS_SECRET_KEY=change-me-in-production
      - ANALYTICS_ADMIN_LOGIN=admin
      - ANALYTICS_ADMIN_PASSWORD={sha256-хэш пароля}
    restart: unless-stopped
    sysctls:
      fs.inotify.max_user_watches: "524288"
      fs.inotify.max_user_instances: "512"

volumes:
  analytics-agent-data:

После запуска интерфейс будет доступен на порту 5011: http://localhost:5011.

Sysctls повышают лимиты inotify — они нужны file watcher’у, который отслеживает изменения файлов отчётов: правки подхватываются мгновенно, без перезагрузки. Без этих лимитов на больших объёмах документов watcher может не увидеть часть изменений.

Переменные окружения

  • ANALYTICS_ADMIN_LOGIN — логин администратора (по умолчанию admin из appsettings).
  • ANALYTICS_ADMIN_PASSWORDSHA-256-хэш пароля, а не сам пароль. Хэш вычисляется командой echo -n "ваш-пароль" | sha256sum. Приложение хэширует введённый при входе пароль и сравнивает с этим значением.
  • ANALYTICS_SECRET_KEY — ключ подписи JWT-токенов (по умолчанию default-secret-key-change-in-production — обязательно замените в продакшене).
  • ANALYTICS_DATA_PATH — папка данных (по умолчанию /project/data; в контейнере — /data).
  • ANALYTICS_BRAND — бренд и язык интерфейса: pastukhov (русский) или xedant (английский, по умолчанию).
  • ANALYTICS_LAKEHOUSE_PATH — корневая папка Lakehouse (по умолчанию /lakehouse).
  • AGENT_API_URL и AGENT_API_KEY — URL и API-ключ Pastukhov Agent для ИИ-функций. Без них кнопки ИИ скрыты, всё остальное работает.

Без установленных ANALYTICS_ADMIN_LOGIN и ANALYTICS_ADMIN_PASSWORD вход в приложение невозможен. JWT-токен живёт 90 дней (129600 минут), сессия — 1 час.

Хранение данных

Все постоянные данные живут в volume /data и переживают пересоздание контейнера. Volume обязателен — без него вы потеряете отчёты и настройки окружения при первом же docker compose down.

  • /data/documents/ — документы-отчёты в виде JSON-файлов;
  • /data/requirements.txt — зависимости Python для Jupyter Notebooks: засеивается при первом запуске, можно дополнять своими библиотеками;
  • ANALYTICS_LAKEHOUSE_PATH — файлы данных Lakehouse: Parquet, SQLite, Markdown.

Первый вход

Используйте логин и пароль, заданные переменными ANALYTICS_ADMIN_LOGIN и ANALYTICS_ADMIN_PASSWORD (в переменной — хэш, вводите при входе сам пароль). После входа можно сразу сменить язык и тему интерфейса. На главном экране — список «Новый документ» и каталог отчётов.

Настройка после запуска

Источники данных — SQLite, PostgreSQL и ClickHouse — подключаются в разделе Data Sources веб-интерфейса: создание, проверка подключения, автоопределение схемы. Подробнее — в разделе Источники данных.

ИИ-функции включаются переменными AGENT_API_URL и AGENT_API_KEY: появляются кнопки добавления блоков обычным языком и «Исправить с помощью ИИ». Список окружений ИИ (модели и конфигурации) задаётся файлом environments.txt. Подробнее — в разделе ИИ-агент в отчёте.

Docker CLI с файлом .env

Можно запустить Analytics Agent и без compose — командой docker run, сохранив переменные окружения в файле .env:

# .env
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=http://+:80
ANALYTICS_DATA_PATH=/data
ANALYTICS_BRAND=pastukhov
ANALYTICS_SECRET_KEY=длинная-случайная-строка
ANALYTICS_ADMIN_LOGIN=admin
ANALYTICS_ADMIN_PASSWORD=sha256-хэш-пароля
# опционально: ИИ-функции через Pastukhov Agent
# AGENT_API_URL=
# AGENT_API_KEY=
docker run -d \
  --name analytics-agent \
  --env-file .env \
  -p 5011:80 \
  -v analytics-agent-data:/data \
  --sysctl fs.inotify.max_user_watches=524288 \
  --sysctl fs.inotify.max_user_instances=512 \
  --restart unless-stopped \
  maxpastukhov/analytics-agent:latest

Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e ANALYTICS_BRAND=xedant.

← Вернуться на главную раздела Analytics Agent