−25%

Windows รายปี ถึง 31 ต.ค. ดูแพ็กเกจ

EQVPS
เริ่มต้นใช้งาน

จัดการ VPS ด้วย REST API และ curl: สถานะ เปิดปิด ติดตั้งใหม่ ต่ออายุ

ทุกอย่างที่คุณทำในแดชบอร์ดหลังสั่งซื้อเซิร์ฟเวอร์ — ดูสถานะ รีบูต อ่านค่าสถิติ เปลี่ยนชื่อ ติดตั้ง OS ใหม่ ต่ออายุหลายเดือน ยกเลิกและเลิกยกเลิก — เป็นคำสั่ง curl พร้อมคัดลอก พร้อมคำตอบจริง

การสั่งซื้อเซิร์ฟเวอร์ผ่าน 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 job ที่แจ้งเตือนเมื่อดิสก์โตขึ้นเรื่อย ๆ ตัวนับทราฟฟิกของรอบบิลปัจจุบันอยู่ใน ตรวจความเร็วและทราฟฟิก

เปลี่ยนชื่อเซิร์ฟเวอร์

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 บังคับให้คุณพิมพ์ 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 ยอดเงินจะเข้าเมื่อธุรกรรมได้รับการยืนยัน 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 agent ดูแล VPS ของตัวเองผ่าน MCP อย่างไร และ เอกสารอ้างอิง API ยังไม่มีเซิร์ฟเวอร์? เลือกแพ็กเกจ

คำถามที่พบบ่อย

ต้องใช้ MCP เซิร์ฟเวอร์เพื่อทำ VPS อัตโนมัติไหม?

ไม่ต้อง MCP เป็นความสะดวกสำหรับไคลเอนต์ AI ทุกเครื่องมือ MCP เรียก REST API ตัวเดียวกันอยู่เบื้องหลัง สคริปต์ shell, cron job หรือ CI pipeline ใช้ curl ตรง ๆ ด้วยโทเค็นเดียวกันได้

รับโทเค็นจากที่ไหน?

จาก POST /auth/register (agent ที่สมัครเอง) หรือจากแดชบอร์ด: Settings → API tokens โทเค็นใหม่ใช้ได้หนึ่งปีโดยค่าเริ่มต้น POST /auth/token/refresh จะแลกโทเค็นเป็นอันใหม่ก่อนหมดอายุ

คำสั่งผิดจะลบเซิร์ฟเวอร์ของฉันได้ไหม?

มีเพียงสองคำสั่งที่ทำลายข้อมูล: การติดตั้งใหม่และการยกเลิกทันที ทั้งสองจะไม่ทำงานหากคุณไม่พิมพ์ hostname ของเซิร์ฟเวอร์ให้ตรงในฟิลด์ confirm การรีบูต หยุด เปลี่ยน hostname และต่ออายุไม่แตะไฟล์ของคุณ

การต่ออายุจ่ายอย่างไร?

จากยอดเงินเติมล่วงหน้า เซิร์ฟเวอร์ต่ออายุเองทุกเดือนถ้ายอดเงินพอ POST /services/{id}/renew จ่ายล่วงหน้า 1, 3, 6 หรือ 12 เดือนในการเรียกครั้งเดียว ถ้ายอดเงินไม่พอ การเรียกเดียวกันจะคืนใบแจ้งหนี้พร้อมลิงก์ชำระคริปโตแทนการตัดเงิน

มีการจำกัดจำนวนคำขอไหม?

มี ต่อโทเค็นและต่อการกระทำ — เช่น ต่ออายุโทเค็น 10 ครั้งต่อนาที ทิกเก็ต 20 รายการต่อนาที สคริปต์ที่เช็กสถานะทุกไม่กี่วินาทีไม่มีปัญหา แต่สคริปต์ที่ยิงคำสั่งเปิดปิดเป็นลูปจะได้ 429 พร้อม Retry-After

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง