Установка
Развёртывание бота на сервере
Пошаговое руководство: копирование файлов на VPS, получение SSL-сертификата и запуск всех сервисов через единый скрипт.
Ubuntu 24.04
Python 3.12
nginx
systemd
certbot
0
Требования
ОС
Ubuntu 24.04
Python 3.12 включён по умолчанию
Доступ
Root по SSH
порт 22 или кастомный
RAM / CPU
от 1 GB RAM
1 vCPU достаточно
Домен
A-запись > IP сервера
нужен для SSL (Let's Encrypt)
1
Подключитесь к серверу по SSH
- 1Скачайте и установите PuTTY:
putty.org - 2В поле Host Name введите IP сервера, порт
22, тип SSH - 3Нажмите Open, введите логин
rootи пароль
2
Загрузите папку bot на сервер
Папку нужно разместить точно по пути /root/bot. Скрипт установки проверяет текущую директорию и завершится с ошибкой, если запустить из другого места.
Через WinSCP / FileZilla (графический интерфейс)
- 1Откройте WinSCP или FileZilla, подключитесь (протокол SFTP, порт
22) - 2В правой панели (сервер) откройте папку
/root/ - 3Перетащите папку
botс вашего ПК на сервер - 4Дождитесь завершения копирования
После загрузки проверьте структуру:
/root/bot/install_bot.sh, /root/bot/service/, /root/bot/web_admin/ и т.д.3
Запустите скрипт установки
bash
cd /root/bot bash install_bot.sh
Скрипт требует root-прав и запуска строго из
/root/bot/. Не используйте sudo bash из другой директории.4
Что скрипт спросит в процессе
Скрипт автоматически устанавливает зависимости и задаёт несколько вопросов:
Секретный путь веб-админки
Рекомендуется задать
Веб-админка будет доступна по адресу
По умолчанию предлагается
https://домен/путь/.По умолчанию предлагается
admin123 — смените на уникальный, это защита от перебора.
Сгенерировать путь:
—
Домен для SSL-сертификата
Обязательно
Введите домен, A-запись которого уже указывает на IP сервера.
Скрипт автоматически получит сертификат через Let's Encrypt и настроит nginx.
Пример:
Скрипт автоматически получит сертификат через Let's Encrypt и настроит nginx.
Пример:
bot.example.com
Если A-запись ещё не указывает на сервер — сначала настройте DNS, подождите (до 24ч), затем запускайте установку.
Токен Telegram-бота
Рекомендуется задать
Токен бота из @BotFather в Telegram.
Если пропустить (Enter) — сервис запустится, но бот работать не будет. Токен можно задать позже в веб-админке.
Формат:
Если пропустить (Enter) — сервис запустится, но бот работать не будет. Токен можно задать позже в веб-админке.
Формат:
1234567890:ABCDEFabcdef...
SUBPAGE в установку бота не входит. Страницу подписки ставят отдельно — на том же сервере или на внешнем.
Инструкция: SUBPAGE сервер.
5
Что скрипт делает автоматически
- 1Устанавливает Python 3, pip, sqlite3, nginx, certbot
- 2Получает SSL-сертификат через Let's Encrypt и копирует в
/root/cert/(продление — см. Полезное) - 3Генерирует конфиг nginx
/etc/nginx/conf.d/xuiweb.confс вашим доменом и секретным путём - 4Создаёт виртуальные окружения Python (
venv) и устанавливает зависимости для бота, веб-админки, xuiweb - 5Записывает домен и секретный путь в базу данных
/root/bot/vpn_bot.db - 6Копирует
.service-файлы из/root/bot/service/в/etc/systemd/system/и запускает:vpn-bot,vpn-webadmin,xuiweb. Полный список шаблонов и путей — Полезное → сервисные шаблоны - 7Добавляет все сервисы в автозапуск при перезагрузке сервера
6
Проверка после установки
Статус сервисов
bash
systemctl status vpn-bot vpn-webadmin xuiweb
Логи веб-админки в реальном времени
bash
journalctl -u vpn-webadmin -f
Логи бота в реальном времени
bash
journalctl -u vpn-bot -f
✓
Результат установки
Установка завершена
Веб-админка
https://ВАШ_ДОМЕН/СЕКРЕТНЫЙ_ПУТЬ/
Первый шаг
Откройте веб-админку и заполните токен бота
Дальше — SUBPAGE
Установка страницы подписки (отдельная команда, не входит в install_bot.sh)
7
Шаблоны на сервере бота
После install_bot.sh на VPS с ботом лежат такие файлы. Тексты юнитов и nginx — в Полезное.
| Откуда | Куда на сервере |
|---|---|
service/vpn-bot.service |
/etc/systemd/system/vpn-bot.service |
service/vpn-webadmin.service |
/etc/systemd/system/vpn-webadmin.service |
service/xuiweb.service |
/etc/systemd/system/xuiweb.service |
service/xuiweb.conf (образец) |
/etc/nginx/conf.d/xuiweb.conf — скрипт генерирует с доменом и секретным путём |
service/requirements.txt |
pip → /root/bot/venv и /root/bot/web_admin/venv |
service/xuiweb.txt |
pip → /root/bot/xuiweb/venv |
service/website.txt и website.service — на сервере бота, но ставятся по инструкции личного кабинета.
service/remnawave.conf — на сервере панели: /etc/nginx/conf.d/remnawave.conf.
!
Частые проблемы
certbot не получает сертификат
A-запись домена не указывает на IP сервера, или порт 80 занят другим процессом. Скрипт останавливает nginx перед certbot — убедитесь, что порт 80 свободен.
Скрипт завершается с ошибкой «не в /root/bot»
Убедитесь, что папка скопирована именно в /root/bot, а не в /root/bot/bot. Проверьте: ls /root/bot/install_bot.sh
Сервис запущен, но бот не отвечает
Скорее всего, не введён токен бота. Откройте веб-админку > Настройки > Основные > укажите токен и сохраните. Затем перезапустите: systemctl restart vpn-bot
pip install зависает или падает
bash
# Проверьте доступность PyPI curl -I https://pypi.org # Попробуйте запустить установку повторно bash install_bot.sh