Установка

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

Пошаговое руководство: копирование файлов на 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 (страницы подписки) На выбор
Вариант 1 — установить SUBPAGE на этот же сервер. Скрипт скопирует папку /root/bot/subpage в /root/subpage и запустит его установку.

Вариант 2 — 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-файлы в systemd и запускает сервисы: 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 https://ДОМЕН_SUBPAGE/sub/<uuid>
Первый шаг Откройте веб-админку и заполните токен бота
!

Частые проблемы

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