---
title: "Установка Агента интерфейсов"
id: "1990"
type: "page"
slug: "install"
published_at: "2026-09-20T16:07:57+00:00"
modified_at: "2026-09-21T00:00:47+00:00"
url: "https://pastukhov.com/agents/ui/install"
markdown_url: "https://pastukhov.com/agents/ui/install.md"
excerpt: "Агент интерфейсов — программа, которая проверяет ваш сайт, приложение или внутреннюю систему. Живёт она на…"
---

# Установка Агента интерфейсов

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

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

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

 Агент интерфейсов — программа, которая проверяет ваш сайт, приложение или внутреннюю систему. Живёт она на вашем сервере и разворачивается одним контейнером Docker, а постоянные данные лежат в томе `/data`. Отдельную базу ставить не нужно: встроенная работает сразу, а PostgreSQL подключается по желанию. Ещё понадобится Chrome с дополнением на том компьютере, который будет выполнять проверки.

## Что понадобится

- Сервер или компьютер с Docker — подойдёт Windows, Linux или macOS, а для постоянной работы достаточно недорогого сервера.
- Около 2 ГБ памяти и постоянное хранилище под данные (том): без него всё пропадёт при первом же пересоздании контейнера.
- **Chrome с нашим дополнением на компьютере, который будет выполнять проверки.** Это отдельное требование, о котором легко забыть: сервер сам страницы не открывает. Если хотите запускать тесты по расписанию, этот компьютер должен быть включён в нужные моменты — проще всего держать его включённым постоянно.
- По желанию — адрес и ключ вашего Pastukhov Agent: без него всё работает, кроме разбора замечаний, создания действий и автоисправления (подробнее об этом — ниже).

## Установка в один контейнер

Создайте файл `compose.yml` с таким содержимым:

```
services:
  uiagent-ru:
    image: maxpastukhov/ui-agent:latest
    container_name: uiagent-ru
    ports:
      - "3979:80"
    volumes:
      - uiagent-data-ru:/data
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
      - UI_AGENT_BRAND=pastukhov
      - UI_AGENT_DATA=/data
# UI_AGENT_BASE_PATH=/ui  # serve from a first-level subfolder (see ../subfolder-hosting.md)
    restart: unless-stopped
    sysctls:
      fs.inotify.max_user_watches: "524288"
      fs.inotify.max_user_instances: "512"

volumes:
  uiagent-data-ru:
```

Затем запустите:

```
docker compose up -d
```

После запуска интерфейс будет доступен на порту `3979`: `http://<адрес-сервера>:3979`. Строка `UI_AGENT_BRAND=pastukhov` включает русский язык и оформление бренда, а две строки `sysctls` повышают системные лимиты отслеживания изменений файлов — без них часть правок в папке проекта может не подхватываться на ходу.

В этом файле постоянным томом объявлен только `/data`. Папку проектов — ту, где лежат правила, действия и тесты, — стоит разместить в томе тоже, иначе при пересоздании контейнера она пропадёт. Проще всего задать ей путь внутри данных: добавьте в раздел `environment` строку `UI_AGENT_PROJECTS_FOLDER=/data/projects`. Второй вариант — подключить отдельный том: `- uiagent-projects-ru:/project/projects` и объявить его рядом с `uiagent-data-ru`.

## Запуск без Compose

Можно обойтись и одной командой `docker run`:

```
docker run -d \
  --name uiagent-ru \
  -p 3979:80 \
  -v uiagent-data-ru:/data \
  -e UI_AGENT_BRAND=pastukhov \
  -e UI_AGENT_DATA=/data \
  --sysctl fs.inotify.max_user_watches=524288 \
  --sysctl fs.inotify.max_user_instances=512 \
  --restart unless-stopped \
  maxpastukhov/ui-agent:latest
```

Остальные переменные окружения удобно передать файлом через флаг `--env-file .env` — так их проще менять, не переписывая длинную команду.

## Основные переменные окружения

Настройки задаются переменными окружения — их прописывают один раз в `compose.yml` и меняют без правки кода. Почти все имена начинаются с `UI_AGENT_`; исключения — подключение к агенту (`AGENT_API_URL`, `AGENT_API_KEY`) и вход через общий прокси (`SSO_PROXY_TOKEN`).

