MAATRIX / Блог / VPS для Telegram-бота на aiogram: полный деплой

VPS для Telegram-бота на aiogram: полный деплой

Блог MAATRIX · 2026-07-07

aiogram — самый популярный асинхронный фреймворк для Telegram-ботов на Python. Чтобы бот отвечал пользователям круглосуточно, ему нужен сервер, который не выключается. Развернём бота на VPS: venv, systemd, выбор между polling и вебхуком.

Почему боту нужен сервер, а не ноутбук

['Пока вы тестируете бота на локальной машине, всё работает. Но как только вы закроете крышку ноутбука или пропадёт интернет — бот замолчит, а пользователи будут писать в пустоту. Продакшн-бот обязан жить на машине, которая включена всегда.', 'VPS даёт постоянный аптайм, внешний IP (нужен для вебхуков) и полный root-доступ для установки чего угодно. Даже младшего тарифа с 1 ГБ RAM хватает для бота с тысячами пользователей, потому что aiogram асинхронный и почти не грузит CPU в простое.', '
  • Работает 24/7 — не зависит от вашего компьютера.
  • Внешний IP и домен — можно поднять вебхук с TLS.
  • Лёгкий по ресурсам — async-архитектура экономит RAM.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для Telegram-бота

Установка Python и окружения

['aiogram 3.x требует Python 3.9+. Ставим свежий Python, git и создаём отдельного пользователя с изолированным venv.', "
sudo apt update && sudo apt install -y python3 python3-venv python3-pip git\nsudo useradd -r -m -s /bin/bash botuser\nsudo -u botuser bash -c 'cd ~ && git clone https://github.com/you/mybot.git'\nsudo -u botuser bash -c 'cd ~/mybot && python3 -m venv venv && venv/bin/pip install -U aiogram'
", 'Токен бота, полученный от @BotFather, кладём в файл окружения, а не в код. Права 600 — чтобы токен не прочитал никто, кроме бота.', "
echo 'BOT_TOKEN=123456:AAxxxxxxxx' | sudo -u botuser tee /home/botuser/mybot/.env\nsudo chmod 600 /home/botuser/mybot/.env
"]

Минимальный бот на aiogram 3

['Вот рабочий каркас бота на long polling — этого достаточно для старта. Токен читается из окружения.', "
import asyncio, os\nfrom aiogram import Bot, Dispatcher\nfrom aiogram.types import Message\nfrom aiogram.filters import CommandStart\n\ndp = Dispatcher()\n\n@dp.message(CommandStart())\nasync def start(m: Message):\n    await m.answer('Привет! Бот работает на VPS 24/7.')\n\nasync def main():\n    bot = Bot(os.environ['BOT_TOKEN'])\n    await dp.start_polling(bot)\n\nif __name__ == '__main__':\n    asyncio.run(main())
", 'Long polling не требует домена и TLS — бот сам ходит за обновлениями к Telegram. Это идеальный вариант для старта и большинства ботов.']

Автозапуск через systemd

['Чтобы бот пережил ребут и сам поднимался после сбоя, оформляем его как systemd-сервис. Файл окружения подхватывается через EnvironmentFile.', "
sudo tee /etc/systemd/system/mybot.service > /dev/null <<'EOF'\n[Unit]\nDescription=Aiogram Telegram bot\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nUser=botuser\nWorkingDirectory=/home/botuser/mybot\nEnvironmentFile=/home/botuser/mybot/.env\nExecStart=/home/botuser/mybot/venv/bin/python bot.py\nRestart=always\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\nsudo systemctl enable --now mybot
", '
systemctl status mybot\njournalctl -u mybot -f
', 'Теперь при sudo reboot бот поднимется автоматически, а при исключении в коде systemd перезапустит его через 5 секунд.']

Вебхук вместо polling

['Для высоконагруженных ботов вебхук эффективнее: Telegram сам присылает апдейты на ваш HTTPS-эндпоинт, без постоянных запросов. Нужен домен и TLS — проще всего через nginx и certbot.', '
sudo apt install -y nginx certbot python3-certbot-nginx\nsudo certbot --nginx -d bot.example.com
', 'nginx проксирует запросы на локальный порт бота (например, 8080), а aiogram обрабатывает их через встроенный aiohttp-сервер. Для большинства проектов polling проще и не требует домена — переходите на вебхук, только когда упрётесь в нагрузку.']

Где брать сервер и частые ошибки

['Telegram-бот нетребователен к ресурсам, но чувствителен к сетевой доступности Telegram API. Локации MAATRIX в UK и США дают стабильный доступ к серверам Telegram, AMD EPYC + NVMe обеспечивают мгновенный отклик, а от $8/мес это дешевле любой замены упавшему хостингу. Оплата картой РФ, СБП, криптой или MAAT снимает вопрос зарубежной оплаты.', '
  • Токен в коде и git — украдут бота; храните в .env с правами 600.
  • Запуск через nohup — не поднимется после ребута; используйте systemd.
  • Две копии бота с одним токеном — конфликт getUpdates, апдейты теряются.
  • Нет Restart=always — одно исключение кладёт бота навсегда.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для Telegram-бота

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

Polling или вебхук — что выбрать?

Для старта и большинства ботов — polling: не нужен домен и TLS. Вебхук имеет смысл при высокой нагрузке, когда важна экономия на постоянных запросах к API.

Сколько RAM нужно боту на aiogram?

Обычному боту хватает 512 МБ-1 ГБ. aiogram асинхронный и почти не грузит память в простое; больше нужно только при работе с медиа и БД.

Почему бот отвечает с двух аккаунтов дубликатами?

Скорее всего запущены две копии с одним токеном. Остановите лишний процесс — при polling один токен обслуживает только один экземпляр.