Если репозитория нет или код лежит только на компьютере, бота можно задеплоить файлом: упакуйте проект в .zip или .tar.gz и загрузите его через дашборд. Сборка и запуск такие же, как при деплое из Git: Docker-образ, контейнер, логи.
Сейчас функция работает на одной тестовой ноде. Остальные ноды подключим позже. Доступна на тарифах Базовый и Pro.
В блоке «Интерфейс» включите «Загрузка бота из архива».
Сохраните настройки.
На бесплатном тарифе переключатель можно включить, но мастер загрузки отправит на страницу тарифов.
Шаг 2. Кнопка на дашборде
После включения на странице «Мои боты» появляется фиолетовая кнопка «Загрузить из архива» рядом с «Добавить бота».
Нажмите её — откроется мастер из трёх шагов: Архив → Настройка → Деплой.
Шаг 3. Подготовить архив
Упакуйте папку с кодом бота, а не случайный набор файлов с рабочего стола.
Что должно быть внутри
Язык
Минимум в архиве
Python
main.py (или другой главный файл) и requirements.txt
Node.js
index.js (или другой главный файл) и package.json
Go
main.go и go.mod
Если код лежит во вложенной папке (my-bot/main.py), либо укажите путь в поле «Главный файл», либо положите в корень архива файл bothost.json (см. ниже).
Если в архиве одна корневая папка, Bothost поднимет её содержимое наверх автоматически. Несколько папок в корне не схлопываются.
Что не класть в архив
Эти каталоги только раздувают файл и мешают сборке:
venv, .venv, __pycache__
node_modules
.git
.idea, .vscode
большие датасеты, видео, дампы БД
Зависимости ставятся на сервере из requirements.txt / package.json / go.mod.
Опционально: bothost.json
В корне проекта можно положить bothost.json, чтобы явно задать точку входа и язык:
Поле «Главный файл» в мастере перекрывает main из файла, если вы его заполнили.
Шаг 4. Мастер загрузки
1. Архив
Перетащите файл в зону загрузки или выберите его с диска. Поддерживаются .zip и .tar.gz (в том числе .tgz), максимум 100 МБ. Нажмите «Далее».
2. Настройка бота
Поле
Обязательно
Что указать
Название
Да
Имя бота в панели
Токен бота
Да
Токен от @BotFather или другой платформы
Язык / шаблон
Нет
Авто — определение по файлам. Или вручную: aiogram, Python, Telegraf, Node.js, Go
Главный файл
Нет
Например main.py или src/bot.js. Пустое поле — автодетект или bothost.json
3. Деплой
Нажмите «Задеплоить» и не закрывайте страницу, пока архив грузится на сервер. Дальше Bothost:
Распаковывает архив.
Определяет язык.
Генерирует Dockerfile (если своего нет).
Собирает Docker-образ.
Создаёт контейнер и запускает бота.
Прогресс и лог сборки видны на третьем шаге. После успеха можно перейти на дашборд или загрузить ещё одного бота.
Как обновить бота новым архивом
Для бота, который уже создан из файла, на карточке есть кнопка залить новый архив (иконка загрузки файла). Git-кнопка «Обновить» у таких ботов не показывается.
При перезаливке сохраняются:
ID бота, токен, переменные окружения;
домен и порт;
данные в /app/data.
Пересобирается только код из нового архива. Бот должен остаться «архивным»: перезалить zip в бота, который создан из Git, нельзя.
«Загрузка из архива доступна только на тарифах Базовый и Pro»
Нужен платный тариф. Проверьте оплату на Мои платежи, если тариф не активировался.
«Архив слишком большой (максимум 100 МБ)»
Уберите node_modules, venv, .git и тяжёлые файлы, затем упакуйте заново.
«Поддерживаемые форматы: .zip, .tar.gz»
Расширение должно быть .zip, .tar.gz или .tgz. Обычный .rar и .7z не подойдут.
«Нода для деплоя из архива недоступна»
Тестовая нода временно не принимает загрузки. Подождите или напишите в @bothostru.
Бот не стартует после сборки
Чаще всего неверный главный файл или нет зависимостей в requirements.txt / package.json. Укажите путь вручную и смотрите справочник ошибок и главный файл.
Лимит ботов
На Базовом — 5 ботов, на Pro — 20. Если лимит достигнут, мастер покажет предупреждение до загрузки файла.