Настройка криптобота на 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
    1308
  • 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 и оперативную поддержку.