Установка Telegram Agent

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

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

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

Telegram Agent — программа для управления вашим маркетингом в Telegram, которую вы запускаете на своём сервере. Разворачивается одним Docker-контейнером, все данные хранятся в постоянном volume /data. Своя база данных не нужна: встроенная SQLite работает из коробки, PostgreSQL подключается по желанию.

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

Достаточно любого Linux-хоста с Docker (например, недорогого VPS). Всё остальное уже встроено в образ:

  • веб-сервер приложения (ASP.NET Core 9 runtime);
  • база данных SQLite — работает без настройки;
  • для чата с ИИ-агентом понадобится адрес и API-ключ вашего Pastukhov Agent — но это необязательно: без них работает всё, кроме чата с агентом.

Docker Compose

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

services:
  telegram-agent-ru:
    image: maxpastukhov/telegram-agent:latest
    container_name: telegram-agent-ru
    ports:
      - "3998:80"
    volumes:
      - telegram-agent-data-ru:/data
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
      - TELEGRAM_AGENT_BRAND=pastukhov
      - TELEGRAM_AGENT_DATA=/data
      # Optional "Call Agent" integration (leave unset to hide all Agent chat surfaces):
      # - AGENT_API_URL=https://your-agent-host
      # - AGENT_API_KEY=your-agent-API-key
      # Serve from a first-level subfolder (see ../subfolder-hosting.md):
      # - TELEGRAM_AGENT_BASE_PATH=/telegram
    restart: unless-stopped
    sysctls:
      fs.inotify.max_user_watches: "524288"
      fs.inotify.max_user_instances: "512"

volumes:
  telegram-agent-data-ru:

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

Две строки sysctls повышают системные лимиты отслеживания изменений файлов — они нужны, чтобы новые сообщения из источников и посты подхватывались мгновенно, в реальном времени. Без них на больших потоках часть обновлений может не дойти до интерфейса.

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

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

ПеременнаяНазначениеПо умолчанию
TELEGRAM_AGENT_BRANDбренд и язык интерфейса: pastukhov (русский) или xedant (английский)xedant
TELEGRAM_AGENT_DATAпапка данных (в контейнере — /data)/data
TELEGRAM_AGENT_LOGINлогин первого пользователя (пароль — SHA-256-хэш в TELEGRAM_AGENT_PASSWORD)— (саморегистрация)
TELEGRAM_AGENT_PASSWORDSHA-256-хэш пароля, не сам пароль: echo -n "ваш-пароль" | sha256sum
TELEGRAM_AGENT_LICENSEлицензионный ключ (или путь к файлу с ним)— (без чата с агентом)
TELEGRAM_AGENT_LICENSE_ARGлицензионный ключ (приоритетнее TELEGRAM_AGENT_LICENSE)
AGENT_API_URLадрес Pastukhov Agent для чата с агентом— (кнопки «Вызвать агента» скрыты)
AGENT_API_KEYAPI-ключ Pastukhov Agent
TELEGRAM_AGENT_BASE_PATHразмещение в подпапке первого уровня (например, /telegram)
TELEGRAM_AGENT_DBстрока подключения PostgreSQL; пустое значение — встроенная SQLiteSQLite (/data/data.db)

Обратите внимание: TELEGRAM_AGENT_PASSWORD содержит не пароль, а его SHA-256-хэш — «отпечаток», по которому пароль восстановить нельзя. Хэш вычисляется командой echo -n "ваш-пароль" | sha256sum. При входе приложение хэширует введённый пароль и сравнивает с заданным значением.

Первая настройка выполняется прямо в интерфейсе: саморегистрация открыта, пока не создан ни один пользователь — первый зарегистрировавшийся становится администратором. Если пользователей ещё нет и логин с паролем не заданы переменными, приложение само создаст одноразовый пароль (логин code) и выведет его в консоль контейнера. Сессия входа живёт 90 дней.

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

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

  • /data/data.db — база данных SQLite (когда не используется PostgreSQL);
  • /data/sessions/ — сессии подключённых Telegram-аккаунтов;
  • /data/media/ — загруженные медиафайлы;
  • /data/keys/ — ключ подписи входа (JWT);
  • /data/auth/ — ключи защиты данных.

Volume обязателен: без него вы потеряете подключённые аккаунты, каналы и настройки при первом же docker compose down.

Первый вход

Откройте интерфейс в браузере и зарегистрируйтесь первым пользователем — вы станете администратором. Либо войдите под логином, заданным переменными окружения (в переменной — хэш, при входе вводите сам пароль) или выданным в консоли контейнера. Сразу после входа можно сменить язык и тему интерфейса.

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

Сначала подключите ботов — токены создаются в @BotFather за минуту и проверяются автоматически — и (по желанию) личные Telegram-аккаунты по номеру телефона и коду. Затем подключите каналы: через бота достаточно имени и токена, через аккаунт — выбрать из списка ваших каналов. Подробнее — в разделе Каналы.

Чат с ИИ-агентом включается переменными AGENT_API_URL и AGENT_API_KEY: появляются кнопки «Вызвать агента» на страницах канала и очереди и панель чата. Подробнее — в разделе ИИ-агент.

Лицензия

Лицензионный ключ активируется в диалоге лицензии (подвал главного экрана) или передаётся переменными TELEGRAM_AGENT_LICENSE/TELEGRAM_AGENT_LICENSE_ARG при запуске. Важное преимущество: без лицензии работает всё — каналы, публикации, расписание, очередь, источники, комментарии и аналитика. Лицензия нужна только для отправки сообщений в чат агента. Подробнее — на странице Лицензирование.

Docker CLI с файлом .env

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

# .env
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=http://+:80
TELEGRAM_AGENT_DATA=/data
TELEGRAM_AGENT_BRAND=pastukhov
TELEGRAM_AGENT_LOGIN=admin
TELEGRAM_AGENT_PASSWORD=sha256-хэш-пароля
# опционально: чат с ИИ-агентом через Pastukhov Agent
# AGENT_API_URL=
# AGENT_API_KEY=
# опционально: лицензионный ключ
# TELEGRAM_AGENT_LICENSE=
docker run -d \
  --name telegram-agent-ru \
  --env-file .env \
  -p 3998:80 \
  -v telegram-agent-data-ru:/data \
  --sysctl fs.inotify.max_user_watches=524288 \
  --sysctl fs.inotify.max_user_instances=512 \
  --restart unless-stopped \
  maxpastukhov/telegram-agent:latest

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

← Вернуться на главную раздела Telegram Agent