−25%

Windows-এর বার্ষিক পেমেন্টে, ৩১ অক্টোবর পর্যন্ত। প্ল্যান দেখুন

EQVPS
শুরু করুন

REST API ও curl দিয়ে VPS পরিচালনা: অবস্থা, পাওয়ার, পুনঃইনস্টল, নবায়ন

সার্ভার অর্ডারের পর ড্যাশবোর্ডে আপনি যা যা করেন — অবস্থা দেখা, রিবুট, মেট্রিক পড়া, নাম বদলানো, OS পুনঃইনস্টল, কয়েক মাসের জন্য নবায়ন, বাতিল ও বাতিল ফেরানো — আসল উত্তরসহ কপি করার মতো curl কমান্ড হিসেবে।

API দিয়ে সার্ভার অর্ডার করতে একটি অনুরোধই লাগে। তা আছে 4টি API কলে VPS অর্ডার করুন-এ। এই পাতা তার পরের সবকিছু নিয়ে: যে রুটিন কাজগুলো আপনি নইলে ড্যাশবোর্ডে ক্লিক করে করতেন, সেগুলো স্ক্রিপ্টে পেস্ট করার মতো curl কমান্ড হিসেবে লেখা।

নিচের প্রতিটি কমান্ড প্রকাশের আগে আমাদের API-তে চালানো হয়েছে, আর উত্তরগুলো ফেরত আসা ফলাফলের সংক্ষিপ্ত কপি।

প্রস্তুতি

দুটি variable কমান্ডগুলো ছোট রাখে:

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"

প্রতিটি এন্ট্রির 47HZ7YF-এর মতো একটি id আছে। এটিই সার্ভিস কোড, যা বাকি সব কল নেয়। তারপর একটি সার্ভারের পুরো চিত্র:

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 ফেরত দেয় এবং কিছুই বদলায় না।

OS পুনঃইনস্টল করুন

এটি ডিস্ক মুছে দেয়। API আপনাকে confirm-এ সার্ভারের বর্তমান hostname লিখতে বাধ্য করে, যাতে ভুল সার্ভিস id থাকা স্ক্রিপ্ট ভুল মেশিন মুছতে না পারে:

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 আসে GET /products-এ আপনার প্ল্যানের available_os তালিকা থেকে বা সার্ভারের নিজের বিবরণ থেকে। পুনঃইনস্টল পটভূমিতে চলে; status আবার active না হওয়া পর্যন্ত GET /services/{id} জিজ্ঞেস করতে থাকুন।

নবায়ন ও ব্যালান্স

সার্ভারগুলো প্রতি মাসে আপনার প্রিপেইড ব্যালান্স থেকে নবায়ন হয়। এই সার্ভারের জন্য দীর্ঘ মেয়াদের দাম দেখতে:

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 থাকে। এটি ক্রিপ্টো চেকআউট: Base, Ethereum বা Polygon-এ USDT, USDC বা ETH। পেমেন্ট on-chain নিশ্চিত হলে ব্যালান্সে জমা হয়। পরিশোধই একমাত্র ধাপ যা স্ক্রিপ্ট আপনার হয়ে করতে পারে না, যদি না তার ওয়ালেট থাকে।

Monero-ও চলে, তবে কেবল হাতে যাচাই করা ব্যালান্স টপ-আপ হিসেবে: আপনি XMR পাঠান, লেনদেনের id জমা দেন, আর আমরা যাচাইয়ের পর জমা করি। দেখুন 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 এজেন্ট কীভাবে MCP দিয়ে নিজের VPS সামলায় এবং API রেফারেন্স। এখনো সার্ভার নেই? প্ল্যান বেছে নিন।

FAQ

VPS অটোমেট করতে কি MCP সার্ভার লাগবে?

না। MCP হলো AI ক্লায়েন্টের জন্য একটি সুবিধা; প্রতিটি MCP টুল ভেতরে একই REST API কল করে। shell স্ক্রিপ্ট, cron জব বা CI পাইপলাইন একই টোকেন দিয়ে সরাসরি curl ব্যবহার করতে পারে।

টোকেন কোথায় পাব?

POST /auth/register থেকে (নিজে সাইন আপ করা এজেন্ট) অথবা ড্যাশবোর্ড থেকে: Settings → API tokens। নতুন টোকেন ডিফল্টভাবে এক বছর বৈধ; POST /auth/token/refresh মেয়াদ শেষের আগে টোকেনটি নতুনটিতে বদলে দেয়।

ভুল কমান্ড কি আমার সার্ভার মুছে দিতে পারে?

কেবল দুটি কল ডেটা ধ্বংস করে: পুনঃইনস্টল এবং তাৎক্ষণিক বাতিল। confirm ফিল্ডে সার্ভারের হুবহু hostname না লিখলে দুটিই চলতে অস্বীকার করে। রিবুট, স্টপ, hostname ও নবায়ন আপনার ফাইল স্পর্শ করে না।

নবায়নের অর্থ কীভাবে দেওয়া হয়?

প্রিপেইড ব্যালান্স থেকে। ব্যালান্সে কুলালে সার্ভার প্রতি মাসে নিজে থেকে নবায়ন হয়; POST /services/{id}/renew এক কলে 1, 3, 6 বা 12 মাস আগাম পরিশোধ করে। ব্যালান্স কম থাকলে একই কল কিছু না কেটে ক্রিপ্টো চেকআউট লিংকসহ একটি ইনভয়েস ফেরত দেয়।

অনুরোধের কোনো সীমা আছে?

হ্যাঁ, প্রতি টোকেন ও প্রতি কাজে — যেমন মিনিটে 10টি টোকেন রিফ্রেশ, মিনিটে 20টি টিকিট। কয়েক সেকেন্ড পরপর অবস্থা দেখা স্ক্রিপ্ট ঠিক আছে; লুপে পাওয়ার কাজ বর্ষণ করা স্ক্রিপ্ট Retry-After সহ 429 পাবে।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।