Установка Прокси-агента

Не хотите читать всё это?

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

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

«Прокси-агент» — это одна точка входа ко всем моделям, которыми пользуется ваша команда. Программа живёт на вашем сервере и разворачивается одним контейнером Docker, а рядом нужна база PostgreSQL — это единственная обязательная настройка. После установки все ваши программы обращаются не к десятку поставщиков по отдельности, а к адресу вашего сервера: ключи поставщиков, лимиты расхода и журнал запросов остаются у вас, а не расходятся по компьютерам сотрудников.

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

  • Сервер или компьютер с Docker — подойдёт Windows, Linux или macOS, а для постоянной работы достаточно недорогого сервера.
  • База PostgreSQL — отдельная и обязательная. Внутри контейнера базы нет: без строки подключения приложение не запустится. Проще всего поднять базу рядом в том же файле запуска, как показано ниже.
  • Один свободный порт для интерфейса и запросов (в примерах — 5000) и, если понадобится прокси для обычного трафика, ещё один отдельный порт (5001).
  • По желанию — адрес и ключ вашего Pastukhov Agent: без них работает всё, кроме чата с ИИ-агентом внутри продукта.

Установка через Docker Compose

Создайте файл compose.yml с таким содержимым. Здесь две службы: база и само приложение.

services:
  postgres:
    image: postgres:17
    container_name: proxyagent-postgres
    environment:
      - POSTGRES_DB=proxyagent
      - POSTGRES_USER=proxyagent
      - POSTGRES_PASSWORD=смените-этот-пароль
    volumes:
      - proxyagent-db:/var/lib/postgresql/data
    restart: unless-stopped

  proxyagent:
    image: maxpastukhov/proxy-agent:main-latest
    container_name: proxyagent
    ports:
      - "5000:80"
      # раскомментируйте, если нужен прокси для обычного трафика (HTTP + SOCKS5)
      # - "5001:5001"
    volumes:
      - proxyagent-state:/tmp/proxyagent
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - PROXYAGENT_DATABASE=Host=postgres;Port=5432;User Id=proxyagent;Password=смените-этот-пароль;Database=proxyagent;
      - PROXYAGENT_ADMIN_LOGIN=admin
      - PROXYAGENT_ADMIN_PASSWORD=<сумма SHA-256 от пароля, строчными буквами>
      - JWT_SECRET_KEY=<случайная строка не короче 32 знаков>
    restart: unless-stopped

volumes:
  proxyagent-db:
  proxyagent-state:

Образ maxpastukhov/proxy-agent:main-latest — русская сборка с русским интерфейсом. Затем запустите:

docker compose up -d

Интерфейс появится на порту 5000: http://<адрес-сервера>:5000. Пароль базы замените на свой и подставьте его же в строку PROXYAGENT_DATABASE — это одна и та же пара значений. Лицензионный ключ в файле не нужен: встроенной проверки лицензии в продукте нет.

Запуск без Compose

Можно обойтись и одной командой docker run — базу в этом случае поднимите отдельно:

docker run -d \
  --name proxyagent \
  -p 5000:80 \
  -v proxyagent-state:/tmp/proxyagent \
  -e PROXYAGENT_DATABASE="Host=адрес-базы;Port=5432;User Id=proxyagent;Password=ваш-пароль;Database=proxyagent;" \
  -e PROXYAGENT_ADMIN_LOGIN=admin \
  -e PROXYAGENT_ADMIN_PASSWORD=ваша-сумма-sha256 \
  -e JWT_SECRET_KEY=ваша-случайная-строка-не-короче-32-знаков \
  --restart unless-stopped \
  maxpastukhov/proxy-agent:main-latest

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

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

Настройки задаются переменными окружения — их прописывают один раз в compose.yml и меняют без правки кода. Почти все имена начинаются с PROXYAGENT_.

ПеременнаяЧто задаётПо умолчанию
PROXYAGENT_DATABASEстрока подключения к PostgreSQL — единственная обязательная настройканет; без неё приложение не запускается
PROXYAGENT_ADMIN_LOGIN, PROXYAGENT_ADMIN_PASSWORDвход администратора; пароль — сумма SHA-256, записанная строчными буквами (в форме входа есть встроенный генератор)не заданы — показывается «первоначальная настройка»
JWT_SECRET_KEYподпись сессий входа (не короче 32 знаков); с ним сессии переживают пересоздание контейнерагенерируется и сохраняется в файле
PROXYAGENT_AGENT_API_URL, PROXYAGENT_AGENT_API_KEYчат с ИИ-агентом внутри продукта (подключение Pastukhov Agent); читаются один раз при запускене заданы — чат скрыт
PROXYAGENT_BASE_PATHразмещение в первой подпапке (например, /proxy)не задано — работа в корне домена
PROXYAGENT_TUNNEL_PORTпорт прокси-службы, если в настройках не сохранён свой5001
PROXYAGENT_ANONYMIZER_DBпапка хранилища скрытия секретов: правила, соответствия и события утечек/tmp/proxyagent/anonymizer
PROXYAGENT_CLICKHOUSE_URLотправка статистики в ClickHouse; при заданном значении в аналитике появляется кнопка восстановления пропущенных днейне задано — выключено
ASPNETCORE_URLSадрес прослушивания внутри контейнераhttp://+:80
ASPNETCORE_ENVIRONMENTProduction включает защиту и строгую страницу ошибокProduction

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

