Уявіть: ви запустили бота на домашньому ПК, поїхали у відпустку, а через два дні він упав через відключення електрики. Втрати — до $1000 на день для активного трейдера. Ми налаштовуємо VPS так, що бот працює 24/7 з гарантованим аптаймом 99.9%. За плечима — понад 50 проєктів, включаючи HFT із затримкою менше 5 мс. Нижче — перевірений рецепт, який ми використовуємо в кожному проєкті.
Як вибрати VPS для криптобота?
Для більшості торгових ботів достатньо 2 vCPU, 4 ГБ RAM, SSD 40 ГБ. Для ботів із важкою аналітикою або власною нодою — 4–8 vCPU, 16–32 ГБ RAM. Порівняння конфігурацій:
| Тип бота | vCPU | RAM | Диск | Затримка до біржі |
|---|---|---|---|---|
| Стандартний (DCA, Grid) | 2 | 4 ГБ | 40 ГБ SSD | < 30 мс |
| З аналітикою (ML) | 4 | 16 ГБ | 100 ГБ SSD | < 20 мс |
| HFT / арбітраж | 8 | 32 ГБ | 200 ГБ NVMe | < 5 мс (той самий ЦОД) |
Географічне розташування має значення: латентність до біржі впливає на швидкість виконання. Binance — сервери у Франкфурті та Токіо, Bybit — Нідерланди, dYdX — AWS us-east-1. Для HFT ставте сервер у тому ж датацентрі. Для стратегій з утриманням позиції більше хвилини — не критично.
ОС: Ubuntu LTS або Debian stable. Жодної графічної оболонки — тільки headless сервер.
Чому systemd, а не screen або tmux?
screen, tmux, nohup — для розробки. Для production — тільки systemd. Він перезапустить процес при падінні, керує логами, стартує при перезавантаженні сервера. Systemd вбудований в Ubuntu/Debian, не потребує додаткових пакетів і дає тонкий контроль над ресурсами. Згідно з документацією systemd, юніт-файли забезпечують повну ізоляцію процесів. На практиці systemd перезапускає бота в 10 разів швидше ручного моніторингу, а втрати від простою для арбітражних стратегій можуть сягати $1000 на день.
Ізоляція та управління залежностями
# Оновлення системи apt update && apt upgrade -y apt install -y python3.11 python3.11-venv python3-pip git # Створення непривілейованого користувача useradd -m -s /bin/bash botuser su - botuser # Віртуальне оточення Python python3.11 -m venv /home/botuser/bot-env source /home/botuser/bot-env/bin/activate pip install -r requirements.txt # Node.js через nvm (не через apt — застарілі версії) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20 nvm use 20 cd /home/botuser/mybot && npm ci --production Ніколи не запускайте бота від root. Якщо бот скомпрометований — мінімальні права означають мінімальну шкоду.
Systemd сервіс та його налаштування
# /etc/systemd/system/trading-bot.service [Unit] Description=Trading Bot After=network-online.target Wants=network-online.target [Service] Type=simple User=botuser Group=botuser WorkingDirectory=/home/botuser/mybot # Python ExecStart=/home/botuser/bot-env/bin/python main.py # Node.js альтернатива: # ExecStart=/home/botuser/.nvm/versions/node/v20.0.0/bin/node index.js Restart=on-failure RestartSec=10s StartLimitIntervalSec=60s StartLimitBurst=3 # Ліміти ресурсів MemoryMax=2G CPUQuota=150% # Змінні оточення з файлу EnvironmentFile=/home/botuser/mybot/.env # Логування StandardOutput=journal StandardError=journal SyslogIdentifier=trading-bot [Install] WantedBy=multi-user.target Після створення файлу активуйте сервіс: systemctl daemon-reload && systemctl enable trading-bot && systemctl start trading-bot. Перевірка статусу: systemctl status trading-bot. Логи: journalctl -u trading-bot -f --since "1 hour ago".
Restart=on-failure + RestartSec=10s + StartLimitBurst=3 — бот перезапуститься при падінні, але не зациклиться в нескінченному crash loop.
Як захистити сервер від злому?
# Закриваємо SSH за паролем, тільки ключі sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config systemctl restart ssh # UFW — відкриваємо тільки потрібні порти ufw default deny incoming ufw allow ssh ufw allow 443/tcp # якщо є web інтерфейс ufw enable # Fail2ban проти брутфорсу SSH apt install fail2ban -y systemctl enable fail2ban --now API ключі біржі: налаштуйте IP whitelist на біржі — тільки IP вашого VPS. Навіть якщо ключ витече, з інших IP працювати не буде.
Змінні оточення та секрети
API ключі ніколи не в коді і не в git. Файл .env з обмеженими правами: chmod 600 і chown botuser:botuser. .gitignore обов'язково повинен містити .env. Перевірте, що .env випадково не потрапив у git історію: git log --all --full-history -- .env.
Як налаштувати моніторинг та алерти?
Бот повинен сам повідомляти про проблеми. Мінімальний набір — відправка сповіщень у Telegram:
import telebot import functools from aiohttp import web import time bot_notifier = telebot.TeleBot(os.environ['TELEGRAM_BOT_TOKEN']) ADMIN_CHAT_ID = os.environ['TELEGRAM_CHAT_ID'] def notify(message: str, level: str = 'INFO'): prefix = {'INFO': 'INFO', 'WARNING': 'WARNING', 'ERROR': 'ERROR'}.get(level, '') try: bot_notifier.send_message(ADMIN_CHAT_ID, f"{prefix} {message}") except Exception: pass # В обробнику винятків except Exception as e: notify(f"Bot crashed: {type(e).__name__}: {e}", level='ERROR') raise Зовнішній watchdog: UptimeRobot або аналог пінгує HTTP health-endpoint бота кожні 5 хвилин. Бот віддає 200 — живий. Якщо ні — SMS/email алерт. Порівняння методів моніторингу:
| Метод | Час реакції | Вартість | Залежність від бота |
|---|---|---|---|
| Telegram-сповіщення | До 1 секунди | Безкоштовно | Так (вбудовано) |
| UptimeRobot | 5 хвилин | Безкоштовно (50 перевірок) | Ні |
| journalctl | Ручний | Безкоштовно | Ні |
Додаткові методи моніторингу
Встановіть Node Exporter для збору метрик CPU/RAM/диска, налаштуйте Prometheus + Grafana для візуалізації. Для алертів по телеграму використовуйте Alertmanager. Це дає повну картину здоров'я сервера та бота.Деплой оновлень
#!/bin/bash set -e cd /home/botuser/mybot git pull origin main source /home/botuser/bot-env/bin/activate pip install -r requirements.txt --quiet systemctl restart trading-bot sleep 3 systemctl status trading-bot --no-pager Для складніших проєктів — GitHub Actions + SSH деплой автоматично при push в main.
Що входить у налаштування під ключ
- Підбір VPS-конфігурації під вашу стратегію (див. таблицю вище)
- Встановлення ОС та базового ПЗ
- Створення systemd-юніта з ресурсними лімітами
- Інтеграція Telegram-сповіщень та health-ендпоінта
- Налаштування безпеки: SSH-ключі, UFW, Fail2ban, IP-вайтліст біржі
- Тестовий запуск та перевірка автоперезапуску при падінні
- Скрипт деплою для швидких оновлень
- Інструкція з експлуатації (доступи, логи, типові команди)
Зв'яжіться з нами, щоб оцінити ваш проєкт та отримати комерційну пропозицію. Замовте налаштування VPS для вашого криптобота — наші інженери підготують сервер за один день. Ми гарантуємо стабільну роботу 24/7 та оперативну підтримку.







