EQVPS

Как хостить Discord-бота 24/7 на VPS (systemd)

Держите Discord-бота онлайн 24/7 на VPS: установите рантайм, положите токен бота в env-файл и заверните его в systemd-сервис с Restart=always, чтобы он переживал сбои и перезагрузки. Копируемое для Node и Python.

Бесплатный хостинг для ботов работает, пока контейнер не уснёт или сервис не выключится посреди события. VPS за $3 с systemd держит бота онлайн по-настоящему. Это инструкция; за более полным разбором и заметками про музыкального бота смотрите хостинг Discord-бота на VPS и кейс VPS для Discord-ботов. Выделенный IP не нужен — Discord-бот делает только исходящие соединения, так что NAT-тариф (от $3/мес) идеален.

1. Установите рантайм и вашего бота (пример на Node)

apt update && apt install -y curl git
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
git clone https://github.com/you/your-bot.git /opt/bot
cd /opt/bot && npm ci --omit=dev

2. Храните токен в env-файле

cat >/opt/bot/.env <<'EOF'
DISCORD_TOKEN=your_token_here
EOF
chmod 600 /opt/bot/.env

3. systemd-сервис с Restart=always

# /etc/systemd/system/discordbot.service
[Unit]
Description=Discord Bot
After=network.target

[Service]
WorkingDirectory=/opt/bot
ExecStart=/usr/bin/node index.js
EnvironmentFile=/opt/bot/.env
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
journalctl -u discordbot -f

Restart=always — вот что делает его 24/7: необработанный reject в 3 часа ночи приводит к перезапуску, а не оставляет бота мёртвым. (Подробнее в создании systemd-сервиса.)

Вместо этого Python?

Тот же паттерн — venv и discord.py, с unit'ом, указывающим на Python из venv:

ExecStart=/opt/bot/.venv/bin/python bot.py

Заметки

Nano за $3/мес, root примерно за минуту, без KYC, оплата в крипте — достаточно дёшево, чтобы быть одноразовым, когда бот-проект завершается. Тот же паттерн для Telegram-ботов.

Частые вопросы

Как держать Discord-бота онлайн 24/7?

Поместите его на VPS и заверните в systemd-сервис с Restart=always, чтобы он перезапускался после сбоя и стартовал при загрузке. Запуск в терминале или через nohup умирает при отключении или перезагрузке; systemd держит его живым и пишет логи в journalctl. Копируемые unit'ы для Node и Python ниже.

Нужен ли выделенный IP для Discord-бота?

Нет. Discord-бот сам подключается к шлюзу Discord по websocket — к вашему серверу ничего входящего не подключается. NAT-тариф (от $3/мес) — идеальный дешёвый вариант. Выделенный IP понадобился бы только боту, который также обслуживает входящие веб-запросы.

Какой самый дешёвый рабочий тариф?

Nano ($3/мес — 2 vCPU, 1 ГБ) запускает типичного бота на discord.js или discord.py, и несколько сразу. Боты занимают десятки мегабайт RAM. Исключение — музыкальный бот: стриминг аудио хочет чуть больше CPU и трафика, так что берите Micro/Small.

Как безопасно хранить токен бота?

В env-файле, который может читать только root (chmod 600), загружаемом через Environment или EnvironmentFile в systemd-unit. Никогда не вписывайте токен в исходники и не коммитьте в git — утёкший токен позволяет кому угодно управлять вашим ботом.

Вы просите документы или карту?

Нет. Email для регистрации, оплата в USDC или USDT — без документов, без карты. Root примерно за минуту.

Комментарии

Пока нет комментариев. Будьте первым.

Оставить комментарий

Комментарии проходят модерацию перед публикацией.