Dashboard local
Qué es el dashboard de Plak CLI, cómo abrirlo y cómo usar cada una de sus secciones.
El dashboard es la página web local que Plak CLI levanta en tu propia máquina para ver y operar tus sitios sin escribir comandos. No es el panel alojado en cloud.plak.io: el dashboard vive en https://plak.localhost (con el puerto que tengas configurado si no es el estándar) y solo responde desde tu máquina.
Piensa en el dashboard como la cara amable de los comandos: por debajo ejecuta lo mismo que plak list, plak add, plak wp o plak snapshot, pero con botones, listas y formularios. Todo lo que hagas aquí también puedes hacerlo desde la terminal, y al revés.
Abrir el dashboard
Prepara la pila local
Si es la primera vez, instala el binario y la pila (FrankenPHP, MariaDB, Mailpit, WP-CLI) como se explica en Instalación:
curl -fsSL https://plak.sh/install | bash
plak install
plak statusplak status verifica dependencias y rutas sin cambiar nada. Si algo falta, plak install lo instala o te guía con el gestor de tu sistema.
Abre la página
open https://plak.localhostSi cambiaste los puertos con plak ports, la URL lleva el sufijo configurado (por ejemplo https://plak.localhost:8453). El dashboard, Adminer y Mailpit solo responden desde tu máquina (y desde el rango privado de WSL2); por red local o Tailscale tienen sus propias reglas (ver Servicios y red).
Si no carga
- Ejecuta
plak statuspara ver qué servicio falla. - Prueba
plak enabley despuésplak reloadpara regenerar el servidor y recargar la configuración. - Si el navegador avisa de certificado, ejecuta
plak trust(sinsudo) con Caddy en marcha.
Estos tres comandos también están explicados en Servicios y red.
Qué ves al entrar
La página principal es una lista de tus sitios locales: los mismos que muestra plak list. Cada fila indica el nombre, el dominio (https://<nombre>.localhost), el tipo (WordPress o estático), si está preparado para agentes (agent-ready) y el tamaño en disco.
- El tamaño se calcula bajo demanda con el botón de refrescar: recorrer decenas de sitios tarda unos segundos, así que la primera carga muestra
—hasta que lo pides. - El botón login de cada fila genera un enlace único de WordPress (igual que
plak login), sin pedirte la contraseña. - Los botones de la cabecera abren inbox (correo capturado), import (crear un sitio desde un backup) y los enlaces a Adminer (
https://db.plak.localhost) y Mailpit (https://mail.plak.localhost).
Cada sitio tiene una vista de detalle con enlace propio (https://plak.localhost/#/site/<nombre>). Ábrela para operar ese sitio sin tocar los demás.
Ficha del sitio
La parte superior de la ficha resume lo esencial: tipo, ruta (~/Plak/Sites/<nombre>.localhost), URL, tamaño, versión de WordPress y número de plugins cuando es un WordPress. La versión y el conteo de plugins se cargan solo cuando abres la ficha (usan WP-CLI y son más lentos que el listado).
Desde aquí puedes:
- Abrir el sitio en el navegador.
- Generar un enlace de acceso (
login) para entrar a/wp-adminsin contraseña: caduca en 15 minutos y es de un solo uso. - Saltar a Adminer o Mailpit, o filtrar el inbox por ese sitio.
- Crear, restaurar, borrar y descargar snapshots (ver Backups más abajo).
Plugins y temas
La pestaña de componentes lista los plugins y temas del sitio con nombre, versión, estado y actualizaciones disponibles.
- Qué hace cada botón: activar, desactivar, actualizar y borrar. Funciona igual que
plak wp <sitio> plugin|theme ..., con el mismo PHP y la misma seguridad. - La comprobación de actualizaciones es voluntaria: abrir la lista nunca consulta a WordPress.org (sería lento). Pulsa el botón de comprobar cuando quieras saber si hay versiones nuevas.
- Protecciones: no puedes desactivar un plugin
must-useni borrar el tema activo. El dashboard lo impide en la interfaz y la API lo rechaza aunque se intente a mano. - Lo que no hace: instalar plugins o temas nuevos desde aquí. Para instalar, usa el wp-admin del sitio o
plak wp <sitio> plugin install <slug>desde la terminal.
Esta pestaña solo tiene sentido en sitios WordPress. En sitios estáticos (--plain) no hay nada que listar.
Usuarios, cron y consola
La ficha incluye herramientas del día a día que evitan abrir wp-admin o recordar sintaxis de WP-CLI:
- Users: lista cada cuenta con sus roles y genera un enlace único para cualquiera de ellas, no solo para administradores. Cada enlace caduca y se consume al primer uso, igual que
plak login <sitio> <usuario>. - Cron: lista los eventos programados de WordPress (su
hook, próxima ejecución y recurrencia) y ejecuta uno concreto o todos los vencidos. Es la versión visual dewp cron event list|run. - Console: ejecuta WP-CLI dentro del sitio con argumentos pasados como datos, nunca como orden de shell. Equivale a escribir
plak wp <sitio> <comando...>, con la salida y el código de salida visibles en la página.
Diagnósticos: logs y tráfico
Cada sitio tiene un panel de diagnósticos con dos pestañas. Sirven para responder a “¿por qué falla?” y “¿qué está recibiendo?” sin abrir ficheros a mano.
Logs
Lee tres fuentes, siempre solo la cola de cada fichero (un sitio con cientos de megas de log no bloquea la página):
| Fuente | Qué es | Dónde vive |
|---|---|---|
php |
Log de errores PHP compartido, filtrado por este sitio | ~/Plak/Logs/errors.log |
debug |
WP_DEBUG del sitio |
<sitio>/public/wp-content/debug.log |
access |
Peticiones HTTP del servidor local | <sitio>/logs/caddy.log |
Puedes filtrar por nivel mínimo (all, warning, errores fatales…) y por texto libre. Las repeticiones consecutivas iguales se agrupan con un contador, y las trazas de pila se pueden desplegar. Equivale a plak log [sitio] [-f] desde la terminal.
Tráfico
Agrega el access log del sitio en ventanas de 1h, 24h, 7d o todo el historial, y muestra:
- Resumen: peticiones, errores (4xx y 5xx), bytes servidos, latencia media, p95 y máxima.
- Clasificación por tipo: páginas, assets (CSS, JS, imágenes, fuentes), admin (
/wp-admin, login), AJAX/REST (admin-ajax.php,/wp-json) y cron. - Rutas más visitadas y peticiones más lentas.
Inbox: el correo de tus sitios
El inbox lee el correo capturado por Mailpit, globalmente o filtrado por sitio. Un mensaje se atribuye a un sitio por sus direcciones, asunto o fragmento.
- Abrir un mensaje lo marca como leído; también puedes marcar leído/no leído y borrar (todo pasa por la API de Mailpit).
- El cuerpo HTML se sanea y las imágenes
cid:incrustadas se resuelven adata:URIs. Se muestra en un marco aislado que bloquea scripts y, hasta que lo permitas, también las imágenes remotas. - Para ver todo el buzón con búsqueda avanzada, el enlace Mailpit abre
https://mail.plak.localhost.
Esto responde a “¿qué email mandó mi sitio al registrar un usuario o al comprar algo?” sin configurar SMTP real. En desarrollo ningún correo sale a internet: todo cae aquí.
Backups e importación
El panel de backups lista las snapshots del sitio y permite crearlas, restaurarlas, borrarlas y descargarlas. Crear, restaurar e importar corren como trabajos en segundo plano: la página responde al instante y puedes recargarla sin perder el trabajo; el estado se consulta hasta que termina.
- Snapshot: punto local de archivos + base de datos en
private/snapshots/<id>. Los sitios estáticos solo capturan archivos. Restaurar guarda antes una snapshot de seguridad del estado actual. - Descargar: exporta la snapshot a un ZIP portable con sus partes internas (
files.tar.gzydatabase.sql). Es una copia de archivo, no un backup válido para importar:plak importexige un árbol WordPress conwp-content. - Importar: el botón import de la cabecera sube un ZIP, tar.gz o tar con un WordPress de un solo sitio y un SQL reconocible (incluye exportaciones de Plak, Local y hostings) y crea un sitio nuevo. Rechaza rutas fuera del destino, SQL ambiguo o multisitio, igual que
plak import.
Los detalles y límites (qué se versiona, qué pasa al fallar) están en Sitios locales.
Crear y borrar sitios desde el dashboard
El botón de crear pide el nombre, el tipo (WordPress o estático) y si quieres preparación para agentes. La creación manual nunca depende de herramientas opcionales: siempre expresa la elección con --agent o --no-agent, en lugar de heredar el valor por defecto de la CLI (que depende de si wp-mcp-cli está instalado).
- Un nombre duplicado o reservado se informa con un mensaje claro, no con un error genérico.
- Borrar pide confirmación y equivale a
plak delete <nombre> --force: quita directorio, base de datos, directiva Caddy y entradas de hosts. - Tras crear o borrar varios sitios, el dashboard recarga el servidor una sola vez en lugar de una por sitio.
Si la preparación de agentes falla después de crear el sitio, el sitio se conserva y el error indica cómo repararlo con plak agent <sitio> (ver MCP).
Seguridad del dashboard
El dashboard es una superficie administrativa y se protege en dos capas:
- Solo tu máquina: Caddy solo sirve el dashboard, Adminer y Mailpit a la máquina local (direcciones loopback, rango privado de WSL2 y espacio de la tailnet cuando Tailscale está activo). Desde fuera no responden.
- Mismo origen + token: la API (
api.php) repite la comprobación en PHP, exigeOrigin/Refererdel mismo host en cada mutación y pide un token CSRF por instalación (guardado en~/Plak/cache/dashboard-token) en cada POST. Sin ese token, la petición se rechaza aunque llegue desde tu navegador.
La cabecera Host nunca se usa como autenticación. Las descargas sensibles (exportar una snapshot) también exigen el token.
Cuándo usar el dashboard y cuándo la terminal
| Tarea | Dashboard | Terminal |
|---|---|---|
| Ver todos los sitios de un vistazo | ✅ Lista con tamaños y estado | plak list [--totals] |
| Crear o borrar un sitio | ✅ Formulario con mensajes claros | plak add / plak delete |
| Activar o actualizar un plugin | ✅ Lista con estados y updates | plak wp <sitio> plugin ... |
| Entrar a wp-admin sin contraseña | ✅ Botón login | plak login <sitio> |
| Ver logs o tráfico | ✅ Filtros y agrupación | plak log [sitio] |
| Leer correos de pruebas | ✅ Inbox + Mailpit | — (solo web) |
| Snapshots e imports | ✅ Trabajos en segundo plano | plak snapshot / plak import |
| Migraciones push/pull | — | plak pull / plak push |
| Remotos, hosts, claves SSH | — | plak remote / plak hosts / plak sshkey |
| Conexión con el panel | — | plak connect / plak panel ... |
| Automatizar en scripts o CI | — | Comandos con --yes y --json |
Continúa en Sitios locales para el flujo diario desde la terminal, o en MCP para preparar tus sitios para agentes.