VPS для Telegram-бота на aiogram: полный деплой
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 один токен обслуживает только один экземпляр.