Đặ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ĩa | Cần làm |
|---|---|---|
| 401 | Thiếu token, token bị thu hồi hoặc hết hạn | Làm mới hoặc tạo token mới |
| 402 | Số 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 đó |
| 409 | Má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 |
| 422 | Một trường bị sai hoặc thiếu | Phản hồi cho biết trường nào |
| 429 | Quá 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.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.