−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS
Bắt đầu

Quản lý VPS bằng REST API và curl: trạng thái, nguồn, cài lại, gia hạn

Mọi việc bạn làm trong bảng điều khiển sau khi đặt máy chủ — xem trạng thái, khởi động lại, đọc số liệu, đổi tên, cài lại hệ điều hành, gia hạn vài tháng, hủy và hoàn tác — dưới dạng lệnh curl để sao chép, kèm phản hồi thật.

Đặt máy chủ qua API chỉ mất một yêu cầu. Việc đó có trong Đặt VPS bằng 4 lệnh gọi API. Trang này nói về mọi thứ sau đó: các thao tác thường ngày mà bạn vẫn bấm trong bảng điều khiển, viết thành lệnh curl để dán vào script.

Mọi lệnh dưới đây đều đã được chạy trên API của chúng tôi trước khi đăng, và các phản hồi là bản rút gọn của kết quả trả về.

Chuẩn bị

Hai biến giúp lệnh ngắn gọn:

export API=https://api.eqvps.com/api/v1/eqvps
export EQVPS_TOKEN='paste-your-token-here'

Token lấy từ POST /auth/register hoặc từ Settings → API tokens trong bảng điều khiển. Đừng để nó trong lịch sử shell nếu người khác dùng chung máy; đọc từ tệp bằng export EQVPS_TOKEN=$(cat ~/.eqvps_token) là đủ.

Tìm máy chủ của bạn

curl -s $API/services -H "Authorization: Bearer $EQVPS_TOKEN"

Mỗi mục có một id như 47HZ7YF. Đó là mã dịch vụ mà mọi lệnh gọi khác cần. Sau đó là toàn cảnh một máy chủ:

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 cho biết cách đăng nhập. Với gói có IPv4 riêng, cổng là 22; với gói NAT, đó là cổng chuyển tiếp riêng của bạn. Lệnh gọi này chỉ đọc, nên gọi lặp lại trong vòng lặp là an toàn.

Nếu bạn đặt mà không có khóa SSH, mật khẩu root được hiển thị một lần:

curl -s "$API/services/47HZ7YF?reveal=1" -H "Authorization: Bearer $EQVPS_TOKEN"

Trong lúc máy chủ còn đang khởi động, phản hồi là password_pending và lượt hiển thị một lần chưa bị dùng. Đợi nửa phút rồi hỏi lại.

Nguồn: 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 là start, stop hoặc reboot. Máy chủ chưa hoạt động (vẫn đang được tạo, hoặc bị tạm ngưng do chưa thanh toán) trả lời 409 Service is not active. Đó không phải lỗi trong script của bạn. Hãy kiểm tra status trước.

Số liệu

curl -s "$API/services/47HZ7YF/metrics?timeframe=day" -H "Authorization: Bearer $EQVPS_TOKEN"

CPU, bộ nhớ, mạng và đĩa dưới dạng chuỗi thời gian. timeframe là hour (mặc định), day, week hoặc month. Hữu ích cho cron job báo bạn khi đĩa cứ tăng mãi. Bộ đếm lưu lượng của kỳ thanh toán hiện tại có trong Kiểm tra tốc độ và lưu lượng.

Đổi tên máy chủ

curl -s -X POST $API/services/47HZ7YF/hostname \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"hostname": "web-01"}'

Tên mới được guest agent áp dụng bên trong hệ thống đang chạy, không cần khởi động lại trên Linux. Nếu máy chủ đang dừng, hoặc bạn đã gỡ qemu-guest-agent, lệnh gọi trả về 409 agent_unavailable và không có gì thay đổi.

Cài lại hệ điều hành

Lệnh này xóa đĩa. API buộc bạn gõ hostname hiện tại của máy chủ vào confirm, để một script với id dịch vụ sai không thể xóa nhầm máy:

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 lấy từ danh sách available_os của gói bạn trong GET /products hoặc từ thông tin chi tiết của chính máy chủ. Việc cài lại chạy nền; gọi GET /services/{id} cho đến khi status trở lại active.

Gia hạn và số dư

Máy chủ gia hạn hằng tháng từ số dư trả trước. Để xem các kỳ hạn dài hơn cho máy chủ này giá bao nhiêu:

curl -s $API/services/47HZ7YF/renew-options -H "Authorization: Bearer $EQVPS_TOKEN"

Để trả trước, chẳng hạn ba tháng, trong một lần gọi:

curl -s -X POST $API/services/47HZ7YF/renew \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"months": 3}'