Деловые данные — модели, ключи доступа, журналы запросов, журнал обычного трафика, настройки, расходы — лежат в вашей базе PostgreSQL и переживают что угодно. Всё остальное живёт во временной папке контейнера /tmp/proxyagent:

  • сохранённые «размышления» моделей DeepSeek — заполняются заново по мере работы;
  • auth/ — ключи защиты данных;
  • appdata/.jwt-secret — файл подписи сессий входа;
  • хранилище скрытия секретов — правила, соответствия и события утечек.

Если эту папку не подключить томом, при пересоздании контейнера произойдёт вот что: «размышления» заполнятся заново, хранилище секретов обнулится (а значит, уже отправленные в модель обозначения перестанут возвращаться на место), а все выданные сессии входа перестанут действовать. Поэтому в примере выше подключён том proxyagent-state, а JWT_SECRET_KEY задан постоянным значением — тогда вход не придётся выполнять заново.

Первый вход

Откройте интерфейс в браузере. Логин и пароль администратора задаются переменными PROXYAGENT_ADMIN_LOGIN и PROXYAGENT_ADMIN_PASSWORD; если они не заданы, продукт честно сообщает о «первоначальной настройке» и работать не даст. В переменной хранится не сам пароль, а его необратимая сумма SHA-256 — при входе вы вводите пароль, приложение считает сумму от введённого и сравнивает с заданной. Готовую сумму удобно получить встроенным генератором прямо в форме входа. Сессия входа живёт 90 дней, и переменные читаются на каждом запросе, поэтому пароль можно поменять без перезапуска контейнера.

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

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

  1. Заведите первую модель в разделе «Ключи → Модели»: публичное имя, адрес и ключ поставщика, цены за миллион «порций текста» (токенов). Подробнее — в разделе Модели и цены.
  2. Нажмите «Проверить» у модели — продукт сходит к поставщику настоящим путём и скажет, отвечает ли связь.
  3. Создайте ключ доступа для первой программы. Ключ показывается ровно один раз — сохраните его сразу.
  4. Подключите программу: вместо адреса поставщика укажите адрес вашего сервера, вместо ключа поставщика — ключ доступа. Как именно — в разделе Подключение программ.
  5. Отправьте первый запрос и убедитесь, что он появился в журнале запросов: там видно модель, ключ, токены и стоимость.

Прокси для обычного трафика

Кроме работы с моделями продукт умеет быть обычным прокси-сервером для браузеров и программ, не связанных с ИИ. По умолчанию эта возможность выключена: включите её в «Настройках», и порт начнёт слушать.

  • Порт берётся из настроек, а если там пусто — из переменной PROXYAGENT_TUNNEL_PORT (по умолчанию 5001).
  • Вход по ключу доступа включён по умолчанию: без ключа в интернет никто не выйдет. Отключать проверку стоит только внутри закрытой сети.
  • Если нужен канал связи через VPN, контейнеру потребуются права NET_ADMIN и установленный WireGuard внутри образа: готовый образ их не содержит.

Такой трафик считается в объёме, но не в деньгах и не расходует лимиты ключей. Подробнее — в разделе Прокси для обычного трафика.

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

Если у вас несколько серверов, удобнее ставить продукт из Pastukhov MultiAgent: он сам поднимает контейнер, выдаёт постоянный адрес и HTTPS, подключает базу. «Прокси-агент» есть в каталоге продуктов (порт 6040), база прописывается той же переменной PROXYAGENT_DATABASE, а связанный Pastukhov Agent подключается к чату. Подробнее о самом MultiAgent — на странице MultiAgent.

Лицензия и обновления

Скажем честно: ключ активации в продукт не встроен — он работает сразу после установки и сам ничего не ограничивает. Лицензия — это право использования, 12 месяцев бесплатных обновлений и поддержка. Цены те же, что у соседних продуктов: персональная — 19 700 ₽, корпоративная — 49 700 ₽, сервисная — 97 000 ₽. Подробнее — на странице Лицензирование.

Дальше стоит заглянуть в Начало работы — там коротко о том, как продукт устроен изнутри.

← Вернуться на главную раздела Прокси-агент