−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS
Zacznij

Zarządzanie VPS przez REST API i curl: status, zasilanie, reinstalacja, odnowienie

Wszystko, co robisz w panelu po zamówieniu serwera — sprawdzenie stanu, restart, odczyt metryk, zmiana nazwy, reinstalacja systemu, odnowienie na kilka miesięcy, rezygnacja i jej cofnięcie — jako polecenia curl do skopiowania, z prawdziwymi odpowiedziami.

Zamówienie serwera przez API to jedno zapytanie. Opisuje to Zamów VPS w 4 wywołaniach API. Ta strona dotyczy wszystkiego, co potem: rutynowych czynności, które inaczej wyklikałbyś w panelu, zapisanych jako polecenia curl do wklejenia w skrypt.

Każde polecenie poniżej uruchomiliśmy na naszym API przed publikacją, a odpowiedzi to skrócone kopie tego, co wróciło.

Przygotowanie

Dwie zmienne skracają polecenia:

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

Token pochodzi z POST /auth/register albo z Settings → API tokens w panelu. Trzymaj go poza historią powłoki, jeśli z maszyny korzystają inni; wczytanie go z pliku przez export EQVPS_TOKEN=$(cat ~/.eqvps_token) wystarczy.

Znajdź swoje serwery

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

Każdy wpis ma id w rodzaju 47HZ7YF. To kod usługi, którego wymaga każde inne wywołanie. Następnie pełny obraz jednego serwera:

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 mówi, jak się zalogować. W planie z własnym IPv4 port to 22; w planie NAT to twój osobisty przekierowany port. To wywołanie tylko czyta, więc odpytywanie go w pętli jest bezpieczne.

Jeśli zamówiłeś bez klucza SSH, hasło root jest pokazywane raz:

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

Dopóki serwer jeszcze się uruchamia, odpowiedź brzmi password_pending, a jednorazowe wyświetlenie nie przepada. Odczekaj pół minuty i zapytaj ponownie.

Zasilanie: 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 to start, stop lub reboot. Serwer, który nie jest jeszcze aktywny (wciąż powstaje albo jest zawieszony za brak płatności), odpowiada 409 Service is not active. To nie błąd w twoim skrypcie. Najpierw sprawdź status.

Metryki

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

CPU, pamięć, sieć i dysk jako szereg czasowy. timeframe to hour (domyślnie), day, week lub month. Przydatne dla zadania cron, które powiadomi cię, gdy dysk ciągle rośnie. Liczniki ruchu za bieżący okres rozliczeniowy są w Sprawdzanie prędkości i ruchu.

Zmiana nazwy serwera

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

Nową nazwę ustawia agent gościa w działającym systemie, na Linuksie bez restartu. Jeśli serwer jest zatrzymany albo usunąłeś qemu-guest-agent, wywołanie zwraca 409 agent_unavailable i nic się nie zmienia.

Reinstalacja systemu

To wywołanie czyści dysk. API wymaga wpisania bieżącego hostname serwera w confirm, więc skrypt z błędnym id usługi nie skasuje nie tej maszyny:

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 pochodzi z listy available_os twojego planu w GET /products lub ze szczegółów samego serwera. Reinstalacja działa w tle; odpytuj GET /services/{id}, aż status znów będzie active.

Odnowienie i saldo

Serwery odnawiają się co miesiąc z przedpłaconego salda. Aby zobaczyć, ile kosztują dłuższe okresy dla tego serwera:

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

Aby zapłacić z góry, powiedzmy za trzy miesiące, jednym wywołaniem:

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

months to 1, 3, 6 lub 12, a 12 jest rozliczane po cenie rocznej z rabatem. Odpowiedź zawiera paid_from_balance: true i nową datę wygaśnięcia. Jeśli saldo nie pokrywa kwoty, nic nie jest pobierane: dostajesz paid_from_balance: false i zamiast tego checkout_url dla tej faktury. Po doładowaniu salda POST $API/invoices/{invoice_id}/pay opłaca tę fakturę z salda; jeśli wciąż brakuje, zwraca ten sam rodzaj checkout_url i niczego nie pobiera. Sprawdzanie i doładowanie salda:

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

