הגדרת בוט קריפטו על VPS: systemd, ניטור ואבטחה
תארו לעצמכם: השקתם את הבוט על מחשב ביתי, יצאתם לחופשה, ויומיים לאחר מכן הוא קרס עקב הפסקת חשמל. הפסדים—עד $1000 ליום לסוחר פעיל. אנו מגדירים את ה-VPS שלכם כך שהבוט יפעל 24/7 עם אחריות ל-99.9% זמינות. עם יותר מ-50 פרויקטים מאחורינו, כולל HFT עם זמן השהיה מתחת ל-5 אלפיות השנייה, הנה מתכון מוכח שבו אנו משתמשים בכל פרויקט.
איך לבחור VPS עבור בוט הקריפטו שלכם
עבור רוב בוטי המסחר, 2 vCPU, 4 GB RAM ו-40 GB SSD מספיקים. עבור בוטים עם אנליטיקה כבדה או צומת מקומי, בחרו ב-4–8 vCPU ו-16–32 GB RAM. השוואת תצורות:
| סוג בוט | vCPU | RAM | דיסק | זמן השהיה לבורסה |
|---|---|---|---|---|
| רגיל (DCA, Grid) | 2 | 4 GB | 40 GB SSD | < 30 ms |
| עם אנליטיקה (ML) | 4 | 16 GB | 100 GB SSD | < 20 ms |
| HFT / ארביטראז' | 8 | 32 GB | 200 GB NVMe | < 5 ms (אותו מרכז נתונים) |
מיקום גיאוגרפי חשוב: זמן השהיה לבורסה משפיע על מהירות הביצוע. Binance יש לה שרתים בפרנקפורט ובטוקיו, Bybit בהולנד, dYdX על AWS us-east-1. עבור HFT, מקם את השרת שלכם באותו מרכז נתונים. עבור אסטרטגיות שמחזיקות פוזיציות יותר מדקה, זה פחות קריטי.
מערכת הפעלה: Ubuntu LTS או Debian stable. ללא GUI—רק שרת headless.
למה systemd במקום screen או tmux?
screen, tmux ו-nohup מיועדים לפיתוח. לייצור, השתמשו רק ב-systemd. הוא מפעיל מחדש את התהליך במקרה של קריסה, מנהל לוגים, ומתחיל באתחול השרת. systemd מובנה ב-Ubuntu/Debian, אינו דורש חבילות נוספות, ונותן שליטה עדינה במשאבים. לפי תיעוד systemd, קבצי unit מספקים בידוד מלא של תהליכים. בפועל, 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 לאחר יצירת הקובץ, הפעילו את השירות: # Обновление системы 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 . בדקו סטטוס: # /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 מבטיח שהבוט יופעל מחדש במקרה של קריסה אך מונע לולאות קריסה אינסופיות.
איך לאבטח את השרת מפני פריצות?
# Закрываем 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 מורשית בבורסה—רק כתובת ה-IP של ה-VPS שלכם. גם אם המפתח ידלוף, הוא לא יעבוד מכתובות IP אחרות.
משתני סביבה וסודות
לעולם אל תכניסו מפתחות API לקוד או ל-git. השתמשו בקובץ RestartSec=10s עם הרשאות מוגבלות: StartLimitBurst=3 ו-# Закрываем 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 . .env חייב לכלול chmod 600. ודאו ש-chown botuser:botuser לא נכנס בטעות להיסטוריית git: .gitignore.
איך להגדיר ניטור והתראות?
הבוט צריך לדווח על בעיות בעצמו. הגדרה מינימלית: שליחת הודעות דרך 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 מנגנון ניטור חיצוני: UptimeRobot או דומה שולח ping לנקודת בדיקת בריאות HTTP כל 5 דקות. הבוט מחזיר 200—חי. אחרת, התראת SMS/אימייל. השוואת שיטות ניטור:
| שיטה | זמן תגובה | עלות | תלות בבוט |
|---|---|---|---|
| התראות Telegram | עד שנייה אחת | חינם | כן (מובנה) |
| UptimeRobot | 5 דקות | חינם (50 בדיקות) | לא |
| journalctl | ידני | חינם | לא |
שיטות ניטור נוספות
התקינו Node Exporter למדדי CPU/RAM/דיסק, הגדירו Prometheus + Grafana להדמיה. השתמשו ב-Alertmanager להתראות Telegram. זה נותן תמונה מלאה על בריאות השרת והבוט.סקריפט פריסה
#!/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 לפי האסטרטגיה שלכם (ראו טבלה למעלה)
- התקנת מערכת הפעלה ותוכנה בסיסית
- יצירת unit של systemd עם מגבלות משאבים
- התראות Telegram ושילוב נקודת בדיקת בריאות
- הגדרת אבטחה: מפתחות SSH, UFW, Fail2ban, רשימת IP מורשית בבורסה
- ריצת בדיקה ואימות הפעלה מחדש אוטומטית במקרה של קריסה
- סקריפט פריסה לעדכונים מהירים
- הוראות תפעול (גישה, לוגים, פקודות נפוצות)
צרו קשר כדי להעריך את הפרויקט שלכם ולקבל הצעה מסחרית. הזמינו הגדרת VPS לבוט הקריפטו שלכם—המהנדסים שלנו יכינו את השרת שלכם תוך יום אחד. אנו מבטיחים פעולה יציבה 24/7 ותמיכה מהירה.
התהליך שלנו
אנו פועלים בגישה מובנית כדי להבטיח שכל פריסה תהיה אמינה:
- איסוף נתונים – אנו דנים בדרישות הבוט, האסטרטגיה והעומס הצפוי.
- ביקורת/ניתוח – אנו בודקים את התלותים של הבוט וצרכי הביצועים.
- עיצוב – אנו מציעים את תצורת ה-VPS והארכיטקטורה האופטימלית.
- הערכה – אנו מספקים לוח זמנים מפורט והערכת עלות לפי הניתוח.
- פיתוח – אנו מגדירים את השרת, מגדירים systemd, אבטחה וניטור.
- בדיקות – אנו מדמים תקלות כדי לוודא הפעלה מחדש אוטומטית והתראות.
- השקה – אנו עולים לאוויר ומספקים לכם תיעוד מלא.
לוחות זמנים
ההתקנה בדרך כלל אורכת 1 עד 3 ימים תלוי במורכבות הבוט ודרישות התשתית. הגדרות HFT מורכבות עם ניטור מותאם אישית עשויות לדרוש זמן נוסף.
טעויות נפוצות שיש להימנע מהן
- הרצת הבוט כ-root—תמיד השתמשו במשתמש ייעודי ללא הרשאות.
- אחסון מפתחות API בקוד או העלאת
.envל-git. - שימוש ב-screen/tmux לייצור—systemd היא האפשרות היחידה האמינה.
- דילוג על רשימת IP מורשית במפתחות API של בורסה.
- שכחת הגדרת מגבלות משאבים בקובץ unit של systemd.
לצוות שלנו יש ניסיון ממקור ראשון עם מלכודות אלה ואנו נבטיח שההגדרה שלכם תימנע מהן.







