כיצד לפרוס בוט מסחר על שרת ענן

הבטחת פעילות רציפה של הבוט לאחר השקת הבוט על שרת ענן, כעבור שלוש שעות הוא קרס — 'Killed' בלוגים. הסיבה: חוסר בזיכרון. בוט המסחר טען נתוני שוק לזיכרון ה-RAM, ומנגנון ה-OOM killer סיים את התהליך. ללא הפעלה מחדש אוטומטית, הוא נשאר מושבת עד הבוקר. T

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1451
  • image_web-applications_feedme_466_0.webp
    פיתוח אפליקציית ווב עבור FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    פיתוח אתר עבור BELFINGROUP
    1005
  • image_ecommerce_furnoro_435_0.webp
    פיתוח חנות מקוונת לחברת FURNORO
    1270
  • image_logo-advance_0.webp
    עיצוב לוגו לחברת B2B Advance
    719
  • image_crm_enviok_479_0.webp
    פיתוח אפליקציית ווב עבור Enviok
    1011

הבטחת פעולה רציפה של הבוט

לאחר השקת הבוט על שרת ענן, כעבור שלוש שעות הוא קרס — Killed בלוגים. הסיבה: חוסר בזיכרון. הבוט טען נתוני שוק לזיכרון ה-RAM, וה-OOM killer סיים את התהליך. ללא הפעלה מחדש אוטומטית, הוא נשאר מושבת עד הבוקר. זה קורה לעתים קרובות: משתמשים מתמקדים בלוגיקת המסחר ומזניחים את התשתית.

אנחנו מגדירים בוטים כבר 5 שנים. בדרך נתקלנו בניתוקי WebSocket, דליפות מפתחות ובחירות שרת שגויות. פיתחנו תבנית פשוטה: VPS עם מרווח, systemd לניהול תהליכים, התראות Telegram, וללא Docker אלא אם כן יש צורך.

בחירת VPS לבוט המסחר שלך

המפתח הוא שרת עם 2 vCPU ו-4 GB RAM. לסקאלפינג, השרת חייב להיות קרוב לבורסה. עבור Binance, AWS Tokyo (השהייה ~10 ms) או Vultr Singapore (15 ms) עובדים היטב. השהייה בין אירופה לאסיה עולה על 200 ms — קטלני עבור HFT. אנו ממליצים על Hetzner למסחר אלגוריתמי: זה זול פי 2–3 מ-AWS, עם השהייה גבוהה יותר ב-20–30 ms, שמקובלת לאסטרטגיות של נרות דקה. VPS של Hetzner מתחיל ב-€3.99 לחודש עבור מופע עם 2 vCPU ו-4 GB RAM. עבור Binance, DigitalOcean (אזור NYC) נותן ~40 ms לשרתי הבורסה. עלויות: Hetzner €3.99/חודש, DigitalOcean $6/חודש, AWS ~$10/חודש. החיסכון יכול להגיע עד 60% בבחירת Hetzner על פני AWS.

פרמטר מינימום המלצה
מעבד 1 vCPU 2 vCPU
זיכרון 1 GB 4 GB לבוטים מרובי מטבעות
דיסק 20 GB SSD 40 GB SSD (לוגים תופסים מקום)
רשת כל אחת קרבה לבורסה: <50 ms
ספק DigitalOcean, Hetzner Vultr עבור Binance, AWS עבור ריבוי בורסות

systemd לעומת Docker לניהול בוט

עבור בוט יחיד, Docker מוסיף תקורה של 5–10% במעבד/זיכרון ומסבך את הניפוי. systemd היא מערכת init מובנית בלינוקס — אמינה ומינימלית. הנה קובץ ה-unit שאנו משתמשים בו:

