Руководство по установке
🇷🇺 Русский | 🇬🇧 English
📜 Пошаговая инструкция
🐳 Быстрый старт: Docker (рекомендуется)
Требования: Docker и Docker Compose
git clone https://github.com/fedorabakumets/telegram-bot-builder.git
cd telegram-bot-builder
docker compose up -d
docker compose logs -f
Полезные команды:
docker compose down # Остановить
docker compose build --no-cache # Пересобрать
docker compose logs -f # Логи
✅ Готово! Приложение доступно по адресу: http://localhost:5000
Ручная установка
Требования
- Node.js ≥ 18.0.0
- PostgreSQL ≥ 17
- Redis ≥ 7
- Python ≥ 3.10 (рекомендуется 3.13, для сгенерированных ботов)
- Git
Шаг 1: Установка Git
| 🐧 Linux (Ubuntu/Debian) | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
Способ 1: Через терминал (рекомендуется): Ubuntu/Debian: Fedora/CentOS: Arch Linux: Способ 2: С сайта:
Проверка установки: |
Способ 1: Через winget (рекомендуется): Способ 2: Через установщик:
Проверка установки:
Откройте PowerShell от имени администратора (
|
Способ 1: Через Homebrew (рекомендуется): Способ 2: С сайта:
Проверка установки:
|
Шаг 2: Установка Node.js LTS
| 🐧 Linux | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
Способ 1: Через терминал (рекомендуется): Способ 2: С сайта:
|
Способ 1: Через winget: Способ 2: С сайта:
|
Способ 1: Через Homebrew: Способ 2: С сайта:
|
Шаг 3: Установка PostgreSQL
| 🐧 Linux | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
Способ 1: Через терминал: Способ 2: Официальный репозиторий:
|
Способ 1: Через winget (рекомендуется):
Проверка установки: Способ 2: С сайта:
|
Способ 1: Через Homebrew: Способ 2: С сайта:
|
Шаг 4: Установка Python 3
| 🐧 Linux | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
Способ 1: Через терминал: Способ 2: Официальный сайт:
|
Способ 1: Через winget: Способ 2: С сайта:
|
Способ 1: Через Homebrew: Способ 2: С сайта:
|
Шаг 5: Установка Redis
| 🐧 Linux (Ubuntu/Debian) | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
Способ 1: Через терминал: Проверка установки:
|
Способ 1: Memurai (рекомендуется для Windows): Memurai — нативный Windows-порт, полностью совместимый с Redis 7.2+. Устанавливается как Windows-служба и работает без WSL. После установки служба запускается автоматически. Управление: Способ 2: Через WSL2: Установите Redis внутри WSL: Способ 3: Docker: Проверка установки:
|
Способ 1: Через Homebrew: Проверка установки:
|
Шаг 6: Настройка базы данных
| 🐧 Linux | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
|
|
Шаг 7: Клонирование проекта
| 🐧 Linux | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
|
|
Шаг 8: Настройка окружения
1. Скопируйте шаблон:
| 🐧 Linux | 🏁 Windows | 🍎 macOS |
|---|---|---|
|
|
|
2. Минимальные переменные для локальной разработки:
NODE_ENV=development
PORT=5000
# PostgreSQL
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/telegram_bot_builder
# Redis (Memurai на Windows, redis на Linux/macOS)
REDIS_URL=redis://localhost:6379
# Секрет для подписи сессий
SESSION_SECRET=любая-случайная-строка-для-локалки
# Ключ входа в /admin (OpenAPI и ops-панель)
ADMIN_API_KEY=любая-случайная-строка-для-локалки
🔐 SESSION_SECRET — обязателен в production. В режиме
developmentможно указать любую строку (или вовсе опустить — будет dev-fallback с предупреждением). Но вNODE_ENV=productionприложение специально не запустится, еслиSESSION_SECRETне задан: без него любой смог бы подделать cookie сессии и войти под чужим аккаунтом. Сгенерируйте надёжное случайное значение:# Linux/macOS (или Git Bash на Windows)openssl rand -hex 32# Любая ОС с Node.jsnode -e "console.log(require('crypto').randomBytes(32).toString('hex'))"При смене
SESSION_SECRETвсе активные сессии становятся недействительными — пользователям нужно будет войти заново.
🔑 ADMIN_API_KEY — обязателен в production для доступа к админ-панели и OpenAPI-документации. В
developmentпеременную можно не задавать — будет использоваться небезопасный dev-fallbackdev-only-insecure-admin-key(с предупреждением в лог). В production безADMIN_API_KEYмаршруты/adminи/admin/docsне монтируются. Сгенерируйте отдельное значение тем же способом, что и дляSESSION_SECRET.
📖 Документация API:
Режим Адрес Доступ Development http://localhost:5000/docsПублично (удобно при разработке) Development http://localhost:5000/adminПо ключу ADMIN_API_KEY(или dev-fallback)Production https://ваш-домен/admin/loginТолько по ADMIN_API_KEYProduction https://ваш-домен/admin/docsПосле входа: Swagger, Scalar, Redoc, RapiDoc Спецификация OpenAPI:
/docs-json(dev) или/admin/openapi.json(prod, после входа).
💡 Не хотите настраивать Telegram Login? Добавьте
SKIP_AUTH=trueв.env— авторизация будет отключена в любом режиме (dev и production). Вместо Telegram виджета появится простая форма ввода ID. ПриSKIP_AUTH=trueстрогая проверкаid_tokenнаPOST /api/auth/telegramне включается.
✅ Production checklist (строгий Telegram Login):
SESSION_SECRETзадан- Telegram Client ID настроен (Setup Wizard или env)
TELEGRAM_BOT_TOKEN— для Mini App HMAC (без него Mini App login в prod недоступен)SKIP_AUTHне задан (иначе вход по ID без proof)- Документация:
docs/features/studio-auth.md,docs/api/auth.md
💡 Telegram Login настраивается через Setup Wizard при первом запуске — вручную заполнять не нужно.
Шаг 9: Установка зависимостей и запуск
1. Установка зависимостей Node.js:
npm install
2. Установка Python-зависимостей (для запуска ботов):
pip install -r requirements.txt
3. Запуск приложения:
Для разработки достаточно одной команды:
npm run dev
Она запускает сервер и клиент одновременно с автоперезагрузкой — любые изменения в коде сразу применяются без перезапуска. Открывай в браузере http://localhost:5000 и работай.
| Режим | Команда | Описание |
|---|---|---|
| 🧪 Разработка | npm run dev | Запуск с автоперезагрузкой при изменениях |
| 🚀 Продакшен | npm run build → npm run start | Сборка и запуск готовой версии |
✅ Готово! Приложение доступно по адресу: http://localhost:5000
После запуска также доступны:
- Редактор:
http://localhost:5000 - OpenAPI (dev):
http://localhost:5000/docs— hub с выбором UI - Админка:
http://localhost:5000/admin/login— ключ изADMIN_API_KEY(илиdev-only-insecure-admin-key, если переменная не задана)
Шаг 10: Настройка Telegram Login (Setup Wizard)
⚠️ Для локальной разработки (
NODE_ENV=development) этот шаг необязателен — приложение работает без авторизации. Setup Wizard нужен только при деплое в продакшен.
💡 Если вы не хотите настраивать Telegram Login вообще — добавьте
SKIP_AUTH=trueв.env. Авторизация будет отключена в любом режиме, вход по Telegram ID без верификации.
При первом открытии приложения в продакшене появится Setup Wizard — он попросит ввести данные для авторизации через Telegram.
Как получить данные из BotFather:
1. Откройте @BotFather → выберите бота → Bot Settings → Login Widget

2. Переключитесь на OIDC:

3. Подтвердите переключение:

4. Скопируйте Client ID и Client Secret:

5. Укажите Redirect URIs (адрес вашего приложения):

Для локальной разработки:
http://localhost:5000
6. Введите полученные данные в Setup Wizard:
- Client ID — числовой ID
- Client Secret — секретный ключ
- Bot Username — имя бота без @
✅ После сохранения приложение готово к работе!
Шаг 11: Подключение ИИ-агента через MCP (опционально)
💡 Этот шаг нужен, только если вы хотите подключить ИИ-агента (Kiro / Cursor / Claude Desktop) для редактирования ботов на холсте в реальном времени. Для обычной работы он не требуется.
MCP-агент идентифицируется по персональному токену (PAT) — как API-ключ у GitHub/n8n. Токен привязан к вашему аккаунту и даёт доступ только к вашим проектам.
1. Откройте проект → вкладка «Агент» → кнопка «Создать токен».
2. Задайте название (например «Kiro на ноуте») → «Создать».
3. Полный токен mcp_… показывается ровно один раз — сразу скопируйте его. В базе хранится только sha-256 хеш, повторно секрет не отобразится.
4. Там же скопируйте готовый сниппет — по умолчанию Remote URL (без клона репо). Вставьте в конфиг MCP-клиента:
{
"mcpServers": {
"botcraft-builder": {
"url": "https://<ваш-домен>/mcp",
"headers": {
"Authorization": "Bearer mcp_..."
}
}
}
}
Для локальной разработки (нужен клон репо) во вкладке «Агент» есть сниппет Stdio:
{
"mcpServers": {
"botcraft-builder": {
"command": "npm",
"args": ["run", "mcp:bot-builder"],
"cwd": "<путь к каталогу проекта>",
"env": {
"API_BASE_URL": "http://localhost:5000",
"MCP_AGENT_TOKEN": "mcp_..."
}
}
}
}
- Remote: подробности в docs/mcp/remote-http.md.
MCP_AGENT_TOKEN/ Bearer — токен из шага 3. Храните как пароль, не коммитьте.- Токен можно мгновенно отозвать на вкладке «Агент».
- Флаг сервера:
MCP_HTTP_ENABLED(по умолчанию включён).
💡 Нужно обновить проект? См. 🔄 Как обновить проект с GitHub