−25%

στα Windows με ετήσια χρέωση, έως 31/10. Δείτε τα πακέτα

EQVPS
Ξεκινήστε

Διαχείριση VPS με REST API και curl: κατάσταση, τροφοδοσία, επανεγκατάσταση, ανανέωση

Ό,τι κάνετε στον πίνακα ελέγχου μετά την παραγγελία ενός server — έλεγχος κατάστασης, επανεκκίνηση, μετρήσεις, μετονομασία, επανεγκατάσταση OS, ανανέωση για μερικούς μήνες, ακύρωση και αναίρεση — ως εντολές curl για αντιγραφή, με πραγματικές απαντήσεις.

Η παραγγελία ενός server μέσω API είναι ένα αίτημα. Αυτό καλύπτεται στο Παραγγελία VPS με 4 κλήσεις API. Αυτή η σελίδα αφορά όλα όσα ακολουθούν: τις καθημερινές ενέργειες που αλλιώς θα κάνατε με κλικ στον πίνακα ελέγχου, γραμμένες ως εντολές curl για επικόλληση σε script.

Κάθε εντολή παρακάτω εκτελέστηκε στο API μας πριν τη δημοσίευση, και οι απαντήσεις είναι συντομευμένα αντίγραφα όσων επέστρεψαν.

Προετοιμασία

Δύο μεταβλητές κρατούν τις εντολές σύντομες:

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

Το token προέρχεται από το POST /auth/register ή από το Settings → API tokens στον πίνακα ελέγχου. Κρατήστε το έξω από το ιστορικό του shell αν το μηχάνημα το χρησιμοποιούν κι άλλοι· αρκεί να το διαβάζετε από αρχείο με export EQVPS_TOKEN=$(cat ~/.eqvps_token).

Βρείτε τους servers σας

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

Κάθε εγγραφή έχει ένα id όπως 47HZ7YF. Αυτός είναι ο κωδικός υπηρεσίας που δέχεται κάθε άλλη κλήση. Έπειτα η πλήρης εικόνα ενός server:

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"

Όσο ο server ακόμη ξεκινά, η απάντηση λέει 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. Ένας server που δεν είναι ακόμη ενεργός (δημιουργείται ακόμη ή έχει ανασταλεί για μη πληρωμή) απαντά 409 Service is not active. Δεν είναι σφάλμα του script σας. Ελέγξτε πρώτα το status.

Μετρήσεις

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

CPU, μνήμη, δίκτυο και δίσκος ως χρονοσειρά. Το timeframe είναι hour (προεπιλογή), day, week ή month. Χρήσιμο για ένα cron job που σας ειδοποιεί όταν ο δίσκος συνεχώς μεγαλώνει. Οι μετρητές κίνησης για την τρέχουσα περίοδο χρέωσης βρίσκονται στο Έλεγχος ταχύτητας και κίνησης.

Μετονομασία του server

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. Αν ο server είναι σταματημένος ή αφαιρέσατε το qemu-guest-agent, η κλήση επιστρέφει 409 agent_unavailable και τίποτα δεν αλλάζει.

Επανεγκατάσταση του OS

Αυτή σβήνει τον δίσκο. Το API σας υποχρεώνει να γράψετε το τρέχον hostname του server στο confirm, ώστε ένα script με λάθος 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 ή από τα στοιχεία του ίδιου του server. Η επανεγκατάσταση τρέχει στο παρασκήνιο· ρωτάτε το GET /services/{id} μέχρι το status να γίνει ξανά active.

Ανανέωση και υπόλοιπο

Οι servers ανανεώνονται κάθε μήνα από το προπληρωμένο υπόλοιπο. Για να δείτε πόσο κοστίζουν μεγαλύτερες περίοδοι για αυτόν τον server:

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. Η πληρωμή είναι το μόνο βήμα που ένα script δεν μπορεί να κάνει για εσάς, εκτός αν έχει πορτοφόλι.

Λειτουργεί και το Monero, αλλά μόνο ως φόρτιση υπολοίπου με χειροκίνητο έλεγχο: στέλνετε XMR, δίνετε το id της συναλλαγής και πιστώνουμε μετά τον έλεγχο. Δείτε Πληρωμή με Monero.

Ακύρωση, και αλλαγή γνώμης