months là 1, 3, 6 hoặc 12, và 12 được tính theo giá năm kèm chiết khấu. Phản hồi ghi paid_from_balance: true và cho biết ngày hết hạn mới. Nếu số dư không đủ, không có gì bị trừ: bạn nhận paid_from_balance: false và thay vào đó là một checkout_url cho hóa đơn đó. Khi số dư đã được nạp, POST $API/invoices/{invoice_id}/pay trả hóa đơn đó từ số dư; nếu vẫn thiếu, nó trả về cùng loại checkout_url và không trừ gì. Kiểm tra và nạp số dư:

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}'

Phản hồi nạp tiền chứa một checkout_url. Đó là thanh toán crypto: USDT, USDC hoặc ETH trên Base, Ethereum hoặc Polygon. Số dư được cộng khi giao dịch được xác nhận on-chain. Thanh toán là bước duy nhất mà script không làm thay bạn được, trừ khi nó giữ một ví.

Monero cũng dùng được, nhưng chỉ để nạp số dư với kiểm tra thủ công: bạn gửi XMR, cung cấp id giao dịch, và chúng tôi cộng tiền sau khi xác minh. Xem Thanh toán bằng Monero.

Hủy, và đổi ý

Cách hủy an toàn giữ máy chủ chạy đến hết kỳ đã trả và chỉ đơn giản là không gia hạn:

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 là bắt buộc. Vài chữ là đủ. Đổi ý trước ngày đó?

curl -s -X POST $API/services/47HZ7YF/cancel/undo -H "Authorization: Bearer $EQVPS_TOKEN"

Cũng có "type": "immediate". Nó xóa máy chủ và dữ liệu ngay lập tức, cần "confirm": "<hostname>" và không thể hoàn tác. Trừ khi bạn thật sự muốn vậy, hãy dùng end_of_period.

Giữ token còn hiệu lực

Token mới mặc định sống một năm. Mọi phản hồi đã xác thực đều có header X-Token-Expires-At, nên script có thể nhận ra sớm. Đổi token lấy token mới:

curl -s -X POST $API/auth/token/refresh -H "Authorization: Bearer $EQVPS_TOKEN"

Token cũ ngừng hoạt động ngay, nên hãy lưu token mới trước khi làm bất cứ việc gì khác.

Các lỗi nên xử lý

MãÝ nghĩaCần làm
401Thiếu token, token bị thu hồi hoặc hết hạnLàm mới hoặc tạo token mới
402Số dư quá thấp cho thao tác chỉ dùng số dư (ví dụ đổi gói)Nạp tiền rồi lặp lại đúng lệnh gọi đó
409Máy chủ không ở trạng thái phù hợp (chưa hoạt động, đang có thao tác, không có gì để hoàn tác)Đọc message, kiểm tra status, thử lại sau
422Một trường bị sai hoặc thiếuPhản hồi cho biết trường nào
429Quá nhiều yêu cầuĐợi Retry-After

Làm việc này từ client AI thay vì script? Các thao tác tương tự có sẵn dưới dạng công cụ MCP — xem Cách AI agent tự quản lý VPS của mình qua MCP và tài liệu API. Chưa có máy chủ? Chọn gói.

FAQ

Tôi có cần máy chủ MCP để tự động hóa VPS không?

Không. MCP là tiện ích cho các client AI; mọi công cụ MCP đều gọi cùng một REST API bên dưới. Một script shell, cron job hay pipeline CI có thể dùng curl trực tiếp với cùng token.

Lấy token ở đâu?

Từ POST /auth/register (agent tự đăng ký) hoặc từ bảng điều khiển: Settings → API tokens. Token mới mặc định có hiệu lực một năm; POST /auth/token/refresh đổi token lấy token mới trước khi hết hạn.

Một lệnh sai có thể xóa máy chủ của tôi không?

Chỉ hai lệnh gọi hủy dữ liệu: cài lại và hủy ngay lập tức. Cả hai đều từ chối chạy nếu bạn không lặp lại chính xác hostname của máy chủ trong trường confirm. Khởi động lại, dừng, đổi hostname và gia hạn không động đến tệp của bạn.

Gia hạn được thanh toán thế nào?

Từ số dư trả trước. Máy chủ tự gia hạn hằng tháng nếu số dư đủ; POST /services/{id}/renew trả trước 1, 3, 6 hoặc 12 tháng trong một lần gọi. Nếu số dư thiếu, chính lệnh gọi đó trả về một hóa đơn kèm liên kết thanh toán crypto thay vì trừ tiền.

Có giới hạn số yêu cầu không?

Có, theo token và theo thao tác — ví dụ 10 lần làm mới token mỗi phút, 20 ticket mỗi phút. Script kiểm tra trạng thái vài giây một lần thì ổn; script dồn dập thao tác nguồn trong vòng lặp sẽ nhận 429 kèm Retry-After.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.