Не хотите читать всё это?
Просто скиньте в любой ИИ-чат (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_PASSWORD | SHA-256-хэш пароля, не сам пароль: echo -n "ваш-пароль" | sha256sum | — |
TELEGRAM_AGENT_LICENSE | лицензионный ключ (или путь к файлу с ним) | — (без чата с агентом) |
TELEGRAM_AGENT_LICENSE_ARG | лицензионный ключ (приоритетнее TELEGRAM_AGENT_LICENSE) | — |
AGENT_API_URL | адрес Pastukhov Agent для чата с агентом | — (кнопки «Вызвать агента» скрыты) |
AGENT_API_KEY | API-ключ Pastukhov Agent | — |
TELEGRAM_AGENT_BASE_PATH | размещение в подпапке первого уровня (например, /telegram) | — |
TELEGRAM_AGENT_DB | строка подключения PostgreSQL; пустое значение — встроенная SQLite | SQLite (/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.