Odpowiedź na doładowanie zawiera checkout_url. To płatność krypto: USDT, USDC lub ETH w sieci Base, Ethereum lub Polygon. Saldo zostaje zasilone, gdy płatność potwierdzi się w sieci. Płacenie to jedyny krok, którego skrypt nie zrobi za ciebie, chyba że ma portfel.

Monero też działa, ale tylko jako doładowanie salda z ręczną weryfikacją: wysyłasz XMR, podajesz id transakcji, a my księgujemy po sprawdzeniu. Zobacz Płatność w Monero.

Rezygnacja i zmiana zdania

Bezpieczna rezygnacja zostawia serwer działający do końca opłaconego okresu i po prostu go nie odnawia:

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 jest wymagane. Wystarczy kilka słów. Zmieniłeś zdanie przed datą?

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

Istnieje też "type": "immediate". Usuwa serwer i jego dane od razu, wymaga "confirm": "<hostname>" i nie da się go cofnąć. Jeśli naprawdę nie o to chodzi, użyj end_of_period.

Utrzymanie tokenu przy życiu

Nowe tokeny żyją domyślnie rok. Każda uwierzytelniona odpowiedź ma nagłówek X-Token-Expires-At, więc skrypt może to zauważyć wcześniej. Wymień token na świeży:

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

Stary token przestaje działać natychmiast, więc zapisz nowy, zanim zrobisz cokolwiek innego.

Błędy, które warto obsłużyć

KodZnaczenieCo zrobić
401Brak tokenu, unieważniony lub wygasłyOdświeżyć lub utworzyć nowy
402Za niskie saldo dla akcji, która korzysta tylko z salda (na przykład zmiana planu)Doładować i powtórzyć to samo wywołanie
409Serwer w niewłaściwym stanie (jeszcze nieaktywny, operacja w toku, nic do cofnięcia)Przeczytać message, sprawdzić status, spróbować później
422Pole jest błędne lub go brakOdpowiedź wskazuje które
429Za dużo zapytańPoczekać Retry-After

Robisz to z klienta AI zamiast ze skryptu? Te same akcje istnieją jako narzędzia MCP — zobacz Jak agent sam prowadzi swój VPS przez MCP i dokumentację API. Nie masz jeszcze serwera? Wybierz plan.

FAQ

Czy do automatyzacji VPS potrzebuję serwera MCP?

Nie. MCP to wygoda dla klientów AI; każde narzędzie MCP wywołuje pod spodem to samo REST API. Skrypt powłoki, zadanie cron lub pipeline CI mogą używać curl bezpośrednio z tym samym tokenem.

Skąd wziąć token?

Z POST /auth/register (agent rejestrujący się sam) albo z panelu: Settings → API tokens. Nowe tokeny są domyślnie ważne rok; POST /auth/token/refresh wymienia token na nowy przed wygaśnięciem.

Czy błędne polecenie może skasować mój serwer?

Dane niszczą tylko dwa wywołania: reinstalacja i natychmiastowa rezygnacja. Oba odmawiają działania, jeśli nie powtórzysz dokładnego hostname serwera w polu confirm. Restart, zatrzymanie, hostname i odnowienie nie ruszają twoich plików.

Jak opłacane jest odnowienie?

Z przedpłaconego salda. Serwer odnawia się co miesiąc sam, jeśli saldo wystarcza; POST /services/{id}/renew opłaca 1, 3, 6 lub 12 miesięcy z góry jednym wywołaniem. Jeśli saldo jest za niskie, to samo wywołanie zwraca fakturę z linkiem do płatności krypto zamiast czegokolwiek pobierać.

Czy jest limit zapytań?

Tak, na token i na akcję — na przykład 10 odświeżeń tokenu na minutę, 20 zgłoszeń na minutę. Skrypt sprawdzający status co kilka sekund jest w porządku; taki, który w pętli zasypuje akcje zasilania, dostanie 429 z Retry-After.

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.