Как запустить бота 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 на сервере ):
- Restart=always перезапускает бота при любом завершении, on-failure только при ошибке.
- RestartSec=10 даёт паузу: если сеть пропала, бот не будет долбить API мессенджера каждую долю секунды.
- StartLimitBurst и StartLimitIntervalSec останавливают попытки, если бот упал 5 раз за 5 минут.
Бот в Docker: какую политику restart выбрать
Для бота обычно берут unless-stopped: он переживёт падение и перезагрузку, но не воскреснет, если вы остановили его намеренно. Политика начинает действовать, только когда контейнер проработал хотя бы 10 секунд, поэтому бот, который падает сразу при старте, не уйдёт в бесконечный цикл. Последняя команда нужна, чтобы сам Docker стартовал при загрузке сервера: без него ни одна политика не сработает.
Логи бота: как не заполнить диск за месяц
Бот, который пишет каждое сообщение в лог, за месяцы способен занять весь диск младшего VPS, и тогда упадёт уже всё. Ограничьте журнал заранее.
- Для systemd: строка SystemMaxUse=500M в /etc/systemd/journald.conf и перезапуск systemd-journald.
- Для Docker: общий лимит в /etc/docker/daemon.json, он действует на новые контейнеры.
Как проверить, что бот переживёт сбой и перезагрузку
Настройку проверяют поломкой: найдите PID через systemctl status mybot и выполните sudo kill -9 PID, через RestartSec бот должен ответить снова. Затем sudo reboot. Снаружи за ботом может следить Uptime Kuma: она присылает уведомление, если бот перестал отвечать на проверку.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов
Данные
| Политика | Что делает |
|---|---|
| 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, но останется выключенным, если вы остановили его сами.