Не хотите читать всё это?
Просто скиньте в любой ИИ-чат (Claude, ChatGPT и т.д.) ссылку на https://pastukhov.com/analytics-agent/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_PASSWORD — SHA-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.