---
title: "Установка Research Agent"
id: "1316"
type: "page"
slug: "install"
published_at: "2026-08-15T22:44:36+00:00"
modified_at: "2026-08-16T10:41:52+00:00"
url: "https://pastukhov.com/research-agent/install"
markdown_url: "https://pastukhov.com/research-agent/install.md"
excerpt: "Research Agent — self-hosted веб-приложение для глубоких онлайн-исследований, планирования и документирования. Разворачивается одним Docker-контейнером, все…"
---

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

[https://pastukhov.com/research-agent/install.md](https://pastukhov.com/research-agent/install.md)

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

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

 Research Agent — self-hosted веб-приложение для глубоких онлайн-исследований, планирования и документирования. Разворачивается одним Docker-контейнером, все данные хранятся в постоянном volume `/data`. Интеграция с Pastukhov Agent опциональна и включается двумя переменными окружения.

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

Достаточно любого Linux-хоста с Docker. База SQLite встроена — PostgreSQL подключается опционально через переменную окружения.

Для полной функциональности понадобятся (настраиваются в интерфейсе после запуска, не в переменных окружения):

- API-ключ хотя бы одного поискового провайдера — Serper, Keenable, Brave или Tavily (или собственный SearXNG);
- API-ключ LLM-провайдера для извлечения данных — любой OpenAI-совместимый сервис.

## Docker Compose

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

```
services:
  research-agent:
    image: maxpastukhov/research-agent:latest
    container_name: research-agent
    ports:
      - "3978:80"
    volumes:
      - research-agent-data:/data
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
    restart: unless-stopped

volumes:
  research-agent-data:
```

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

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

Все переменные опциональны — приложение запускается и работает без единой из них:

- **RESEARCH_AGENT_DB** — путь к SQLite-файлу (по умолчанию `/data/data.db`) или строка подключения PostgreSQL вида `Host=...;Port=...;Database=...`.
- **RESEARCH_AGENT_API_KEY** — включает agent API (`/api/agent/*`) для вызовов из внешних агентов: они передают ключ в заголовке `X-API-Key`. Без переменной API возвращает 503. Это отдельный механизм — не связан с JWT-аутентификацией веб-интерфейса.
- **RESEARCH_AGENT_FETCH_FOLDER** — папка для скачанного Markdown (по умолчанию `/data/fetch`). Файлы раскладываются по датам: `{folder}/yyyy-MM-dd/{domain}_{slug}_{hash8}.md`.
- **AGENT_API_URL** и **AGENT_API_KEY** — включают интеграцию с Pastukhov Agent: кнопки «Вызвать агента» и Edit with AI на страницах исследований. Задаются вместе, иначе функции скрыты. Исходящий запрос идёт в `{AGENT_API_URL}/api/remote/chats`.
- **AGENT_ERROR_REPORTING** — отправка ошибок в Sentry. Установите `0` для отключения.
- **ASPNETCORE_URLS** — порт внутри контейнера (по умолчанию `http://+:80`).

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

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

- `/data/data.db` — база SQLite (если не используется PostgreSQL);
- `/data/auth/` — ключи ASP.NET Data Protection;
- `/data/keys/` — ключ подписи JWT;
- `/data/fetch/` — скачанный Markdown, разложенный по датам.

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

Логин и пароль не задаются переменными окружения. Первый пользователь регистрируется прямо в веб-форме на странице входа: логин, пароль (от 4 символов), имя и email. Пароль хранится в виде SHA-256-хеша, сессия работает через JWT-токены.

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

Поисковые провайдеры и модели настраиваются в разделе Services веб-интерфейса — не через переменные окружения. Там задаются API-ключи Serper, Keenable, Brave и Tavily, base URL собственного SearXNG, прокси и адрес remote-browser для скачивания, а также LLM-сервисы для извлечения данных. Каждый сервис можно протестировать прямо из интерфейса. Подробнее — в разделе [Сервисы и модели](/research-agent/docs/services)
.

## Связь с Pastukhov Agent

Чтобы управлять агентом из интерфейса исследований, задайте переменные `AGENT_API_URL` и `AGENT_API_KEY` — появятся чаты агента с real-time обновлениями и кнопка «Вызвать агента» в документах. Подробнее — в разделе [Интеграция с Pastukhov Agent](/research-agent/docs/agent)
.

## Docker CLI с файлом .env

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

```
# .env
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=http://+:80
# опционально: PostgreSQL вместо встроенного SQLite
# RESEARCH_AGENT_DB=Host=postgres;Port=5432;User Id=research;Password=secret;Database=research;
# опционально: интеграция с Pastukhov Agent
# AGENT_API_URL=
# AGENT_API_KEY=
```

```
docker run -d \
  --name research-agent \
  --env-file .env \
  -p 3978:80 \
  -v research-agent-data:/data \
  --restart unless-stopped \
  maxpastukhov/research-agent:latest
```

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

[← Вернуться на главную раздела Research Agent](/research-agent)
