−25%

على الدفع السنوي لـ Windows حتى 31 أكتوبر. عرض الخطط

EQVPS
ابدأ الآن

إدارة VPS عبر REST API وcurl: الحالة والتشغيل وإعادة التثبيت والتجديد

كل ما تفعله في لوحة التحكم بعد طلب خادم — فحص حالته، إعادة تشغيله، قراءة المقاييس، تغيير اسمه، إعادة تثبيت النظام، تجديده لبضعة أشهر، الإلغاء والتراجع عنه — كأوامر curl جاهزة للنسخ مع ردود حقيقية.

طلب خادم عبر الـ API يتطلب طلبًا واحدًا، وهذا مشروح في اطلب VPS بأربعة استدعاءات API. هذه الصفحة عن كل ما يأتي بعده: الإجراءات الروتينية التي كنت ستنقر عليها في لوحة التحكم، مكتوبة كأوامر curl يمكنك لصقها في سكربت.

شغّلنا كل أمر أدناه على واجهتنا قبل النشر، والردود نسخ مختصرة مما عاد.

التحضير

متغيران يبقيان الأوامر قصيرة:

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"

المعالج والذاكرة والشبكة والقرص كسلسلة زمنية. قيمة 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"}'

يطبّق وكيل الضيف الاسم الجديد داخل النظام العامل، دون إعادة تشغيل على Linux. إذا كان الخادم متوقفًا، أو أزلت qemu-guest-agent، يعيد الاستدعاء 409 agent_unavailable ولا يتغير شيء.

أعد تثبيت النظام

هذا يمسح القرص. تُلزمك الواجهة بكتابة اسم المضيف الحالي للخادم في 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. يُضاف الرصيد بعد تأكيد الدفع على السلسلة. الدفع هو الخطوة الوحيدة التي لا يستطيع السكربت القيام بها عنك، ما لم يكن يملك محفظة.

يعمل 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

تفعل ذلك من عميل ذكاء اصطناعي بدل سكربت؟ الإجراءات نفسها متاحة كأدوات MCP — راجع كيف يدير وكيل ذكاء اصطناعي الـ VPS الخاص به عبر MCP ومرجع الـ API. ليس لديك خادم بعد؟ اختر خطة.

الأسئلة الشائعة

هل أحتاج إلى خادم MCP لأتمتة الـ VPS؟

لا. MCP وسيلة مريحة لعملاء الذكاء الاصطناعي؛ كل أداة MCP تستدعي في الخلفية نفس REST API. يمكن لسكربت shell أو مهمة cron أو مسار CI استخدام curl مباشرةً بالرمز نفسه.

من أين أحصل على الرمز؟

إما من POST /auth/register (وكيل يسجّل بنفسه) أو من لوحة التحكم: Settings → API tokens. الرموز الجديدة صالحة لسنة افتراضيًا؛ ويستبدل POST /auth/token/refresh الرمز برمز جديد قبل انتهاء صلاحيته.

هل يمكن لأمر خاطئ أن يمسح خادمي؟

استدعاءان فقط يدمّران البيانات: إعادة التثبيت والإلغاء الفوري. كلاهما يرفض التنفيذ ما لم تكرر اسم المضيف الدقيق للخادم في حقل confirm. إعادة التشغيل والإيقاف وتغيير اسم المضيف والتجديد لا تمسّ ملفاتك.

كيف يُدفع التجديد؟

من الرصيد المدفوع مسبقًا. يتجدد الخادم شهريًا من تلقاء نفسه إذا كفى الرصيد؛ ويدفع POST /services/{id}/renew مقدمًا 1 أو 3 أو 6 أو 12 شهرًا في استدعاء واحد. إذا نقص الرصيد، يعيد الاستدعاء نفسه فاتورة برابط دفع بالعملات المشفرة بدل الخصم.

هل هناك حد للطلبات؟

نعم، لكل رمز ولكل إجراء — مثلًا 10 تحديثات للرمز في الدقيقة، و20 تذكرة في الدقيقة. السكربت الذي يستعلم عن الحالة كل بضع ثوانٍ لا بأس به؛ أما الذي يمطر إجراءات التشغيل في حلقة فسيحصل على 429 مع Retry-After.

التعليقات

لا تعليقات بعد. كن الأول.

اترك تعليقًا

تُراجَع التعليقات قبل ظهورها.