| Переменная | Что задаёт | По умолчанию |
| --- | --- | --- |
| UI_AGENT_BRAND | бренд и язык: pastukhov (русский) или xedant (английский) | xedant |
| UI_AGENT_DATA | папка постоянных данных (в контейнере — /data) | /data |
| UI_AGENT_API_KEY | секретный ключ, который охраняет связь с дополнением Chrome, внешний доступ к проблемам, адрес живой страницы и команды для модели; без него эти адреса отвечают «не настроено», с неверным — отказ | — (не настроено) |
| AGENT_API_URL | адрес вашего Pastukhov Agent: через него работают чат, разбор замечаний, создание действий и автоисправление | — (чат скрыт) |
| AGENT_API_KEY | ключ доступа к вашему Pastukhov Agent | — |
| UI_AGENT_PUBLIC_URL | адрес этого сервера, по которому модель скачивает снимки и открывает живую страницу; если не задан, ссылки на снимок в запросах к модели не будет | — |
| UI_AGENT_PROJECTS_FOLDER | папка, в которой лежат проекты с правилами, действиями и тестами | /project/projects |
| UI_AGENT_DB | база данных: строка подключения PostgreSQL; пустое значение — встроенная SQLite | SQLite (/data/data.db) |
| UI_AGENT_BASE_PATH | размещение в подпапке первого уровня (например, /ui) | — (работа в корне домена) |
| UI_AGENT_LOGIN | логин готового администратора; вместе с паролем создаёт пользователя при старте | — (первый зарегистрировавшийся) |
| UI_AGENT_PASSWORD | строчная сумма SHA-256 пароля, не сам пароль | — |
| UI_AGENT_SSL | свой самоподписанный HTTPS: auto — включить | — (только HTTP) |
| UI_AGENT_SSL_PORT | порт для HTTPS (по умолчанию — следующий за портом HTTP) | — |
| UI_AGENT_SSL_DOMAINS | имена через запятую, на которые выписывается сертификат | — |
| UI_AGENT_ERROR_REPORTING | 0 — выключить отправку сведений об ошибках | — (адрес приёма не задан, ничего не отправляется) |
| SSO_PROXY_TOKEN | вход через общий прокси с другими продуктами на том же сервере | — (обычный вход по логину) |

В `UI_AGENT_PASSWORD` попадает не пароль, а его сумма — «отпечаток», по которому пароль не восстановить. Получить её можно командой `printf '%s' 'вашпароль' | sha256sum` и вставить в переменную; при входе приложение считает сумму от введённого пароля и сравнивает с заданной. Так же устроен и ключ `UI_AGENT_API_KEY` — он хранится в открытом виде намеренно: интерфейс показывает его, чтобы вы могли скопировать ключ в настройки дополнения.

## Где хранятся данные

Постоянные данные живут в томе `/data` и переживают пересоздание контейнера:

- `/data/data.db` — база данных (когда не используется PostgreSQL);
- `/data/auth/` — ключи, которыми подписываются сессии входа;
- `/data/.pastukhov/` — лицензия (у бренда `xedant` папка называется `.xedant`);
- `/data/logs/addon-errors.log` — журнал ошибок дополнения Chrome, полезный при разбирательствах;
- папка проектов (по умолчанию `/project/projects`) — снимки, замечания, правила, действия, тесты и знания проекта.

Динамика — снимки экранов, запуски, проблемы и расписания — живёт в базе. А вот правила, действия и тесты лежат обычными файлами в папке проекта, и это важное преимущество: папку можно целиком положить в git (хранилище версий файлов), видеть историю правок и перенести проект на другой сервер простым копированием. Комиты в git делает человек — сервер сам их не создаёт и ничего не отправляет в внешние хранилища.

## Первый вход

