BotVa -- Деплой

July 11, 2026 · View on GitHub

Варіанти встановлення

ВаріантДля когоЧас
ЛокальноРозробка, macOS/Linux5 хв
Веб-інсталяторНовий VPS (DigitalOcean тощо)3-7 хв
DockerКонтейнерне середовище5 хв

Локальне встановлення

Вимоги

  • Node.js 20+ (node --version)
  • macOS або Linux
  • Git

Кроки

# 1. Клонувати
git clone https://github.com/cohe4ko/BotVa.git BotVa
cd BotVa

# 2. Встановити залежності та зібрати
./scripts/deploy.sh setup

# 3. Створити бота (CLI або через адмін-панель)
npm run new-bot -- my-bot personal-assistant --emoji 🧑‍💼 --name "Мій Бот"

# 4. Налаштувати токени
#    Відкрий bots/my-bot/.env та встанови:
#    - TELEGRAM_BOT_TOKEN  (отримати у @BotFather)
#    - ALLOWED_CHAT_ID     (надіслати /chatid боту)

# 5. Залогінитись в Claude CLI
#    Запустити адмін-панель → Термінал (/terminal)
#    та пройти логін через підписку (не API key)

# 6. Запустити
./scripts/deploy.sh start

Також можна створити бота через веб: ./scripts/deploy.sh adminhttp://localhost:3000 → Create Bot.

Веб-інсталятор

Інсталятор — крок 1 Інсталятор — крок 2

Крок 1: IP-адреса та домен сервера. Крок 2: токен бота, інтеграції

Найшвидший спосіб встановити BotVa на VPS -- через готовий веб-інсталятор:

https://botva-installer.onrender.com/

Інсталятор підключається до сервера по SSH, встановлює залежності, клонує репозиторій, створює першого бота та запускає систему. Підтримує Ubuntu 24.04 (DigitalOcean, Hetzner, будь-який VPS з 1 GB RAM).

Що потрібно:

  1. Створити VPS (наприклад, дроплет на DigitalOcean)
  2. Відкрити інсталятор, ввести IP-адресу та root-пароль
  3. Вказати Telegram-токен від @BotFather та chat ID
  4. Натиснути Install -- через 3-5 хвилин бот працює

Опціонально: домен для адмін-панелі (HTTPS через Cloudflare), Groq API Key (голосові повідомлення).

Запуск інсталятора локально
cd installer
npm install
npm start
# Відкриється http://localhost:3456

Також можна розгорнути як standalone сервіс:

  • Render -- render.yaml Blueprint (безкоштовно)
  • Railway -- auto-detect Node.js
  • Docker -- docker build -t botva-installer . && docker run -p 3456:3456 botva-installer

Docker

cd installer
docker build -t botva-installer .
docker run -p 3456:3456 botva-installer

Для деплою самого BotVa в Docker -- використовуйте веб-інсталятор або ручне встановлення на VPS.

Конфігурація

Кожен бот має свій .env файл в bots/<name>/.env. Шаблон: .env.example.

Обов'язкові

ЗміннаОпис
TELEGRAM_BOT_TOKENТокен від @BotFather
ALLOWED_CHAT_IDТвій Telegram chat ID

Google API

ЗміннаОпис
GOOGLE_API_KEYДля генерації зображень (Gemini) та Stagehand
GOOGLE_OAUTH_CLIENT_IDGoogle Workspace (Calendar, Gmail, Drive)
GOOGLE_OAUTH_CLIENT_SECRETGoogle Workspace
USER_GOOGLE_EMAILEmail акаунту Google

Голос

ЗміннаЗа замовчуваннямОпис
GROQ_API_KEY--Ключ Groq для STT (безкоштовно: console.groq.com)
GROQ_STT_MODELwhisper-large-v3Модель розпізнавання
TTS_RATE+30%Швидкість синтезу мовлення
TTS_VOICE_UKuk-UA-OstapNeuralГолос для української
TTS_VOICE_ENen-US-AndrewNeuralГолос для англійської
TTS_VOICE_RUru-RU-DmitryNeuralГолос для російської

Моделі

ЗміннаЗа замовчуваннямОпис
STAGEHAND_MODELgoogle/gemini-2.5-flashМодель для AI-браузера
IMAGEN_MODELgemini-3.1-flash-image-previewМодель генерації зображень

Адмін-панель

