---
title: "Установка Data Agent"
id: "1708"
type: "page"
slug: "install"
published_at: "2026-09-04T10:17:31+00:00"
modified_at: "2026-09-05T01:25:59+00:00"
url: "https://pastukhov.com/agents/data/install"
markdown_url: "https://pastukhov.com/agents/data/install.md"
excerpt: "Data Agent — веб-приложение для сбора и подготовки данных, которое разворачивается на вашем сервере одним…"
---

# Установка Data Agent

[https://pastukhov.com/agents/data/install.md](https://pastukhov.com/agents/data/install.md)

Не хотите читать всё это? Просто скиньте в любой ИИ-чат (Claude, ChatGPT и т.д.) ссылку на [https://pastukhov.com/agents/data/install.md](https://pastukhov.com/agents/data/install.md)
 или на [https://pastukhov.com/llms.txt](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`.

[← Вернуться на главную раздела Data Agent](/agents/data)
