API-ით სერვერის შეკვეთა ერთი მოთხოვნაა. ამის შესახებ არის VPS-ის შეკვეთა API-ის 4 გამოძახებით. ეს გვერდი ყველაფერზეა, რაც შემდეგ მოდის: რუტინული მოქმედებები, რომლებსაც სხვა შემთხვევაში კაბინეტში დაწკაპუნებით გააკეთებდით, ჩაწერილი 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"}'
ახალ სახელს მომუშავე სისტემაში სტუმრის აგენტი აყენებს, Linux-ზე გადატვირთვის გარეშე. თუ სერვერი გაჩერებულია ან qemu-guest-agent წაშალეთ, გამოძახება 409 agent_unavailable-ს აბრუნებს და არაფერი იცვლება.
OS-ის ხელახალი ინსტალაცია
ეს დისკს შლის. API გავალდებულებთ სერვერის მიმდინარე hostname ჩაწეროთ confirm-ში, რომ არასწორი სერვისის 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 მოდის თქვენი ტარიფის 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-ს, გადასცემთ ტრანზაქციის 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 აგენტი საკუთარ VPS-ს MCP-ით და API-ის ცნობარი. ჯერ სერვერი არ გაქვთ? აირჩიეთ ტარიფი.
კომენტარები
ჯერ არ არის კომენტარები. იყავით პირველი.