Откройте интерфейс в браузере. Пока в базе нет ни одного пользователя, форма регистрации открыта сама — первый зарегистрировавшийся становится администратором. Если логин и пароль заданы переменными `UI_AGENT_LOGIN` и `UI_AGENT_PASSWORD`, входите под ними (в переменной хранится сумма, при входе вводите сам пароль). Сессия входа живёт 90 дней, то есть заново вводить пароль каждый день не придётся. Когда рядом работают другие продукты, вход может идти через общий прокси — он настраивается переменной `SSO_PROXY_TOKEN`.

## Что сделать после запуска

Когда интерфейс открылся, до первой проверки остаётся несколько шагов:

1. Задайте ключ дополнения — переменную `UI_AGENT_API_KEY`. По нему дополнение Chrome подключается к серверу, а модель получает доступ к живой странице.
2. Создайте проект: название, базовый адрес сайта и часовой пояс. Проект — это папка, в которой будут копиться правила, действия и тесты.
3. Подключите Pastukhov Agent — укажите `AGENT_API_URL` и `AGENT_API_KEY`. После этого появляются чат с ИИ-агентом, разбор замечаний, создание действий словами и автоисправление.
4. Установите дополнение Chrome — установкой в один клик, как описано ниже. Без него страницы не снимать и проверки не выполнять.
5. Снимите первый экран и напишите замечание словами: «кнопка не видна на тёмном фоне». Отправьте замечание агенту — он превратит его в правило, и дальше это замечание будет находить обычный код.

Подробнее о первых шагах — в разделе [Начало работы](/agents/ui/docs/getting-started)
.

## Дополнение Chrome: установка в один клик

Дополнение ставится из самого продукта. В интерфейсе откройте «Настройки → Тестирование UI → Установка в один клик» и выберите папку на диске — сервер запишет туда папку `ui-agent-addon` с уже готовой привязкой (адрес сервера и ключ), настраивать ничего вручную не нужно. Дальше Chrome попросит три привычных шага:

1. Откройте `chrome://extensions`.
2. Включите «Режим разработчика» в правом верхнем углу.
3. Нажмите «Загрузить распакованное» и выберите папку `ui-agent-addon`, которую создал сервер.

Скажем честно: **дополнение приватное, в каталоге Chrome его нет.** Так сделано намеренно — проверки не должны проходить проверку каталога, иначе каждое новое правило пришлось бы ждать неделями. Поэтому при обновлении сервера папку перезаписывают из того же диалога («Обновление в один клик») и нажимают кнопку «Обновить» у расширения на странице `chrome://extensions`. Если дополнение устанавливалось другим способом, его можно привязать вручную: указать адрес сервера и ключ на странице настроек дополнения и нажать «Проверить связь».

## Установка через Pastukhov MultiAgent

Если у вас несколько серверов, удобнее ставить продукт из Pastukhov MultiAgent: он сам поднимает контейнер, выдаёт постоянный адрес и HTTPS, подключает базу. Для Агента интерфейсов в каталоге есть готовый шаблон (порт 6070) — установка сводится к одному нажатию, а переменные `UI_AGENT_SSL`, `UI_AGENT_DB` и `UI_AGENT_API_KEY` MultiAgent подставит сам. Подключение связанного агента в шаблоне пока использует имена переменных, которые надо сверить с продуктом: в самом Агенте интерфейсов это `AGENT_API_URL` и `AGENT_API_KEY` (без приставки `UI_AGENT_`). Подробнее о самом MultiAgent — на странице [MultiAgent](/agents/multiagent)
.

## Лицензия

Лицензионный ключ активируется в диалоге лицензии в интерфейсе или передаётся переменной `AGENT_LICENSE` при запуске. Готовой лицензии в образе нет: свежий контейнер стартует без неё. Без лицензии работает почти всё — проекты, экраны, замечания, правила, действия, тесты, запуски, расписание, проблемы, автоисправление и сводка внимания. Лицензия нужна только для одной вещи: чтобы отправить сообщение агенту в чате. Пробный период — 30 дней; персональная лицензия стоит 19 700 ₽, корпоративная — 49 700 ₽, сервисная — 97 000 ₽. Подробнее — на странице [Лицензирование](/agents/ui/license)
.

[← Вернуться на главную раздела Агент интерфейсов](/agents/ui)
