−25%

за Windows при годишно плащане, до 31.10. Към плановете

EQVPS
Започни

Управление на VPS чрез REST API и curl: състояние, захранване, преинсталиране, подновяване

Всичко, което правите в кабинета след поръчката на сървър — проверка на състоянието, рестарт, метрики, преименуване, преинсталиране на ОС, подновяване за няколко месеца, отказ и отмяна — като curl команди за копиране с истински отговори.

Поръчката на сървър през API е една заявка. За това е Поръчка на VPS с 4 извиквания на API. Тази страница е за всичко след това: рутинните действия, които иначе бихте правили с кликове в кабинета, записани като 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 задача, която ви известява, когато дискът расте непрекъснато. Броячите на трафика за текущия период са в Проверка на скоростта и трафика.

Преименуване на сървъра

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

Новото име се прилага в работещата система от гост агента, на Linux без рестарт. Ако сървърът е спрян или сте премахнали qemu-guest-agent, извикването връща 409 agent_unavailable и нищо не се променя.

Преинсталиране на ОС

Това изтрива диска. 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. Балансът се захранва, щом плащането се потвърди в мрежата. Плащането е единствената стъпка, която скриптът не може да направи вместо вас, освен ако не държи портфейл.

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

Правите това от ИИ клиент вместо от скрипт? Същите действия съществуват като MCP инструменти — вижте Как ИИ агент сам поддържа своя VPS през MCP и справочника на API. Още нямате сървър? Изберете план.

Въпроси

Трябва ли ми MCP сървърът, за да автоматизирам VPS?

Не. MCP е удобство за ИИ клиенти; всеки MCP инструмент отдолу вика същия REST API. Shell скрипт, cron задача или CI pipeline може да ползва curl директно със същия токен.

Откъде да взема токен?

Или от POST /auth/register (агент, който се регистрира сам), или от кабинета: Settings → API tokens. Новите токени по подразбиране важат една година; POST /auth/token/refresh сменя токена с нов преди да изтече.

Може ли грешна команда да изтрие сървъра ми?

Само две извиквания унищожават данни: преинсталирането и незабавният отказ. И двете отказват да се изпълнят, ако не повторите точния hostname на сървъра в полето confirm. Рестартът, спирането, hostname и подновяването не пипат файловете ви.

Как се плаща подновяването?

От предплатения баланс. Сървърът се подновява сам всеки месец, ако балансът стига; POST /services/{id}/renew плаща 1, 3, 6 или 12 месеца напред с едно извикване. Ако балансът не стига, същото извикване връща сметка с линк за крипто плащане, вместо да тегли нещо.

Има ли ограничение на заявките?

Да, за токен и за действие — например 10 подновявания на токена в минута, 20 тикета в минута. Скрипт, който проверява състоянието на няколко секунди, е наред; такъв, който в цикъл засипва действия за захранване, ще получи 429 с Retry-After.

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.