CLI-ul pluspanel
pluspanel este un singur binar static pentru Linux, macOS și Windows (amd64 și arm64). Fiecare
operație a API-ului public este o comandă, cu aceleași permisiuni ca în panou. Nu
trimite telemetrie, nici statistici, nici verificări de actualizări: vorbește doar cu adresa panoului
pe care o configurezi.
Instalare
Secțiune intitulată „Instalare”Linux și macOS:
curl -fsSL https://get.pluspanel.net/cli.sh | shWindows (PowerShell):
irm https://get.pluspanel.net/cli.ps1 | iexScripturile de instalare descarcă ultima versiune de pe GitHub
(112tech/pluspanel-cli), verifică întotdeauna
suma de control SHA-256 și verifică și semnătura cosign a sumelor de control când
cosign este instalat. Nu apelează niciodată sudo: cli.sh instalează în
~/.local/bin (ca root: /usr/local/bin), cli.ps1 în %LOCALAPPDATA%\Programs\pluspanel și îl adaugă
în PATH-ul utilizatorului. Poți alege directorul sau versiunea:
curl -fsSL https://get.pluspanel.net/cli.sh | sh -s -- --prefix /opt/bin --version 0.1.0Preferi să citești scriptul înainte să-l rulezi? Descarcă-l mai întâi:
curl -fsSLO https://get.pluspanel.net/cli.shless cli.shsh cli.shVerifică singur o descărcare
Secțiune intitulată „Verifică singur o descărcare”Fiecare versiune conține arhivele pluspanel_<versiune>_<os>_<arch>.tar.gz (Windows: .zip), un fișier
SHA256SUMS și semnătura lui cosign SHA256SUMS.sig, făcută cu cheia de release PlusPanel: cosign.pub.
curl -fsSLO https://pluspanel.net/docs/cli/cosign.pubcosign verify-blob --key cosign.pub --signature SHA256SUMS.sig --insecure-ignore-tlog=true SHA256SUMSsha256sum --ignore-missing -c SHA256SUMS # macOS: shasum -a 256 --ignore-missing -c SHA256SUMSAmbele comenzi trebuie să reușească înainte să folosești binarul. Semnătura este făcută offline cu cheia
de release și nu este publicată într-un jurnal public de transparență, de aici
--insecure-ignore-tlog=true: încrederea vine din cheie.
Autentificare
Secțiune intitulată „Autentificare”pluspanel login --api-url https://panel.example.comCLI-ul afișează un cod scurt și deschide pagina /device a panoului în browser. Autentifică-te acolo ca
de obicei (parolă și al doilea factor, sau o passkey), verifică faptul că codul și cererea (numele
dispozitivului, adresa IP, ora) sunt ale tale și aprobă. La aprobare ți se cere să-ți confirmi din nou
identitatea (parolă sau cod din aplicația de autentificare) dacă nu ai făcut-o în ultimele 5 minute.
CLI-ul primește apoi o cheie API personală, valabilă 90 de zile și revocabilă din Setări → API, și o
păstrează într-un fișier pe care doar tu îl poți citi (0600), în directorul lui de configurare. Pe
pagina de aprobare poți face cheia doar pentru citire.
Dacă pe acest calculator nu există browser, adaugă --no-browser și deschide adresa afișată oriunde.
--client-name schimbă numele afișat pe pagina de aprobare (implicit: pluspanel CLI on <hostname>).
pluspanel whoami arată utilizatorul, organizația și cheia folosite. pluspanel logout uită cheia
salvată; pluspanel logout --revoke o și revocă în control plane.
În CI și în scripturi
Secțiune intitulată „În CI și în scripturi”Folosește o cheie API creată pentru acel job, cu scope-urile de care are nevoie, din seiful de secrete al CI-ului:
export PLUSPANEL_API_URL=https://panel.example.comexport PLUSPANEL_API_KEY="$PLUSPANEL_CI_KEY"pluspanel servers list -o jsonSau salvează o cheie într-un profil: --api-key o citește de la intrarea standard, iar --api-key-file
dintr-un fișier, ca să nu ajungă în istoricul shell-ului:
printf '%s' "$PLUSPANEL_CI_KEY" | pluspanel login --api-url https://panel.example.com --api-keypluspanel login --api-url https://panel.example.com --api-key-file ~/.pluspanel-keyCLI-ul verifică faptul că ce citește arată ca o cheie PlusPanel (ppk_…) înainte s-o trimită undeva.
Profiluri
Secțiune intitulată „Profiluri”Profilurile țin separat mai multe control plane-uri, de exemplu staging și producție:
pluspanel login --profile staging --api-url https://staging.example.compluspanel login --profile prod --api-url https://panel.example.compluspanel profiles listpluspanel profiles use prodpluspanel profiles set prod --default-output jsonpluspanel --profile staging servers listPLUSPANEL_PROFILE=prod pluspanel accounts listpluspanel profiles delete stagingFără --profile se folosește profilul curent (primul în care te-ai autentificat sau cel ales cu
profiles use). Fișierele stau în directorul de configurare al utilizatorului: ~/.config/pluspanel/
(sau $XDG_CONFIG_HOME/pluspanel) pe Linux, ~/Library/Application Support/pluspanel pe macOS,
%AppData%\pluspanel pe Windows; PLUSPANEL_CONFIG_DIR îl înlocuiește. config.yaml conține
profilurile (fără secrete), credentials.yaml cheile, cu modul 0600: CLI-ul refuză să-l citească dacă
îl pot citi și alți utilizatori.
| Variabilă | Efect |
|---|---|
PLUSPANEL_PROFILE |
profilul folosit |
PLUSPANEL_API_URL |
adresa API (înlocuiește adresa profilului) |
PLUSPANEL_API_KEY |
cheia API (înlocuiește cheia salvată) |
PLUSPANEL_CONFIG_DIR |
directorul de configurare |
NO_COLOR |
fără anteturi îngroșate în tabele (și --no-color) |
Formate de ieșire
Secțiune intitulată „Formate de ieșire”-o table (implicit, pentru oameni), -o json și -o yaml (pentru programe). Ieșirea JSON este
răspunsul API-ului, neschimbat, deci se poate trimite direct în jq:
# Every server's name and statuspluspanel servers list --all -o json | jq -r '.items[] | "\(.name)\t\(.status)"'
# Accounts as CSVpluspanel accounts list --all -o json | jq -r '.items[] | [.id, .name] | @csv'--all urmează next_cursor prin toate paginile; fără el, o listă afișează o pagină și cursorul
următor (--cursor o aduce). --verbose afișează pe ieșirea de erori fiecare cerere, statusul, id-ul
cererii și limita de rată rămasă (niciodată cheia). Erorile arată așa:
Error: <detail> (code <code>, request <id>). Coduri de ieșire: 0 succes, 1 eroare de
utilizare sau de API, 2 autentificare (401/403, neautentificat), 3 inexistent, 4 conflict,
precondiție neîndeplinită sau limită de rată (409/412/429), 5 API-ul nu a putut fi contactat.
# Servers and accountspluspanel servers listpluspanel servers get 6f1c2d3e-…pluspanel accounts list
# Launch a WordPress site in an account (retries are safe with --idempotency-key)pluspanel sites launch 5a5a5a5a-… \ --primary-domain shop.example.com --title Shop --admin-email owner@example.com \ --idempotency-key "$(uuidgen)"
# Full request bodies from a file or standard inputpluspanel sites launch 5a5a5a5a-… --data-file site.jsonpluspanel dns create-record 7c7c7c7c-… --data '{"name":"www","type":"CNAME","content":"example.com."}'
# Optimistic concurrency: send back the ETag of the GET you read (412 if the object changed# meanwhile; see Conventions → ETags for reading it with curl)pluspanel security put-site 6b6b6b6b-… --data-file security.json --if-match "$etag"
# API keys and webhookspluspanel api-keys create --name ci --scopes 'servers:read,sites:write' -o jsonpluspanel api-keys listpluspanel webhooks create --url https://hooks.example.com/pluspanel --events 'site.*,backup.failed'pluspanel webhooks list-deliveries 9d9d9d9d-… --state dead
# Any operation by path, like curl with your credentialspluspanel api GET /php-versionspluspanel api GET '/audit?limit=5'Comenzile sunt grupate pe resurse (pluspanel --help listează grupurile, pluspanel <grup> --help
comenzile lor). Parametrii din cale sunt argumente poziționale, în ordinea din rută; parametrii de query
și membrii de nivel superior ai corpului sunt flaguri (listele separate prin virgulă); fiecare POST
acceptă --idempotency-key, fiecare PUT (și fiecare PATCH a cărui cale are GET) --if-match. --help-ul fiecărei comenzi arată descrierea,
flagurile și ruta HTTP, generate din referința API.
Completare în shell
Secțiune intitulată „Completare în shell”pluspanel completion bash > ~/.local/share/bash-completion/completions/pluspanelpluspanel completion zsh > "${fpath[1]}/_pluspanel"pluspanel completion fish > ~/.config/fish/completions/pluspanel.fishpluspanel completion powershell | Out-String | Invoke-Expression