Налаштування торгового бота на хмарному сервері (AWS, DigitalOcean, Hetzner)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Налаштування торгового бота на хмарному сервері (AWS, DigitalOcean, Hetzner)
Простий
від 1 дня до 3 днів
Часті запитання

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

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1286
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

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

Написати торгового бота та запустити його надійно в 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 дні.