NexNode
Все гайды
Боты и автоматизацияНовичок

Как разместить Telegram-бота на сервере, чтобы он работал 24/7

Пошагово переносим Python-бота с домашнего компьютера на VPS: установка, автозапуск через systemd, логи и перезапуск после сбоя.

11 мин чтенияобновлено 29 июля 2026 г.

Бот, запущенный на домашнем компьютере, живёт ровно до того момента, пока вы не закроете ноутбук. Отключился интернет, ушла Windows в обновление, кот дёрнул провод — бот молчит, пользователи пишут в пустоту.

Сервер решает это раз и навсегда: он не выключается, не спит и не перезагружается без спроса. Разберём, как перенести бота на VPS так, чтобы он поднимался сам после любого сбоя.

Что понадобится

Самый дешёвый тариф. Телеграм-бот — это несколько мегабайт памяти и почти нулевая нагрузка на процессор. Конфигурации 1 ядро, 1 ГБ памяти хватит с запасом даже на несколько ботов одновременно.

Из системы берите Ubuntu 24.04 — под неё написано большинство инструкций, и вы легко найдёте ответ, если что-то пойдёт не так.

Если сервера ещё нет, посмотрите каталог хостингов — для бота подойдёт любой тариф из нижней части списка.

Шаг 1. Подключаемся и обновляем систему

Зайдите на сервер по SSH (подробно это разобрано в гайде про первую настройку VPS) и первым делом обновите пакеты:

терминал
root@vps:~#apt update && apt upgrade -y

Установите Python и инструмент для виртуальных окружений:

терминал
root@vps:~#apt install -y python3 python3-pip python3-venv git

Шаг 2. Заводим отдельного пользователя

Запускать бота от имени root — плохая привычка. Если в коде окажется уязвимость, злоумышленник получит полный контроль над сервером. Создадим отдельного пользователя без лишних прав:

терминал
root@vps:~#adduser --system --group --home /opt/tgbot tgbot

Почему это важно

Бот с правами обычного пользователя в худшем случае навредит только своим файлам. Бот с правами root может стереть систему целиком.

Шаг 3. Загружаем код бота

Если код лежит в Git-репозитории:

терминал
root@vps:~#cd /opt/tgbot && git clone https://github.com/ваш-логин/ваш-бот.git app

Если репозитория нет, загрузите файлы с компьютера. На Windows удобно через WinSCP или Termius, на macOS и Linux — одной командой:

терминал
root@vps:~#scp -r ./мой-бот root@ВАШ_IP:/opt/tgbot/app

Шаг 4. Виртуальное окружение и зависимости

Виртуальное окружение изолирует библиотеки бота от системных. Без него обновление системы может сломать бота, и наоборот.

терминал
root@vps:~#cd /opt/tgbot/approot@vps:~#python3 -m venv venvroot@vps:~#./venv/bin/pip install --upgrade piproot@vps:~#./venv/bin/pip install -r requirements.txt

Нет файла requirements.txt? Установите библиотеки вручную, например:

терминал
root@vps:~#./venv/bin/pip install aiogram python-dotenv

Шаг 5. Прячем токен

Токен бота — это пароль. Никогда не оставляйте его прямо в коде: случайно зальёте на GitHub, и бота уведут за минуты. Токены Telegram активно ищут автоматическими сканерами.

Создайте файл с настройками:

терминал
root@vps:~#nano /opt/tgbot/app/.env

Внутрь впишите:

BOT_TOKEN=1234567890:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Сохраните: Ctrl+O, Enter, затем Ctrl+X.

Закройте файл от посторонних глаз и передайте владение боту:

терминал
root@vps:~#chmod 600 /opt/tgbot/app/.envroot@vps:~#chown -R tgbot:tgbot /opt/tgbot

Шаг 6. Автозапуск через systemd

Это ключевой момент. Просто запустить python bot.py мало — при закрытии SSH-сессии процесс умрёт. Нужна служба, которая стартует при загрузке сервера и поднимает бота после падения.

Создайте файл службы:

терминал
root@vps:~#nano /etc/systemd/system/tgbot.service

Вставьте:

[Unit]
Description=Telegram-бот
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=tgbot
Group=tgbot
WorkingDirectory=/opt/tgbot/app
ExecStart=/opt/tgbot/app/venv/bin/python bot.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Замените bot.py на имя вашего главного файла.

Строка Restart=always — самая ценная. Упал бот с ошибкой, оборвалась сеть, кончилась память — systemd подождёт 10 секунд и запустит его заново. Без неё вы узнаете о падении от пользователей.

Включаем и запускаем:

терминал
root@vps:~#systemctl daemon-reloadroot@vps:~#systemctl enable --now tgbot

Шаг 7. Проверяем, что живой

терминал
root@vps:~#systemctl status tgbot

Ищите строку Active: active (running). Если там failed — смотрите, что пишет бот:

терминал
root@vps:~#journalctl -u tgbot -n 50 --no-pager

Чтобы наблюдать за логами в реальном времени, как за консолью на компьютере:

терминал
root@vps:~#journalctl -u tgbot -f

Частая ошибка новичков

Бот запускается вручную, но падает как служба. Почти всегда причина в путях: в коде указан относительный путь к файлу (например, data.json), а systemd стартует из другого каталога. Либо укажите абсолютные пути, либо проверьте, что WorkingDirectory в службе совпадает с папкой бота.

Обновление бота

Внесли правки в код — обновите и перезапустите:

терминал
root@vps:~#cd /opt/tgbot/approot@vps:~#git pullroot@vps:~#systemctl restart tgbot

Перезапуск занимает секунду, пользователи ничего не заметят.

Сколько это стоит

Тариф на 1 ГБ памяти обойдётся в 250–400 ₽ в месяц — примерно как две чашки кофе. За эти деньги бот работает круглосуточно, не зависит от вашего компьютера и отвечает пользователям мгновенно.

На таком сервере спокойно уживаются несколько ботов сразу: заведите для каждого свою службу с отдельным именем.

Взять сервер под бота

Подойдёт любой начальный тариф — боту нужно меньше ресурсов, чем открытой вкладке браузера.

Смотреть тарифы

Что дальше

Бот работает — самое время подумать о надёжности. Настройте защиту сервера от взлома, чтобы никто не подобрал пароль по SSH, и автоматические бэкапы, чтобы не потерять базу пользователей.

А если хотите следить за тем, что бот действительно жив, а не просто «запущен», пригодится мониторинг — он пришлёт уведомление, когда что-то сломается.