| Dominio | PHP | Estado | SSL | Backend | Acciones |
|---|---|---|---|---|---|
| {{ d.domain }}{{ d.aliases.join(", ") }} | {{ d.php }} | {{ d.status }} | {{ d.ssl ? '🔒' : '⚠️' }} | {{ d.backend }} |
| Nombre | Usuario | Host | Tamaño | Acciones |
|---|---|---|---|---|
| {{ db.name }} | {{ db.user }} | {{ db.host }} | {{ db.size }} | 🛠️ Gestionar |
Configura tu servidor de correo sin sorpresas
Analizamos el servidor, detectamos lo que ya existe y te guiamos paso a paso. Nada se instala, se sustituye ni se retira sin tu aprobación explícita.
Aún no hemos mirado dentro
Pulsa Analizar servidor. Es una lectura: paquetes, servicios, puertos, buzones y configuraciones existentes. No modifica nada.
¿Qué quieres hacer?
Cada opción genera un plan. Ninguna ejecuta nada todavía.
Decisiones antes de seguir
Declara solamente las condiciones que hayas comprobado. Estas casillas no constituyen evidencias verificadas ni autorización para ejecutar.
Plan propuesto
Simulación. Nada se ejecuta desde aquí.
Ejecución bloqueada hasta validación
El plan de diagnóstico está preparado, pero no hay instalación en marcha. La ejecución se habilitará únicamente cuando el servidor certifique el proceso privilegiado, las comprobaciones y las autorizaciones reales.
| Dominio | Uso | Estado | Acciones | |
|---|---|---|---|---|
| {{ a.email }} | {{ a.domain }} | {{ a.usage_mb || 0 }} MB / {{ a.quota_mb ? a.quota_mb+' MB' : '∞' }} | {{ a.suspended ? 'Suspendido' : 'Activo' }} |
| Dominio | PHP | Estado | SSL | Disco | Acciones |
|---|---|---|---|---|---|
| {{ d.domain }}{{ d.aliases.join(", ") }}{{ d.ip }} | {{ d.php }} | {{ d.status }} | {{ d.ssl ? '🔒' : '⚠️' }} | {{ d.disk }} |
| Base de Datos | Principal | Tamaño | Hosting | Cliente | Usuario | Origen | Acción |
|---|---|---|---|---|---|---|---|
| {{ db.name }} {{ db.charset || '—' }} |
{{ db.user || '—' }} {{ db.host || 'localhost' }} |
{{ db.size || '—' }} | {{ db.domain || '—' }} | {{ tenantName(db.tenant_id) }} | {{ assignedUserName(db.user_id) }} | {{ db.assignment_source || 'unassigned' }} | Solo lectura |
Selecciona un hosting para gestionar sus recursos asociados: archivos, correo, SSL, DNS y bases de datos
Subdominios de {{ selectedDomain.domain }}:
| Subdominio | Estado | PHP | |
|---|---|---|---|
| {{ sd.domain }} | {{ sd.status }} | {{ sd.php }} |
| Nombre | Tamaño | Permisos | Modificado | Acciones |
|---|---|---|---|---|
| Cargando… | ||||
| Carpeta vacía | ||||
| 📁 {{ it.name }} 📄 {{ it.name }} ↗ | {{ it.type==='dir' ? '—' : fmFmtSize(it.size) }} | {{ it.perms }} |
{{ fmFmtDate(it.mtime) }} |
|
Cuentas de correo para {{ selectedDomain.domain }}:
| Cuota | Estado | ||
|---|---|---|---|
| {{ acct.email }} | {{ acct.quota_mb || acct.quota || '—' }} MB | {{ acct.suspended?'Suspendida':'Activa' }} |
Certificados SSL para {{ selectedDomain.domain }}:
Zona DNS asociada a {{ selectedDomain.domain }}
| Tipo | Nombre | Valor | TTL | Acciones |
|---|---|---|---|---|
| {{ record.type }} | {{ record.name }} | {{ record.value }} | {{ record.ttl || 3600 }} |
Bases de datos asociadas al hosting {{ selectedDomain.domain }}
| Nombre | Usuario | Host | Tamaño | |
|---|---|---|---|---|
| {{ db.name }} | {{ db.user || '—' }} | {{ db.host || '127.0.0.1' }} | {{ db.size || '—' }} |
⚠️ Zona de Peligro
| Nombre | Rol | Creado | ||
|---|---|---|---|---|
| {{ u.name || '—' }} | {{ u.email }} | {{ u.role }} | {{ formatDate(u.created_at) }} |
| Dominio | Emisor | Expira | Estado | Auto-Renew | Acciones |
|---|---|---|---|---|---|
| {{ c.domain }} | {{ c.issuer }} | {{ c.expires }} | {{ c.status }} | {{ c.auto_renew ? 'ON' : 'OFF' }} |
| Sitio | Tipo | Tamaño | Fecha | Estado | Acciones |
|---|---|---|---|---|---|
| {{ b.site }} | {{ b.type }} | {{ b.size }} | {{ b.date }} | {{ b.status }} |
| Sitio | Frecuencia | Tipo | Retención | Activo | Acciones |
|---|---|---|---|---|---|
| {{ s.site }} | {{ s.frequency }} | {{ s.type }} | {{ s.retention }} | {{ s.active ? 'ON' : 'OFF' }} |
| Zona | Registros | Tipo | SOA |
|---|---|---|---|
| {{ z.zone || z.domain }} | {{ z.record_count ?? (z.records || []).length }} | {{ z.type || 'master' }} | {{ z.soa?.mname || z.soa || '—' }} |
| Tipo | Nombre | Valor | TTL | Acciones |
|---|---|---|---|---|
| {{ record.type }} | {{ record.name }} | {{ record.value }} | {{ record.ttl || 3600 }} |
| Dominio | Upstream | WS | SSL | Estado | Acciones |
|---|---|---|---|---|---|
| {{ h.domain }} {{ h.description }} |
{{ h.scheme }}://{{ h.upstream_host }}:{{ h.upstream_port }}{{ h.upstream_uri }} | {{ h.websocket ? '✅' : '—' }} | {{ h.ssl_upstream ? '🔒' : '—' }} | {{ h.enabled ? '● Activo' : '● Parado' }} · {{ h.last_latency_ms }}ms |
| IP | Razón | Permanente | Acción |
|---|---|---|---|
| {{ ip.ip }} | {{ ip.reason || '—' }} | {{ ip.permanent ? 'Sí' : 'No' }} |
| Cliente | Estado | Plan | Servicios | Contactos | Oportunidades | Pipeline | Tareas | |
|---|---|---|---|---|---|---|---|---|
|
{{ row.tenant.name }}
{{ row.profile.legal_name || row.tenant.id }}
|
{{ crmStatusLabel(row.profile.status) }} | {{ row.tenant.plan || 'free' }} |
{{ row.services?.hosting_count || 0 }} hosting
{{ row.services?.database_count || 0 }} BD
|
{{ row.contacts_count || 0 }} | {{ row.open_opportunities || 0 }} / {{ row.opportunities_count || 0 }} | {{ crmFormatMoney(row.pipeline_value || 0) }} | {{ row.pending_tasks || 0 }} |
| Nombre | Teléfono | Cargo | Principal | ||
|---|---|---|---|---|---|
| {{ c.name }} | {{ c.email || '—' }} | {{ c.phone || '—' }} | {{ c.title || '—' }} | {{ c.primary ? '⭐ Sí' : '—' }} |
| Oportunidad | Etapa | Importe | Prob. | Cierre | |
|---|---|---|---|---|---|
| {{ o.name }} | {{ crmFormatMoney(o.amount,o.currency) }} | {{ o.probability || 0 }}% | {{ o.expected_close || '—' }} |
| Tarea | Estado | Prioridad | Vence | |
|---|---|---|---|---|
| {{ t.title }} | {{ t.priority }} | {{ crmFormatDate(t.due_at) }} |
| Dominio | Versión | Ruta | Estado |
|---|---|---|---|
| {{ site.domain || '—' }} | {{ site.version || site.wp_version || '—' }} | {{ site.path || site.root || '—' }} | Detectado |
| Nombre | Tipo | Estado | Última ejecución |
|---|---|---|---|
| {{ c.name || c.id }} | {{ c.type || '—' }} | {{ c.status || '—' }} | {{ c.last_run || c.checked_at || '—' }} |
| Dominio | Score | Relay | Estado |
|---|---|---|---|
| {{ d.domain }} | {{ d.score !== undefined ? d.score : '—' }} | {{ d.relay_provider || 'Directo' }} | {{ d.status || '—' }} |
| ID | Host | Estado |
|---|---|---|
| {{ c.id }} | {{ c.host || '—' }} | {{ c.status || '—' }} |
| Módulo | Estado | Comprobaciones | |
|---|---|---|---|
|
{{ m.name }}
{{ m.id }} · v{{ m.version }} · no instalado
|
{{ healthStateLabel(m.state) }} |
{{ c.ok ? '✓' : '✗' }} {{ c.label }}
|
Comprueba las versiones firmadas del núcleo AI360CP y de los módulos (Node, NAS, Virtualización y otros). Las actualizaciones se preparan en un entorno aislado. No se sobrescribe el panel activo sin reconciliación del despliegue, copia de seguridad y aceptación del 218.
{{ pkg.message }}
| Paquete | Versión | Firma | Acción |
|---|---|---|---|
| {{ release.component }} | {{ release.version }} | {{ release.verified ? 'Verificada' : 'Rechazada' }} |
Todavía no hay releases verificadas disponibles. El instalador privilegiado debe publicar el inventario.
Importante: «Actualizar · preparar» valida y coloca el paquete en staging; NO reemplaza el Core ni reinicia servicios. La activación segura estará disponible tras validar el circuito de recuperación.