Установка

Развёртывание бота на сервере

Пошаговое руководство: копирование файлов на 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.
Пример: bot.example.com
⚠️
Если A-запись ещё не указывает на сервер — сначала настройте DNS, подождите (до 24ч), затем запускайте установку.
Токен Telegram-бота Рекомендуется задать
Токен бота из @BotFather в Telegram.
Если пропустить (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