Как запустить бота 24/7 на своём сервере: коротко и с данными

Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 3 вопроса. Полный разбор с примерами: Как запустить бота 24/7 на своём сервере.

Коротко

Как запустить бота 24/7: оформить его службой systemd с Restart=always или контейнером Docker с политикой restart unless-stopped, тогда процесс сам поднимется после ошибки и после перезагрузки сервера. Ниже готовый unit-файл, настройки Docker и проверка, которая показывает, что бот действительно не уснёт ночью. Боту нужна служба systemd или Docker с политикой restart, а не screen и не nohup.

Конспект по разделам

Почему бот, запущенный из консоли, перестаёт отвечать

Бот, запущенный командой в SSH-сессии, живёт ровно до её закрытия. screen, tmux и nohup спасают от закрытия терминала, но не от двух других причин: необработанного исключения в коде и перезагрузки сервера после обновления ядра. В обоих случаях бот молчит, пока вы не зайдёте и не запустите его руками. Решение одно: отдать процесс системе, которая следит за ним сама.

Служба systemd для бота: unit-файл с перезапуском

Пример для бота на Node.js, для Python меняется только ExecStart (подробно в разборе бот на Python на сервере ):

Бот в Docker: какую политику restart выбрать

Для бота обычно берут unless-stopped: он переживёт падение и перезагрузку, но не воскреснет, если вы остановили его намеренно. Политика начинает действовать, только когда контейнер проработал хотя бы 10 секунд, поэтому бот, который падает сразу при старте, не уйдёт в бесконечный цикл. Последняя команда нужна, чтобы сам Docker стартовал при загрузке сервера: без него ни одна политика не сработает.

Логи бота: как не заполнить диск за месяц

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

Как проверить, что бот переживёт сбой и перезагрузку

Настройку проверяют поломкой: найдите PID через systemctl status mybot и выполните sudo kill -9 PID, через RestartSec бот должен ответить снова. Затем sudo reboot. Снаружи за ботом может следить Uptime Kuma: она присылает уведомление, если бот перестал отвечать на проверку.

Запустите свой сервер за пару минут

Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.

Данные

ПолитикаЧто делает
noНе перезапускает, это значение по умолчанию
on-failure[:N]Перезапускает при ненулевом коде выхода, можно ограничить число попыток; после перезапуска самого Docker контейнер не поднимет
alwaysПерезапускает всегда; остановленный вручную контейнер снова стартует после перезапуска Docker
unless-stoppedКак always, но остановленный вручную контейнер остаётся остановленным

Данные на 14 октября 2026.

Вопросы и ответы

Чем screen или tmux хуже службы systemd для бота?

Они держат процесс после закрытия SSH, но не перезапускают его после ошибки и не запускают после перезагрузки сервера. Служба systemd делает и то, и другое.

Почему systemd перестал перезапускать бота?

Сработал лимит запусков: бот падал слишком часто, и systemd пишет в статусе, что запросы на старт повторяются слишком быстро. Исправьте ошибку по журналу и выполните systemctl reset-failed mybot.

Какую политику restart выбрать для бота в Docker?

unless-stopped: контейнер поднимется после сбоя и перезапуска Docker, но останется выключенным, если вы остановили его сами.