Бесплатный хостинг для ботов работает, пока контейнер не уснёт или сервис не выключится посреди события. 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
Заметки
- Несколько ботов? Скопируйте unit на каждого бота (
discordbot-a.service, …), либо запускайте каждого в контейнере с--restart unless-stoppedв Docker. - Музыкальный бот? Добавьте
ffmpegи берите Micro/Small — кодирование аудио здесь единственное, что хочет CPU. Трафик безлимитный на любом тарифе, так что стриминг не накрутит счёт.
Nano за $3/мес, root примерно за минуту, без KYC, оплата в крипте — достаточно дёшево, чтобы быть одноразовым, когда бот-проект завершается. Тот же паттерн для Telegram-ботов.
Комментарии
Пока нет комментариев. Будьте первым.