Referencia del panel
Sintaxis, opciones y alcances de todos los subcomandos plak panel.
Todos los subcomandos plak panel operan sobre tu cuenta conectada (ver Conexión). El token guardado jamás se envía a otro origen: --panel/--dev en estos comandos se rechazan; para cambiar de panel reconecta primero. --json nunca incluye secretos.
Alcances: lecturas con user:read; escrituras de servidores con servers:write; escrituras de sitios y WordPress con sites:write (opt-in en Perfil > API Keys). Las claves de pairing aprobado traen lectura + SSH; un 403 indica cómo otorgar el scope.
Lectura
plak panel sites [--page N] [--per-page N] [--all] [--json]
plak panel site <id|dominio> [--json]
plak panel servers [--page N] [--per-page N] [--all] [--json]
plak panel server <id|nombre> [--json]
--per-page 1–100 (defecto 25); --all recorre todas las páginas. La selección acepta id numérico o dominio/nombre exacto. Un id ajeno resuelve a 404: nada de otras cuentas es enumerable.
plak panel sites --all --json
plak panel site ejemplo.com
Vinculación
plak panel link <sitio-panel> <sitio-local> [--system-user USUARIO] [--path RUTA] [--key CLAVE | --generate] [--alias NOMBRE] [--yes] [--json]
plak panel unlink <sitio-local> [--yes]
plak panel links [--json]
Autoriza una sola clave pública (ssh:authorize), verifica SSH y la raíz WordPress real (StrictHostKeyChecking=accept-new; una ruta incorrecta nunca se vincula), crea o reutiliza el remoto (defecto panel-<dominio>) y registra .panel-link (panel, cuenta e IDs; sin secretos). unlink solo borra el registro; la llave SSH se retira en el panel (Servidores > SSH keys) y vive independiente de la API key. Detalle del flujo en Vincular y migrar.
Proveedores, servidores y sitios
plak panel providers [--json]
plak panel create-server --name N --provider ID --region ID --plan ID [--database T] [--php V] [--os O] [--wait SECS] [--poll SECS] [--json]
plak panel delete-server <id|nombre> [--yes] [--json]
plak panel restart-server <id|nombre> [--yes] [--json]
plak panel create-site --domain D --server <id|nombre> [--wait SECS] [--poll SECS] [--json]
plak panel delete-site <id|dominio> [--yes] [--json]
La creación es asíncrona (202 busy): espera hasta active/failed o timeout (--wait defecto 600, --poll 15). Un fallo remoto nunca queda como éxito. Necesitan servers:write / sites:write.
WordPress
Patrón: plak panel <cmd> <sitio> [opciones] [--json] (<sitio> = id o dominio exacto). Lecturas con user:read; mutaciones con sites:write. Ayuda por área: plak panel wp-overview help.
| Comando | Opciones |
|---|---|
wp-overview, wp-themes, wp-plugins |
[--refresh] |
wp-complete-install |
--title T --user U --email E --password P (los 4 requeridos) |
wp-mark-installed, wp-install-wpcli |
— |
wp-xmlrpc |
--block | --allow |
wp-theme-activate, wp-plugin-activate, wp-plugin-deactivate |
<slug> (uno) |
wp-theme-update, wp-plugin-update |
<slug...> (uno o más) |
wp-theme-install, wp-plugin-install |
<slug> [--activate] |
wp-theme-delete, wp-plugin-delete |
<slug...> [--yes] |
wp-search-replace |
--search S [--replace R] [--dry-run] [--yes] (--search requerido; sin --dry-run confirma) |
wp-cli |
-- <comando...> (remoto vigilado; lo destructivo se deniega en servidor) |
wp-set-php |
--version V [--wait S] [--poll S] (espera hasta aplicado) |
wp-set-robots |
--disable | --enable |
Los resultados parciales (updated/failed) siempre se muestran.
Servidores
Patrón: plak panel <cmd> <servidor> [opciones] [--json] (<servidor> = id o nombre exacto). Lecturas con user:read; mutaciones con servers:write. Ayuda: plak panel service-list help.
| Comando | Opciones |
|---|---|
service-list |
— |
service-restart, service-reload |
<servicio> [--yes] (mysql, nginx, supervisor; reload suma mariadb, postgresql) |
wpcli-install |
[--wait S] [--poll S] (instala y espera) |
wpcli-uninstall |
[--yes] |
php-info |
— |
php-install |
--version V [--yes] |
php-cli-set |
--version V |
opcache-enable, opcache-disable, opcache-refresh |
[--yes] |
firewall-list |
— |
firewall-add |
--name N --port P [--type tcp|udp] [--rule allow|deny] [--ip IP] [--yes] |
firewall-del |
<regla-id> [--yes] |
users-list |
— |
users-add |
--name N [--sudo] (la contraseña se muestra una sola vez) |
users-del |
<id|ploi_id> [--yes] (nunca ploi) |
Todo es síncrono en el servidor: un 200 solo vuelve cuando Ploi respondió.
Infraestructura de sitios
Patrón: plak panel <cmd> <sitio> [opciones] [--json]. Lecturas con user:read; mutaciones con sites:write. Ayuda: plak panel db-add help. Los recursos locales se direccionan por id del panel; DNS y HTTP auth por su id remoto.
| Grupo | Lectura | Escritura |
|---|---|---|
| Bases de datos | db-list |
db-add --name N --user U --password P · db-del <id> [--yes] |
| Cronjobs | cron-list |
cron-add --command CMD [--frequency F] · cron-del <id> [--yes] |
| Certificados | cert-list |
cert-add --type letsencrypt|custom [--domain D] [--cert C] [--private P] · cert-del <id> [--yes] |
| Redirecciones | redirect-list |
redirect-add --from /old --to /new [--type redirect|permanent] · redirect-del <id> [--yes] |
| Alias | alias-list |
alias-add --domain D [--cert] · alias-del <alias> [--yes] (por alias, no id) |
| DNS (Cloudflare) | dns-list |
dns-add --type T --name N --content C [--ttl N] · dns-update <registro> --type T --name N --content C [--ttl N] · dns-del <registro> [--yes] |
| HTTP auth | authuser-list |
authuser-add --name N --password P [--path /] · authuser-del <id> [--yes] |
| Caché | cache-info |
cache-enable|cache-disable|cache-flush|cache-opcache-refresh [--yes] |
| Apps | app-info |
app-install --type wordpress|nextcloud [--options JSON] [--wait S] · app-uninstall [--yes] |
Credencial, Access y revocación
- Vive en
${PLAK_HOME:-~/.plak}/connection.json(directorio700, archivo600, escritura atómica):panel_url, token e identidad mínima. Nunca en logs, argv, historial ni--json. plak connect status [--json]revalida contraGET /api/v1/user(válido / inválido-revocado / bloqueada / panel inalcanzable).- Tras Cloudflare Access (desarrollo): la sesión del navegador no se comparte; exporta
PLAK_CF_ACCESS_TOKEN(token de servicio, distinto de la API key) y la CLI lo envía comoCF-Access-Token. Las respuestas HTML/redirect de Access se detectan y no cuentan como conexión válida. La API nunca sigue redirecciones con elBearer. plak disconnect [--yes]solo borra la credencial local; la clave sigue viva hasta revocarla en Perfil > API Keys > Revoke. Las autorizaciones SSH delinktienen su propio ciclo de vida.
En sitios vinculados, push/pull revalidan panel, cuenta, remoto y dominio antes de lo destructivo y se detienen con explicación ante cualquier desvío (Vincular y migrar).