ЗміннаЗа замовчуваннямОпис
ADMIN_PORT3000Порт адмін-панелі
ADMIN_TOKEN--Токен авторизації (для standalone режиму)
ADMIN_HOST--Публічний URL (наприклад https://admin.example.com)

Пам'ять

ЗміннаЗа замовчуваннямОпис
NIGHT_OWL_HOUR4Година "переходу дня" (для нічних сов)
USER_PREVIEW_LEN200Довжина preview в щоденному логу
ASSISTANT_PREVIEW_LEN300Довжина preview відповіді
MIN_MSG_LEN_TO_SAVE20Мін. довжина для запису в пам'ять
MAX_ASSISTANT_MEMORY_LEN500Макс. довжина запису відповіді

Agent

ЗміннаЗа замовчуваннямОпис
AGENT_WATCHDOG_WARN_SECONDS60Попередження при неактивності агента
AGENT_WATCHDOG_TIMEOUT_MS600000Таймаут агента (10 хв)
SANDBOX_ENABLED0Bash агента в SDK-пісочниці з маскуванням API-ключів

Rich messages та прогрес

ЗміннаЗа замовчуваннямОпис
RICH_MESSAGES_ENABLED1Структуровані rich-відповіді (Bot API 10.1); 0 — старий HTML/chunked шлях
RICH_DRAFT_ENABLED0Стрімінг чернетки rich-повідомлень; вмикається per-chat у /settings або цим env
RICH_DRAFT_THROTTLE_MS2000Інтервал оновлення чернетки, мс (мінімум 1000)
PROGRESS_FULL_LOG1Повний лог прогресу ланцюжком повідомлень; 0 — старе одне повідомлення з вікном 20 рядків
GUEST_MODE_ENABLEDtrueГостьовий режим (Bot API 10.0): відповіді на згадки в чатах, де бот не учасник

Інтеграції

ЗміннаОпис
HA_URLHome Assistant URL
HA_TOKENHome Assistant токен

Email (SMTP)

ЗміннаОпис
SMTP_HOSTSMTP сервер (наприклад smtp.gmail.com)
SMTP_PORTПорт (наприклад 587)
SMTP_USERЛогін
SMTP_PASSПароль або App Password
SMTP_FROMВідправник (Name <email>)
SMTP_SIGNATUREПідпис у markdown

Публікація файлів

ЗміннаОпис
PUBLISH_SSH_HOSTSSH хост для завантаження
PUBLISH_REMOTE_DIRДиректорія на сервері
PUBLISH_BASE_URLПублічний URL

Логування

ЗміннаЗа замовчуваннямОпис
LOG_LEVELinfoРівень: debug, info, warn, error
TELEGRAPH_ENABLEDtrueTelegraph для довгих повідомлень

Crash-нотифікації (кореневий .env)

ЗміннаОпис
NOTIFY_BOT_TOKENТокен бота для сповіщень
NOTIFY_CHAT_IDChat ID для сповіщень

Структура бота

bots/<name>/
├── .env                         # Токени та API-ключі
├── CLAUDE.md                    # Інструкції для AI (збирається з workspace-files/)
├── workspace-files/             # Модульні workspace файли
│   ├── IDENTITY.md              # Ім'я, emoji, опис ролі
│   ├── SOUL.md                  # Душа: правила, інструменти, стиль (read-only)
│   ├── ROLE.md                  # Спеціалізація, сценарії (read-only)
│   ├── TOOLS.md                 # Таблиця "коли який інструмент" (read-only)
│   ├── USER.md                  # Профіль користувача (бот оновлює)
│   └── MEMORY.md                # Курована пам'ять (бот оновлює)
├── knowledge/                   # Знання, профілі, diary
│   ├── user-profile.md          # Базовий профіль користувача
│   ├── KEY_EVENTS.md            # Важливі події
│   └── memories/                # Щоденні логи (YYYY-MM-DD.md)
└── store/
    └── botva.db                 # SQLite база (сесії, пам'ять, usage)

Що НЕ в git (потрібно копіювати вручну)

ШляхЗміст
bots/*/Конфіги ботів, .env, знання, бази
workspace/Згенеровані зображення, презентації
.envКореневий env (crash watchdog)
.mcp.jsonMCP сервери з API токенами

MCP-сервери

Збираються автоматично при ./scripts/deploy.sh setup. Конфігурація:

  • Кореневий: .mcp.json (спільні MCP-сервери)
  • Per-bot: bots/<name>/.mcp.json (специфічні для бота)

Вбудовані MCP-сервери в mcp-servers/:

  • colleague -- міжботова комунікація (Unix-сокети)
  • manager -- координація менеджером

Зовнішні (підключаються через env-змінні):

  • google-workspace -- Calendar, Gmail, Drive
  • home-assistant -- розумний дім
  • stagehand -- AI-браузер
  • playwright-remote -- headless Chrome
  • miro -- дошки, діаграми

Управління

deploy.sh

./scripts/deploy.sh setup      # Встановити залежності, зібрати
./scripts/deploy.sh start      # Запустити всі боти
./scripts/deploy.sh stop       # Зупинити всі боти
./scripts/deploy.sh restart    # Перезапустити
./scripts/deploy.sh build      # Перезібрати TypeScript + MCP
./scripts/deploy.sh status     # Показати статус
./scripts/deploy.sh backup     # Створити бекап
./scripts/deploy.sh restore    # Відновити з бекапу

npm scripts

npm run build       # Зібрати TypeScript
npm start           # Запустити (після збірки)
npm run dev         # Dev-режим (tsx)
npm run admin       # Адмін-панель
npm run new-bot     # Створити бота
npm run delete-bot  # Видалити бота
npm run status      # Статус ботів
npm run typecheck   # Перевірка типів
npm test            # Тести

З Telegram

  • /admin -- запустити адмін-панель (автостоп через 20 хв)
  • /admin stop -- зупинити адмін-панель

Автозапуск

macOS (launchd)

./scripts/deploy.sh launchd

Створює LaunchAgent, який автоматично запускає ботів при старті системи.

Linux (systemd)

# Створити сервіс (виконується при ./scripts/deploy.sh setup на Linux)
sudo systemctl enable botva
sudo systemctl start botva

# Перевірити статус
sudo systemctl status botva

Бекап та відновлення

Що бекапити

tar czf botva-backup.tar.gz \
  bots/ \
  workspace/ \
  .mcp.json \
  .env

Ці файли НЕ зберігаються в git -- вони містять токени, персональні дані та бази.

Відновлення

cd BotVa
tar xzf botva-backup.tar.gz
./scripts/deploy.sh setup
./scripts/deploy.sh start

Також доступний бекап через адмін-панель (розділ Backup) з SHA256-верифікацією.

Міграція на інший сервер

  1. На старому сервері: tar czf botva-backup.tar.gz bots/ workspace/ .mcp.json .env
  2. На новому: клонуй репо, розпакуй бекап
  3. ./scripts/deploy.sh setup && ./scripts/deploy.sh start