[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 
תיעוד systemd קובע ש-[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 מגביל זיכרון דרך cgroup v2, ומונע OOM kill. MemoryMax מבטיח הפעלה מחדש רק לאחר יציאה חריגה, ומשאיר עצירות מכוונות ללא שינוי.

לאחר יצירת הקובץ:

systemctl daemon-reload systemctl enable trading-bot systemctl start trading-bot journalctl -u trading-bot -f 

אחסון מאובטח של מפתחות API

לעולם אל תשים מפתחות בקוד — זו הסיבה הנפוצה ביותר לדליפות. השתמש במשתני סביבה. דוגמה לקובץ Restart=on-failure עם הרשאות 600:

# /home/bot/trading-bot/.env 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 

לאבטחה נוספת, ניתן לאחסן מפתחות ב-AWS Secrets Manager או ב-1Password CLI, אבל עבור בוט יחיד systemctl daemon-reload systemctl enable trading-bot systemctl start trading-bot journalctl -u trading-bot -f עם חומת אש והרשאות מינימליות מספיק.

כיצד לנטר את הבוט עם התראות Telegram

הסט המינימלי הוא התראות Telegram ו-heartbeat. קוד אסינכרוני שולח הודעה בעת התחלה, על שגיאות, ופעם בשעה (heartbeat). אם ההודעה מפסיקה להגיע — הבוט מושבת. דוגמה ב-Python עם .env:

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") # Heartbeat раз в час async def heartbeat(): while True: await asyncio.sleep(3600) await send_alert(f"Heartbeat: balance={await get_balance()}", "INFO") 

בנוסף, אנו משתמשים ב-UptimeRobot לבדיקות חיצוניות: הוא פינג לכתובת ה-IP ושולח SMS אם אין תגובה. שימוש ב-I/O אסינכרוני עם uvloop מפחית תקורה ומשפר את הטיפול בחיבור מחדש של WebSocket.

עדכון הבוט ללא השבתה

פריסת גרסה חדשה:

cd /home/bot/trading-bot git pull origin main /home/bot/.venv/bin/pip install -r requirements.txt systemctl restart trading-bot 

systemd ממתין לסיום האיטרציה הנוכחית לפני התחלת התהליך החדש. לעדכונים קריטיים, השתמש ב-# /home/bot/trading-bot/.env 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 — אבל עם .env התהליך החדש מתחיל ללא אובדן נתונים.

פריסת בוט ב-10 שלבים

  1. בחר VPS: 2 vCPU, 4 GB RAM, אזור קרוב לבורסה.
  2. התקן Ubuntu 22.04 LTS, עדכן חבילות.
  3. צור משתמש httpx ללא sudo.
  4. שכפל את מאגר הבוט.
  5. התקן Python 3.11 ותלויות בסביבה וירטואלית.
  6. צור 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") # Heartbeat раз в час async def heartbeat(): while True: await asyncio.sleep(3600) await send_alert(f"Heartbeat: balance={await get_balance()}", "INFO") עם מפתחות API וטוקן Telegram.
  7. הנח את קובץ ה-unit של systemd והפעל את השירות.
  8. הגדר התראות Telegram: התחלה, שגיאות, heartbeat כל שעה.
  9. בדוק את הלוג: cd /home/bot/trading-bot git pull origin main /home/bot/.venv/bin/pip install -r requirements.txt systemctl restart trading-bot .
  10. הגדר ניטור חיצוני (UptimeRobot).

לאחר שלבים אלה, הבוט פועל 24/7 עם הפעלה מחדש אוטומטית. אם משהו משתבש, Telegram יודיע לך.

מה כלול בהתקנה

  • תיעוד של תצורת השרת ומשתני הסביבה
  • גישת SSH עם זוגות מפתחות מאובטחים
  • התראות Telegram מוגדרות עם heartbeat והודעות שגיאה
  • תמיכה של 7 ימים לאחר הפריסה לכל בעיה
  • מדריך מפורט לתחזוקה ועדכונים

מלכודות נפוצות בהתקנה עצמית

לחץ להרחבת מלכודות נפוצות

בעיות נפוצות: ללא הפעלה מחדש אוטומטית (הבוט נשאר מושבת), מפתחות API בקוד (דליפה ב-GitHub), שרת חלש (OOM kill כשהנתונים גדלים), ללא ניטור (לומדים על קריסה שבוע אחר כך). כדי למזער סיכונים, השתמש בתבנית שלמעלה — היא נבדקה בקרב על מאות פריסות ייצור.

אם אינך בטוח לגבי התשתית שלך, הזמן מאיתנו התקנה סוהר. נכין את השרת, נפרוס את הבוט ונגדיר ניטור תוך 2–4 ימים. הפריסה הסוהר שלנו כוללת הגדרת שרת, תצורת בוט, ניטור ותיעוד — מסירה תוך 2–4 ימים. צור קשר לייעוץ חינם להערכת הפרויקט שלך.