Настройка торгового бота на облаке (AWS, DigitalOcean, Hetzner)

Запуск и настройка торгового бота на облаке (AWS, DigitalOcean, Hetzner) После запуска бота на облачном сервере через 3 часа он упал — сообщение `Killed` в логах. Причина: нехватка памяти. Торговый бот загрузил в память рыночные данные, а OOM killer снёс процесс. Без автоматического перезапуска о

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1451
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1270
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1011

Запуск и настройка торгового бота на облаке (AWS, DigitalOcean, Hetzner)

После запуска бота на облачном сервере через 3 часа он упал — сообщение Killed в логах. Причина: нехватка памяти. Торговый бот загрузил в память рыночные данные, а OOM killer снёс процесс. Без автоматического перезапуска он остался мёртвым до утра. Такое случается часто: боты пишут в трейде, а инфраструктуру подгоняют как попало.

Мы настраиваем ботов уже 5 лет. За это время набили шишки на WebSocket-разрывах, утечках ключей и неверном выборе сервера. Выработали простой паттерн: VPS с запасом, systemd для управления, Telegram-алерты и никакого Docker без нужды.

Как обеспечить бесперебойную работу бота?

Ключ — сервер с 2 vCPU и 4 ГБ RAM. Для скальпинга сервер обязан быть рядом с биржей. Например, для Binance подходят AWS Tokyo (latency ~10 мс) или Vultr Singapore (15 мс). Между Европой и Азией задержка превышает 200 мс — для HFT это смертельно. Мы рекомендуем Hetzner для алгоритмической торговли: он дешевле AWS в 2–3 раза, но latency на 20–30 мс выше, что некритично для стратегий на минутных свечах. Для Binance лучше DigitalOcean (регион NYC) — 40 мс до серверов биржи.

Параметр Минимум Рекомендация
CPU 1 vCPU 2 vCPU
RAM 1 ГБ 4 ГБ для мультивалютных ботов
Диск 20 ГБ SSD 40 ГБ SSD (логи занимают много)
Сеть Любая Близость к бирже: <50 мс
Провайдер DigitalOcean, Hetzner Vultr для Binance, AWS для мультибиржевых

Почему systemd, а не Docker?

Для одного бота Docker добавляет 5–10% накладных расходов на CPU/RAM и усложняет отладку. Systemd — встроенный в Linux демон, надёжный и минималистичный. Вот unit-файл, который мы используем:

[Unit] Description=Trading Bot After=network-online.target Wants=network-online.target [Service] Type=simple User=bot WorkingDirectory=/home/bot/trading-bot EnvironmentFile=/home/bot/trading-bot/.env ExecStart=/home/bot/.venv/bin/python main.py Restart=on-failure RestartSec=10 StandardOutput=journal StandardError=journal MemoryMax=512M CPUQuota=80% [Install] WantedBy=multi-user.target 

Согласно официальной документации systemd, параметр MemoryMax ограничивает память для cgroup v2, предотвращая OOM kill. А Restart=on-failure гарантирует перезапуск только после аварийного завершения, не трогая преднамеренные остановки.

После создания файла:

systemctl daemon-reload systemctl enable trading-bot systemctl start trading-bot journalctl -u trading-bot -f 

Как хранить API-ключи безопасно?

Никогда не помещайте ключи в код — это самая частая причина сливов. Используем переменные окружения. Пример файла .env с правами 600:

# /home/bot/trading-bot/.env BINANCE_API_KEY=xxx BINANCE_SECRET=yyy TELEGRAM_BOT_TOKEN=zzz TELEGRAM_CHAT_ID=123456 chmod 600 /home/bot/trading-bot/.env chown bot:bot /home/bot/trading-bot/.env 

Дополнительно можно хранить ключи в AWS Secrets Manager или 1Password CLI, но для одного бота .env с файерволами и минимумом прав достаточно.

Как мониторить бота?

Минимальный набор — Telegram-алерты и heartbeat. Асинхронный код отправляет сообщение при старте, ошибках и раз в час (heartbeat). Если сообщение не приходит — бот упал. Пример на Python с httpx:

import httpx, asyncio TELEGRAM_URL = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage" async def send_alert(message: str, level: str = "INFO"): prefix = {"INFO": "ℹ️", "WARN": "⚠️", "ERROR": "🚨"}.get(level, "") await httpx.AsyncClient().post(TELEGRAM_URL, json={ "chat_id": TELEGRAM_CHAT_ID, "text": f"{prefix} *{level}*\n{message}", "parse_mode": "Markdown" }) # При старте await send_alert("Bot started", "INFO") # Heartbeat раз в час async def heartbeat(): while True: await asyncio.sleep(3600) await send_alert(f"Heartbeat: balance={await get_balance()}", "INFO") 

Дополнительно подключаем UptimeRobot для внешней проверки: он пингует IP и при отсутствии ответа шлёт SMS.

Как обновлять бота без остановки?

Деплой новой версии:

cd /home/bot/trading-bot git pull origin main /home/bot/.venv/bin/pip install -r requirements.txt systemctl restart trading-bot 

Systemd корректно дожидается завершения текущей итерации перед запуском нового процесса. Для критических обновлений можно использовать systemctl restart --check — но при Restart=on-failure новый процесс стартует без потери данных.

Как развернуть бота за 10 шагов?

  1. Выбрать VPS: 2 vCPU, 4 ГБ RAM, регион близко к бирже.
  2. Установить Ubuntu 22.04 LTS, обновить пакеты.
  3. Создать пользователя bot без sudo.
  4. Склонировать репозиторий с ботом.
  5. Установить Python 3.11 и зависимости в виртуальное окружение.
  6. Создать .env с API-ключами и Telegram-токеном.
  7. Поместить systemd unit-файл и включить сервис.
  8. Настроить Telegram-алерты: старт, ошибки, heartbeat раз в час.
  9. Проверить журнал: journalctl -u trading-bot -f.
  10. Настроить внешний мониторинг (UptimeRobot).

После этих шагов бот работает 24/7 с автоматическим перезапуском. Если что-то пошло не так — Telegram сообщит.

Почему самостоятельная настройка часто приводит к сбоям?

Основные проблемы: отсутствие автоматического рестарта (бот висит мёртвым), API-ключи в коде (утечка на GitHub), слабый сервер (OOM kill при росте данных), отсутствие мониторинга (узнаёте о падении через неделю). Для минимизации рисков используйте описанный выше шаблон — он проверен на сотнях продакшен-запусков.

Если сомневаетесь в своей инфраструктуре — закажите настройку у нас. Мы подготовим сервер, развернём бота и настроим мониторинг за 2–4 дня. Свяжитесь для бесплатной консультации.