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 রেফারেন্স। এখনো সার্ভার নেই? প্ল্যান বেছে নিন।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।