Η ασφαλής ακύρωση αφήνει τον server να τρέχει μέχρι το τέλος της πληρωμένης περιόδου και απλώς δεν τον ανανεώνει:

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". Σβήνει τον server και τα δεδομένα του αμέσως, χρειάζεται "confirm": "<hostname>" και δεν αναιρείται. Εκτός αν το εννοείτε πραγματικά, χρησιμοποιήστε end_of_period.

Κρατήστε το token ζωντανό

Τα νέα tokens ζουν ένα χρόνο από προεπιλογή. Κάθε πιστοποιημένη απάντηση φέρει την κεφαλίδα X-Token-Expires-At, ώστε ένα script να το προσέξει νωρίς. Ανταλλάξτε το token με ένα νέο:

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

Το παλιό token σταματά να λειτουργεί αμέσως, οπότε αποθηκεύστε το νέο πριν κάνετε οτιδήποτε άλλο.

Σφάλματα που αξίζει να χειριστείτε

ΚωδικόςΤι σημαίνειΤι να κάνετε
401Το token λείπει, ανακλήθηκε ή έληξεΑνανεώστε ή δημιουργήστε νέο
402Χαμηλό υπόλοιπο για ενέργεια που παίρνει μόνο από το υπόλοιπο (π.χ. αλλαγή πακέτου)Φορτίστε και επαναλάβετε την ίδια κλήση
409Ο server δεν είναι στη σωστή κατάσταση (όχι ακόμη ενεργός, εκτελείται λειτουργία, τίποτα για αναίρεση)Διαβάστε το message, ελέγξτε το status, δοκιμάστε αργότερα
422Ένα πεδίο είναι λάθος ή λείπειΗ απάντηση λέει ποιο
429Πάρα πολλά αιτήματαΠεριμένετε Retry-After

Το κάνετε από πελάτη AI αντί για script; Οι ίδιες ενέργειες υπάρχουν ως εργαλεία MCP — δείτε Πώς ένας πράκτορας AI διαχειρίζεται μόνος τον VPS του μέσω MCP και την τεκμηρίωση του API. Δεν έχετε ακόμη server; Επιλέξτε πακέτο.

Συχνές ερωτήσεις

Χρειάζομαι τον MCP server για να αυτοματοποιήσω τον VPS μου;

Όχι. Το MCP είναι διευκόλυνση για πελάτες AI· κάθε εργαλείο MCP καλεί από κάτω το ίδιο REST API. Ένα shell script, ένα cron job ή ένα CI pipeline μπορεί να χρησιμοποιεί curl απευθείας με το ίδιο token.

Από πού παίρνω το token;

Είτε από το POST /auth/register (ένας πράκτορας που εγγράφεται μόνος του) είτε από τον πίνακα ελέγχου: Settings → API tokens. Τα νέα tokens ισχύουν ένα χρόνο από προεπιλογή· το POST /auth/token/refresh ανταλλάσσει ένα token με νέο πριν λήξει.

Μπορεί μια λάθος εντολή να σβήσει τον server μου;

Μόνο δύο κλήσεις καταστρέφουν δεδομένα: η επανεγκατάσταση και η άμεση ακύρωση. Και οι δύο αρνούνται να εκτελεστούν αν δεν επαναλάβετε το ακριβές hostname του server στο πεδίο confirm. Επανεκκίνηση, διακοπή, hostname και ανανέωση δεν αγγίζουν τα αρχεία σας.

Πώς πληρώνεται η ανανέωση;

Από το προπληρωμένο υπόλοιπο. Ο server ανανεώνεται μόνος του κάθε μήνα αν το υπόλοιπο αρκεί· το POST /services/{id}/renew πληρώνει 1, 3, 6 ή 12 μήνες μπροστά με μία κλήση. Αν το υπόλοιπο δεν αρκεί, η ίδια κλήση επιστρέφει τιμολόγιο με σύνδεσμο πληρωμής σε κρυπτό αντί να χρεώσει.

Υπάρχει όριο αιτημάτων;

Ναι, ανά token και ανά ενέργεια — για παράδειγμα 10 ανανεώσεις token το λεπτό, 20 tickets το λεπτό. Ένα script που ρωτά την κατάσταση κάθε λίγα δευτερόλεπτα είναι εντάξει· ένα που βομβαρδίζει ενέργειες τροφοδοσίας σε βρόχο θα πάρει 429 με Retry-After.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.