−25%

על Windows בתשלום שנתי, עד 31.10. לחבילות

EQVPS
התחלה

ניהול VPS עם REST API ו-curl: מצב, הפעלה, התקנה מחדש, חידוש

כל מה שאתם עושים בלוח הבקרה אחרי הזמנת שרת — בדיקת מצב, אתחול, קריאת מדדים, שינוי שם, התקנת מערכת הפעלה מחדש, חידוש לכמה חודשים, ביטול וביטול הביטול — כפקודות curl להעתקה, עם תשובות אמיתיות.

הזמנת שרת דרך ה-API היא בקשה אחת. זה מוסבר בהזמנת VPS ב-4 קריאות API. העמוד הזה עוסק בכל מה שבא אחר כך: הפעולות השגרתיות שאחרת הייתם לוחצים עליהן בלוח הבקרה, כתובות כפקודות curl שאפשר להדביק בסקריפט.

כל פקודה למטה הורצה מול ה-API שלנו לפני הפרסום, והתשובות הן עותקים מקוצרים של מה שחזר.

הכנה

שני משתנים שומרים על הפקודות קצרות:

export API=https://api.eqvps.com/api/v1/eqvps
export EQVPS_TOKEN='paste-your-token-here'

הטוקן מגיע מ-POST /auth/register או מ-Settings → API tokens בלוח הבקרה. השאירו אותו מחוץ להיסטוריית ה-shell אם אחרים משתמשים במכונה; מספיק לקרוא אותו מקובץ עם export EQVPS_TOKEN=$(cat ~/.eqvps_token).

מצאו את השרתים שלכם

curl -s $API/services -H "Authorization: Bearer $EQVPS_TOKEN"

לכל רשומה יש id כמו 47HZ7YF. זה קוד השירות שכל שאר הקריאות מקבלות. אחר כך התמונה המלאה של שרת אחד:

curl -s $API/services/47HZ7YF -H "Authorization: Bearer $EQVPS_TOKEN"
{ "data": {
    "id": "47HZ7YF", "status": "active", "queued": false,
    "product": { "slug": "nano", "name": "Nano" },
    "specs": { "vcpu": 2, "memory_mb": 1024, "disk_gb": 15 },
    "hostname": "agent-box",
    "vm": { "state": "running", "uptime": 5340 },
    "access": { "method": "ssh", "host": "203.0.113.10", "port": 21521, "user": "root", "nat": true, ... } } }

access אומר לכם איך להתחבר. בתוכנית עם IPv4 משלה הפורט הוא 22; בתוכנית NAT זה הפורט המועבר האישי שלכם. הקריאה הזו רק קוראת, אז בטוח לתשאל אותה בלולאה.

אם הזמנתם בלי מפתח SSH, סיסמת ה-root מוצגת פעם אחת:

curl -s "$API/services/47HZ7YF?reveal=1" -H "Authorization: Bearer $EQVPS_TOKEN"

כל עוד השרת עדיין עולה, התשובה היא password_pending וההצגה החד-פעמית לא מתבזבזת. חכו חצי דקה ושאלו שוב.

הפעלה: start, stop, reboot

curl -s -X POST $API/services/47HZ7YF/power \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"action": "reboot"}'

action הוא start, stop או reboot. שרת שעדיין לא פעיל (עדיין נוצר, או מושעה בגלל אי-תשלום) עונה 409 Service is not active. זו לא שגיאה בסקריפט שלכם. בדקו קודם את status.

מדדים

curl -s "$API/services/47HZ7YF/metrics?timeframe=day" -H "Authorization: Bearer $EQVPS_TOKEN"

CPU, זיכרון, רשת ודיסק כסדרה עתית. timeframe הוא hour (ברירת מחדל), day, week או month. שימושי למשימת cron שמתריעה כשהדיסק ממשיך לגדול. מוני התעבורה לתקופת החיוב הנוכחית נמצאים בבדיקת מהירות ותעבורה.

שינוי שם השרת

curl -s -X POST $API/services/47HZ7YF/hostname \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"hostname": "web-01"}'

השם החדש מוחל בתוך המערכת הרצה על ידי ה-guest agent, בלי אתחול ב-Linux. אם השרת עצור, או שהסרתם את qemu-guest-agent, הקריאה מחזירה 409 agent_unavailable ושום דבר לא משתנה.

התקנה מחדש של מערכת ההפעלה

זו מוחקת את הדיסק. ה-API מחייב אתכם להקליד את ה-hostname הנוכחי של השרת ב-confirm, כך שסקריפט עם מזהה שירות שגוי לא יוכל למחוק את המכונה הלא נכונה:

curl -s -X POST $API/services/47HZ7YF/reinstall \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"os_id": 4, "confirm": "web-01"}'

os_id מגיע מרשימת available_os של התוכנית שלכם ב-GET /products או מפרטי השרת עצמו. ההתקנה מחדש רצה ברקע; תשאלו את GET /services/{id} עד ש-status חוזר ל-active.

חידוש ויתרה

שרתים מתחדשים כל חודש מהיתרה המשולמת מראש. כדי לראות כמה עולות תקופות ארוכות יותר לשרת הזה:

curl -s $API/services/47HZ7YF/renew-options -H "Authorization: Bearer $EQVPS_TOKEN"

כדי לשלם מראש, נניח שלושה חודשים, בקריאה אחת:

