Panel de operadores
El panel vive en /admin/ del propio motor (por ejemplo https://motor.ejemplo.com/admin/, dentro
de tu red privada). Es para los operadores: las personas que administran el motor. Tus apps no lo
usan; ellas hablan con la API /v1 con su API key.
Todo lo que hace el panel pasa por la API de administración (/admin/api), con la misma sesión y las
mismas reglas de rol. Ver API de administración.
La pantalla Inicia sesión pide el correo y la contraseña. Las cuentas no se crean desde el panel: el
primer operador (y los siguientes) se crean con motorctl
(Despliegue y backup). Si alguien no tiene cuenta, el
login le dice que la pida a quien administra el motor.
- La sesión dura lo que diga Ajustes → Seguridad (12 h por omisión). Al vencer, el panel vuelve al login.
- Tras varios intentos fallidos (5 cada 15 minutos por omisión), el login espera unos minutos.
- En producción, el panel necesita HTTPS: la cookie de la sesión lleva
Secure.
El menú del operador (abajo en la barra lateral) muestra su nombre y su correo, el modo claro, oscuro o del sistema, y Cerrar sesión.
Hay dos roles, y el servidor los hace cumplir; el panel además oculta lo que tu rol no puede hacer.
| Rol | En el panel |
|---|---|
operador |
Ve todo y opera las instancias: crearlas, vincularlas, reconectar, desconectar, pausar, reanudar, asignar un proxy, probar envíos y consultas. |
superadmin |
Además: las apps y sus keys, los webhooks y bridges, los Ajustes, los proxies, el canario, desvincular y archivar, los backups y exportar la configuración. |
El detalle está en Seguridad.
El menú
Sección titulada «El menú»| Pantalla | Para qué |
|---|---|
| Inicio | El estado del motor de un vistazo. |
| Instancias | Los números de WhatsApp: crear, vincular y operar cada uno. |
| Apps cliente | Las apps que usan la API: sus keys, webhooks, bridges y streams. |
| Entregas | Las entregas de webhooks de todas las apps. |
| Operación | Salud y límites del proceso. |
| Backups | El historial de backups. |
| Ajustes | La configuración del motor. |
Las tablas tienen búsqueda, filtros y paginación en la URL, así que un enlace a una vista filtrada se puede compartir.
Un tablero de Estado del motor: la versión, el entorno, la base de datos, las migraciones (versión actual y esperada), WhatsApp (la versión de whatsmeow y si su store está al día), las Sesiones (si este proceso las tiene en exclusiva, o el modo restaurado) y la Multimedia. Debajo, los conteos: instancias, Conectadas, Caídas (quieren estar conectadas y no lo están), Con alertas, Apps cliente activas y Keys activas.
Lo que pide atención se marca en su tarjeta: «Revisar» si hay instancias caídas o las sesiones no son exclusivas, cuántas alertas están abiertas, o «Disco casi lleno» en la multimedia.
Instancias
Sección titulada «Instancias»La tabla de Instancias muestra cada número con su app, su estado, el número vinculado (o «Sin número»), el último chequeo y el alta. Se busca por nombre y se filtra por estado y por app.
Nueva instancia pide la App (la instancia queda de esa app y cuenta para su cupo), un
Nombre y, opcional, una Referencia del dueño: un identificador tuyo que el motor no interpreta
(es el owner_ref de la API).
La ficha de una instancia
Sección titulada «La ficha de una instancia»Arriba, la cabecera con el nombre, la app y el estado, y las acciones que corresponden al estado: Reconectar, Desconectar, Pausar o Reanudar. Debajo, cuatro tarjetas: Número, Conexión (en línea o caída y desde cuándo, y el último chequeo), App y Alta.
Después, de arriba abajo:
| Sección | Qué tiene |
|---|---|
| Vincular número | Solo si no está vinculada. Elige QR o código: con QR, el panel dibuja el reto y lo renueva solo hasta que vence el intento; con código, escribe el Número del teléfono con el código de país y el panel muestra el código para escribir en Dispositivos vinculados. Si WhatsApp pide una passkey, el panel muestra el código a comparar con el del teléfono. Si vence, Generar otro: no hace falta desvincular. |
| Diagnóstico | El estado de la sesión, del ledger y del pool, sin datos personales: las alertas abiertas, la sesión en el motor, el último chequeo y el último evento, lo pendiente (comandos y webhooks), el último error, las reconexiones, el keepalive, el pool y la multimedia. |
| Llamadas | Las últimas llamadas entrantes y el botón para rechazar una que suena. |
| Prueba de envío | Manda un mensaje de prueba desde el número, como lo haría una app. |
| Lectura y presencia | Marcar mensajes de un chat como leídos, mandar la presencia («escribiendo», «grabando audio») y seguir la de un contacto. |
| Chats y etiquetas, Contactos, Grupos, Canales, Status, Interactivos | Resúmenes con enlace a su página: los chats y su sincronización con WhatsApp; los contactos, «¿Está en WhatsApp?» y los bloqueados; los grupos, las comunidades y las invitaciones; los canales; los status y su audiencia; probar las variantes de interactivos. También el Catálogo de un número Business. |
| Eventos recientes | Un inspector técnico del ledger: el tipo, el número de secuencia, la fecha y el origen de cada hecho, y el estado de su archivo. Nunca muestra el contenido. |
| Ajustes de la instancia | El nombre, la Reconexión automática y si rechaza llamadas (con su mensaje). |
| Transporte | Por dónde sale la conexión: Directa, sin proxy o uno de los proxies de Ajustes → Proxies; y la marca Canario (superadmin) para Actualizaciones. |
| Historial de WhatsApp | Qué se importa del historial del teléfono, Pedir más historial de un chat, Importar los chats recientes y los Trabajos de historial con su progreso. Ver Historial. |
| Perfil en WhatsApp y Privacidad en WhatsApp | La foto, el nombre y el recado del número, y quién ve qué. |
| Zona de peligro | Solo superadmin. Desvincular el número (cierra la sesión de WhatsApp; para volver a usarlo hay que vincularlo otra vez) y Archivar la instancia (la desvincula, borra su sesión y deja de contar para el cupo; sus eventos se conservan; no se puede deshacer). Las dos piden confirmación. |
Las secciones que necesitan una sesión de WhatsApp (llamadas, envío, chats, perfil…) solo aparecen con el número vinculado.
Apps cliente
Sección titulada «Apps cliente»La tabla de Apps cliente muestra cada app con su estado, su cupo, sus keys activas y su alta. Nueva app (superadmin) pide el nombre y, opcional, su propio cupo de instancias.
La ficha de una app tiene:
- Datos: el nombre, la descripción y el Cupo de instancias propio (vacío: vale el de Ajustes → Límites).
- API keys: la tabla de keys con su prefijo, entorno, scopes, estado y último uso. Emitir key
pide el entorno (Producción da
mw_live_…; Prueba,mw_test_…), los scopes, las instancias a las que alcanza (ninguna elegida: todas) y un vencimiento opcional. El token completo aparece una sola vez en el diálogo de la key emitida: «Guárdalo ahora: no se vuelve a mostrar». Rotar emite una nueva con los mismos scopes y la anterior deja de valer al instante; Revocar no se puede deshacer. - Webhooks: las suscripciones de la app, con sus eventos, su estado y sus entregas. Cada una tiene
Probar (manda un
webhook.testfirmado), Ver entregas, Rotar el secreto (el anterior sigue firmando durante la ventana de rotación), Pausar o Reactivar, Reenviar eventos (un replay por rango de secuencia, con motivo, que queda en la auditoría) y Eliminar. Aquí también están los Destinos permitidos: los de esta app y los que valen para todas. - Bridges: la entrega a un broker (NATS, RabbitMQ, Kafka, SQS) con su conexión, su atraso y su DLQ. Ver Brokers.
- Streams de eventos: los streams SSE y WebSocket abiertos, su atraso y su posición por instancia, y los Últimos cierres con su motivo. Un operador puede cortar un stream: el cliente recibe el cierre con su cursor y reanuda sin perder eventos.
- Zona de peligro: solo superadmin. Suspender app corta todas sus keys al instante, hasta Reactivar.
Entregas
Sección titulada «Entregas»Las entregas de webhooks de todas las apps: el evento, la suscripción, la instancia, el estado (Pendiente, Entregada o Fallida), el último intento y su error. Se filtra por estado y por app, y desde una suscripción o una instancia se llega ya filtrado. Una entrega que no está pendiente se puede Reenviar. Ver Webhooks.
Operación
Sección titulada «Operación»Salud y límites del proceso, para diagnosticar:
- Memoria, Goroutines, Pool de la base y Operaciones remotas.
- Watchdog: las operaciones en curso de cada número y las plazas que ocupa; una instancia trabada se ve aquí.
- Migraciones, el Proceso (si es el dueño de las sesiones) y el Canario (si corre y cuántas instancias tiene).
- El Último backup, las Conexiones a la base y el Cupo de instancias.
- Las tablas de Instancias (proceso, transporte, estado) y Cupo por app.
- Exportar la configuración (superadmin): un JSON saneado con Ajustes (los secretos solo como «configurado»), las apps con el prefijo de sus keys, las suscripciones, los bridges, los proxies y las instancias, sin números, correos ni nombres de personas. Queda en la auditoría.
En modo restaurado, Operación lo dice: no abre ningún socket ni entrega nada hasta el corte del original. Ver Restore aislado.
Backups
Sección titulada «Backups»El historial de Backups: cada uno con su contenido, su tamaño, su estado y su verificación (Verificado, Sin verificar o No pasó). Hacer un backup ahora y Verificar son de superadmin. El destino y el horario están en Ajustes → Backups. Ver Despliegue y backup.
Ajustes
Sección titulada «Ajustes»Un formulario por grupo, en este orden: General, Seguridad, Límites, Retención e historial, Webhooks, Streams de eventos, Bridges, Catálogo comercial, Backups, Proxies, Perfil, Grupos y comunidades, Operación, Almacenamiento (MinIO) y Multimedia.
- Solo un superadmin guarda. Cualquier operador puede Probar los grupos que lo tienen (Backups y Almacenamiento), con lo ya guardado.
- Los secretos se muestran como guardados, nunca su valor; escribir uno nuevo lo reemplaza.
- En Proxies, además de los destinos permitidos, está la tabla de proxies: cada uno con su esquema (HTTP, HTTPS o SOCKS5), su credencial sellada, cuándo se probó y qué instancias lo usan. Un proxy en uso no se puede borrar.
Qué hace cada clave: Ajustes.
Lo que no está en el panel
Sección titulada «Lo que no está en el panel»- Los operadores: se crean, se listan y se les revocan las sesiones con
motorctl. - La auditoría: se lee con
GET /admin/api/auditoria(con sesión de operador). - Las métricas:
GET /admin/api/metricas, en formato de Prometheus. Ver Runbooks. - El restore y la salida del modo restaurado: con
motorctl backup restaurarymotorctl mantenimiento salir.