Не хотите читать всё это?
Просто скиньте в любой ИИ-чат (Claude, ChatGPT и т.д.) ссылку на https://pastukhov.com/agents/data/install.md или на https://pastukhov.com/llms.txt и попросите сгенерировать конфигурационные файлы и команды. Он прочитает документацию, задаст несколько вопросов о вашей настройке и выдаст готовую конфигурацию. Экономьте время — пусть модель читает за вас.
Вы также можете связаться со мной через Telegram — я всегда рад помочь. И это не просто вежливость — мне действительно нравится общаться с единомышленниками, особенно если вы так же увлечены программированием, как и я.
Data Agent — веб-приложение для сбора и подготовки данных, которое разворачивается на вашем сервере одним Docker-контейнером. В образ уже встроено окружение Python, в котором выполняются скрипты агента. Папка скриптов монтируется отдельно — это та же папка, на которой работает Pastukhov Agent, поэтому оба продукта видят одни и те же файлы.
Минимальные требования
Достаточно любого Linux-хоста с Docker. Всё остальное уже в образе:
- веб-сервер приложения (ASP.NET Core 9);
- окружение Python со всеми зависимостями для работы с данными (pandas, pyarrow, SQLAlchemy);
- инструменты для файловых операций с данными.
СУБД не нужна: по умолчанию данные приложения хранятся во встроенной SQLite в volume /data. PostgreSQL подключается одной переменной окружения, если она у вас уже есть.
Docker Compose
Создайте файл compose.yml и запустите docker compose up -d:
services:
dataagent-ru:
image: maxpastukhov/data-agent:min-latest
container_name: dataagent-ru
ports:
- "8081:8080"
volumes:
- ./data-ru:/data
# Папка скриптов — агент работает с ней напрямую (AGENT_PROJECT_PATH)
- ../../scripts:/project/scripts
# Корень Lakehouse — данные организованы по проектам и источникам
- /lakehouse:/lakehouse
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=http://+:8080
# Пусто = SQLite /data/data.db; строка подключения — PostgreSQL
- DATA_AGENT_DB=
- DATA_AGENT_BRAND=pastukhov
# Связь с Pastukhov Agent для чата
- AGENT_API_URL=
- AGENT_API_KEY=
# SHA-256-хэш ключа для агентских API /api/agent/*
- DATA_AGENT_API_KEY=
# встроенное окружение Python в образе
- DATA_AGENT_PYTHON=/app/venv/bin/python
restart: unless-stopped
sysctls:
fs.inotify.max_user_watches: "524288"
fs.inotify.max_user_instances: "512"
После запуска интерфейс будет доступен на порту 8081: http://localhost:8081.
В compose три монтирования:
./data-ru:/data— постоянные данные приложения: база, ключи, переопределения источников;../../scripts:/project/scripts— папка скриптов: та самая, на которой работает Pastukhov Agent (егоAGENT_PROJECT_PATH), — агент и приложение видят одни файлы;/lakehouse:/lakehouse— корень данных, организованных по проектам и источникам.
Sysctls повышают лимиты отслеживания файлов (inotify) — они нужны, чтобы изменения, которые агент вносит в скрипты, подхватывались мгновенно, без перезагрузки. Без этих лимитов на большом объёме файлов часть изменений может быть не замечена.
Окружение Python встроено прямо в образ: при каждом старте контейнер сверяет зависимости из requirements.txt и сам доустанавливает новые. Чтобы агент мог использовать новую библиотеку, достаточно добавить её в этот файл.
Переменные окружения
- DATA_AGENT_BRAND — бренд и язык интерфейса:
pastukhov(русский) илиxedant(английский, по умолчанию). - DATA_AGENT_DB — путь к базе SQLite или строка подключения PostgreSQL. Пусто = SQLite
/data/data.db. - AGENT_API_URL и AGENT_API_KEY — адрес и API-ключ Pastukhov Agent для чата. Без них раздел «Чаты» скрыт, всё остальное работает.
- DATA_AGENT_API_KEY — SHA-256-хэш ключа, которым агент ходит в агентские API
/api/agent/*. Без него эти API закрыты. - DATA_AGENT_PYTHON — интерпретатор Python для запусков скриптов (по умолчанию
/app/venv/bin/python— встроенный в образ). - DATA_AGENT_CLICKHOUSE_URL — строка подключения ClickHouse: опциональный сбор статистики запусков. Пусто = выключено.
- DATA_AGENT_INSTANCE — имя экземпляра для статистики (по умолчанию — имя машины).
- AGENT_LICENSE — лицензионный ключ продукта (или активация в интерфейсе).
Важно: DATA_AGENT_API_KEY — это SHA-256-хэш ключа, а не сам ключ. Хэш вычисляется командой echo -n "ключ" | sha256sum, и именно это значение Pastukhov Agent передаёт в заголовке X-API-Key. Ключ в открытом виде в переменной не хранится.
Первый вход — саморегистрация
В отличие от других агентов, логин и пароль не задаются в переменных окружения. При первом запуске приложение открыто для регистрации: первый созданный аккаунт становится администратором. После этого регистрация закрывается. Пароли хранятся в виде SHA-256-хэшей, сессия работает через JWT-токены (90 дней), настройки интерфейса — тёмная тема, язык, размер шрифта — задаются каждым пользователем отдельно.
Настройка после запуска
- Чат с агентом: задайте
AGENT_API_URLиAGENT_API_KEY— появятся раздел «Чаты» и боковая панель с агентом на всех страницах. Список моделей и навыков агент отдаёт сам. - Агентские API (
/api/agent/*): задайтеDATA_AGENT_API_KEY— агент сможет управлять скриптами, запусками, расписанием и запросами к данным из своего чата. Для этого Pastukhov Agent должен работать на той же папкеscripts/(егоAGENT_PROJECT_PATH). - Лицензия: активируется ключом в интерфейсе (диалог лицензии) или переменной
AGENT_LICENSE. Без действующей лицензии не работают отправка сообщений агенту и управление очередью промптов; запуски, планировщик, Lakehouse и просмотр данных работают.
Хранение данных
Всё постоянное хранится в volume /data и переживает пересоздание контейнера:
/data— база приложения, ключи JWT, переопределения источников;/lakehouse— данные скриптов, по проектам и источникам: Parquet, SQLite, README, логи;/project/scripts— обычная папка скриптов: её можно копировать, версионировать в Git, отдать агенту отдельным репозиторием.
Обновление
Обновление — две команды: git pull, затем docker compose pull && docker compose up -d. Volume /data переживает обновление, миграции схемы выполняются автоматически при старте. Откат — указанием предыдущего тега образа и восстановлением резервной копии /data.