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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Настройка торгового бота на облачном сервере (AWS, DigitalOcean, Hetzner)
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    854
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1051
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    827

Настройка торгового бота на облачном сервере

Написать торгового бота и запустить его надёжно в production — две разные задачи. Большинство ботов падают не из-за ошибок в торговой логике, а из-за проблем с инфраструктурой: обрыв соединения, OOM kill, нет мониторинга, нет рестарта после краша. Эта страница — про инфраструктурную часть.

Минимальный жизнеспособный стек

Для одного бота на Python/Node.js:

VPS (DigitalOcean/Hetzner/Vultr) → systemd service → процесс бота → биржевой API
                                  ↓
                             Telegram alert bot (алерты о статусе)

Почему не Docker для одного бота? Лишняя сложность без выгоды. Systemd проще, надёжнее для single-process, и работает на любом Linux VPS из коробки.

Выбор сервера

Параметр Минимум Рекомендация
CPU 1 vCPU 2 vCPU
RAM 1GB 2–4GB
Диск 20GB SSD 40GB SSD
Сеть Любая Близость к бирже (для latency)
Провайдер DigitalOcean, Hetzner Vultr Tokyo/Singapore для Binance

Для ботов, где latency критична (скальпинг, арбитраж) — сервер в том же регионе, что биржа. Binance mainnet — AWS Tokyo или Singapore. FTX был в AWS Virginia. Latency между Европой и Азией — 200–300ms, это смерть для HFT стратегий.

Systemd unit файл

# /etc/systemd/system/trading-bot.service
[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
systemctl daemon-reload
systemctl enable trading-bot
systemctl start trading-bot
journalctl -u trading-bot -f  # логи в реальном времени

Restart=on-failure + RestartSec=10 — бот автоматически рестартует после краша с 10-секундной паузой. Важно: on-failure, а не always — бот не должен рестартовать при нормальном exit (например, при ручной остановке).

Переменные окружения и секреты

API ключи — только через environment variables, никогда в коде:

# /home/bot/trading-bot/.env (права 600, владелец bot)
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

Мониторинг и алерты в Telegram

Минимальный мониторинг для бота:

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")

# Алерт при ордере
await send_alert(f"Order placed: BUY {qty} BTC @ {price}", "INFO")

# Heartbeat — бот жив
async def heartbeat():
    while True:
        await asyncio.sleep(3600)  # раз в час
        await send_alert(f"Heartbeat: balance={await get_balance()}", "INFO")

Если heartbeat перестал приходить — бот упал. Дополнительно можно настроить UptimeRobot или BetterStack для внешнего мониторинга процесса.

Обновление бота без downtime

# Деплой новой версии
cd /home/bot/trading-bot
git pull origin main
/home/bot/.venv/bin/pip install -r requirements.txt

# Graceful restart — systemd дождётся завершения текущей итерации
systemctl restart trading-bot

Настройка инфраструктуры для одного бота от нуля: 2–4 часа. Для нескольких ботов с Docker Compose и централизованным логированием — 1–2 дня.