curl -s -X POST $API/services/47HZ7YF/renew \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"months": 3}'

months הוא 1, 3, 6 או 12, ו-12 מחויב במחיר השנתי עם ההנחה שלו. התשובה אומרת paid_from_balance: true ונותנת את תאריך התפוגה החדש. אם היתרה לא מכסה את הסכום, שום דבר לא מחויב: תקבלו paid_from_balance: false ובמקום זאת checkout_url לחשבונית הזו. אחרי טעינת היתרה, POST $API/invoices/{invoice_id}/pay משלם את החשבונית מהיתרה; אם עדיין חסר, הוא מחזיר אותו סוג checkout_url ולא מחייב דבר. בדיקה וטעינה של היתרה:

curl -s $API/balance -H "Authorization: Bearer $EQVPS_TOKEN"

curl -s -X POST $API/balance/topup \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"amount": 25}'

תשובת הטעינה מכילה checkout_url. זה תשלום בקריפטו: USDT, USDC או ETH ברשת Base, Ethereum או Polygon. היתרה מזוכה ברגע שהתשלום מאושר on-chain. התשלום הוא הצעד היחיד שסקריפט לא יכול לעשות בשבילכם, אלא אם הוא מחזיק ארנק.

גם Monero עובד, אבל רק כטעינת יתרה עם בדיקה ידנית: שולחים XMR, מגישים את מזהה העסקה, ואנחנו מזכים אחרי אימות. ראו תשלום ב-Monero.

ביטול, ושינוי דעה

הביטול הבטוח משאיר את השרת פועל עד סוף התקופה ששולמה ופשוט לא מחדש אותו:

curl -s -X POST $API/services/47HZ7YF/cancel \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "end_of_period", "reason": "moving the project elsewhere"}'

reason הוא חובה. כמה מילים מספיקות. שיניתם את דעתכם לפני התאריך?

curl -s -X POST $API/services/47HZ7YF/cancel/undo -H "Authorization: Bearer $EQVPS_TOKEN"

קיים גם "type": "immediate". הוא מוחק את השרת ואת הנתונים שלו מיד, דורש "confirm": "<hostname>" ואי אפשר לבטל אותו. אלא אם אתם באמת מתכוונים לזה, השתמשו ב-end_of_period.

שמרו על הטוקן בחיים

טוקנים חדשים חיים שנה כברירת מחדל. כל תשובה מאומתת נושאת כותרת X-Token-Expires-At, כך שסקריפט יכול לשים לב מוקדם. החליפו את הטוקן בחדש:

curl -s -X POST $API/auth/token/refresh -H "Authorization: Bearer $EQVPS_TOKEN"

הטוקן הישן מפסיק לעבוד מיד, אז שמרו את החדש לפני שאתם עושים כל דבר אחר.

שגיאות שכדאי לטפל בהן

קודמשמעותמה לעשות
401טוקן חסר, בוטל או פגלרענן או ליצור חדש
402יתרה נמוכה מדי לפעולה שלוקחת רק מהיתרה (למשל החלפת תוכנית)לטעון ואז לחזור על אותה קריאה
409השרת לא במצב הנכון (עדיין לא פעיל, פעולה רצה, אין מה לבטל)לקרוא את message, לבדוק את status, לנסות שוב מאוחר יותר
422שדה שגוי או חסרהתשובה אומרת איזה
429יותר מדי בקשותלחכות Retry-After

עושים את זה מלקוח AI במקום מסקריפט? אותן פעולות קיימות ככלי MCP — ראו איך סוכן AI מתחזק בעצמו את ה-VPS שלו דרך MCP ואת תיעוד ה-API. עוד אין לכם שרת? בחרו תוכנית.

שאלות נפוצות

צריך את שרת ה-MCP כדי לבצע אוטומציה ל-VPS?

לא. MCP הוא נוחות ללקוחות AI; כל כלי MCP קורא מתחת לאותו REST API. סקריפט shell, משימת cron או pipeline של CI יכולים להשתמש ב-curl ישירות עם אותו טוקן.

מאיפה מקבלים טוקן?

מ-POST /auth/register (סוכן שנרשם בעצמו) או מלוח הבקרה: Settings → API tokens. טוקנים חדשים תקפים שנה כברירת מחדל; POST /auth/token/refresh מחליף טוקן בחדש לפני שפג תוקפו.

פקודה שגויה יכולה למחוק את השרת שלי?

רק שתי קריאות הורסות נתונים: התקנה מחדש וביטול מיידי. שתיהן מסרבות לרוץ אם לא תחזרו על ה-hostname המדויק של השרת בשדה confirm. אתחול, עצירה, hostname וחידוש לא נוגעים בקבצים שלכם.

איך משלמים על החידוש?

מהיתרה המשולמת מראש. השרת מתחדש בעצמו כל חודש אם היתרה מספיקה; POST /services/{id}/renew משלם 1, 3, 6 או 12 חודשים מראש בקריאה אחת. אם היתרה חסרה, אותה קריאה מחזירה חשבונית עם קישור תשלום בקריפטו במקום לחייב.

יש מגבלת קצב?

כן, לכל טוקן ולכל פעולה — למשל 10 רענוני טוקן בדקה, 20 פניות בדקה. סקריפט שבודק מצב כל כמה שניות זה בסדר; סקריפט שמפציץ פעולות הפעלה בלולאה יקבל 429 עם Retry-After.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.