Налаштування криптобота на VPS: systemd, моніторинг та безпека

Уявіть: ви запустили бота на домашньому ПК, поїхали у відпустку, а через два дні він упав через відключення електрики. Втрати — до $1000 на день для активного трейдера. Ми налаштовуємо VPS так, що бот працює 24/7 з **гарантованим аптаймом 99.9%**. За плечима — понад 50 проєктів, включаючи HFT із зат

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

Часті запитання

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

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

Уявіть: ви запустили бота на домашньому ПК, поїхали у відпустку, а через два дні він упав через відключення електрики. Втрати — до $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 та оперативну підтримку.