# Instalación de critarissac en cPanel, con PHP y MySQL

La versión adaptada funciona con PHP y una base MySQL/MariaDB. No necesita Terminal, SSH, Application Manager ni Node.js en el hosting. La compilación de las pantallas ya está incluida en el paquete.

El paquete está preparado para **https://sistema.critarissac.com** y el propietario **joelpolo@critarissac.com**. El dominio principal puede conservar su WordPress. Si deseas otra dirección, hay que regenerar la configuración y la licencia antes de instalar.

## 1. Comprobar PHP

En cPanel busca **MultiPHP Manager**, **Administrador de MultiPHP** o **Seleccionar versión de PHP**. Para el subdominio debes usar PHP **8.2 o superior**. La versión 5.2.3 que viste pertenece a phpMyAdmin, no a PHP.

Se requieren las extensiones **pdo_mysql**, **mbstring** y **sodium**, además de Apache con reglas `.htaccess`. El instalador verifica esos requisitos y se detiene si faltan. No se ha comprobado aún qué extensiones permite tu plan real.

## 2. Crear el subdominio

En **cPanel → Domains / Dominios → Create a New Domain / Crear un dominio**:

1. Escribe `sistema.critarissac.com`.
2. Si aparece compartir la raíz del dominio principal, desmarca esa opción.
3. Usa una carpeta independiente para sus archivos, por ejemplo `public_html/sistema`.
4. Guarda y anota la carpeta que cPanel muestra como raíz de este subdominio.

En **SSL/TLS Status / Estado SSL/TLS**, comprueba que el subdominio tenga un certificado válido. Si aparece AutoSSL, ejecútalo para ese dominio. Realiza la instalación cuando HTTPS funcione, sin ignorar advertencias de certificado.

## 3. Crear la base y su usuario

En **Manage My Databases / Administrar mis bases de datos**, **MySQL Databases** o su asistente:

1. Crea una base nueva para el sistema, por ejemplo `critarissac`.
2. Crea un usuario de base de datos con una contraseña aleatoria generada por cPanel.
3. Agrega ese usuario a esa base y otorga **ALL PRIVILEGES / Todos los privilegios**. Se necesitan creación de tablas, transacciones y creación de disparadores para proteger la auditoría.
4. Anota los nombres completos que muestra cPanel. Suelen llevar un prefijo: `usuario_critarissac`.

Esta contraseña es la de conexión a MySQL. Es distinta de tu contraseña de correo y de la que crearás para entrar al sistema. No la envíes por este chat. Usa una base vacía y exclusiva; el instalador rechaza una base que contenga tablas ajenas, como las de WordPress.

## 4. Subir y colocar el paquete

Descarga `critarissac-cPanel-instalacion.zip`. **Contiene datos de colaboradores: es confidencial.**

1. Entra a **File Manager / Administrador de archivos**.
2. Abre la carpeta de tu cuenta, normalmente `/home/TU_USUARIO`. Allí ves carpetas como `mail` y `public_html`.
3. Sube el ZIP a esa carpeta de la cuenta, **fuera de public_html**, y extráelo allí.
4. Deben aparecer `critarissac-web` y `critarissac-private`.
5. Mueve el contenido de `critarissac-web` a la raíz del subdominio anotada en el paso 2. Por ejemplo, sus archivos quedarán dentro de `public_html/sistema`.
6. Incluye `.htaccess`: si está oculto, activa **Settings → Show Hidden Files / Mostrar archivos ocultos**.
7. La carpeta `critarissac-private` debe permanecer directamente en `/home/TU_USUARIO/critarissac-private`, fuera de `public_html` y de la raíz web. No se mueve con los archivos públicos.
8. Retira el ZIP del servidor cuando termines. No lo dejes disponible para descargar desde una dirección pública.

Distribución esperada:

```text
/home/TU_USUARIO/
├── critarissac-private/
│   ├── config.php
│   ├── core.php
│   ├── access.php
│   ├── system.php
│   ├── install.php
│   ├── schema.sql
│   ├── initial-data.sql
│   └── data-manifest.json
└── public_html/
    └── sistema/
        ├── .htaccess
        ├── index.php
        ├── app.html
        ├── assets/
        └── favicon.svg
```

El programa busca la carpeta privada al subir por los directorios de la cuenta y rechaza su colocación dentro de public_html. La página no expone el archivo de configuración ni el SQL de colaboradores.

## 5. Completar la conexión privada

En File Manager abre para editar `/home/TU_USUARIO/critarissac-private/config.php`. Cambia únicamente estos valores por los que creaste:

```php
'db_name' => 'NOMBRE_COMPLETO_DE_LA_BASE',
'db_user' => 'NOMBRE_COMPLETO_DEL_USUARIO',
'db_password' => 'CONTRASENA_DEL_USUARIO_MYSQL',
```

Conserva las comillas y las comas. En la contraseña, una comilla simple se escribe `\'` y una barra inversa se escribe `\\` dentro de ese literal PHP. Puedes generar una contraseña aleatoria sin esos dos caracteres para facilitar su colocación. `db_host` normalmente permanece como `localhost`; si Hosting SSD indica otro host, usa ese valor. El puerto predeterminado es 3306.

No cambies la clave pública, el dominio, los identificadores iniciales ni la licencia del archivo. Nunca publiques este archivo.

## 6. Instalar e ingresar

1. En tu equipo Windows abre **Mostrar clave para cPanel.cmd**, dentro de la carpeta original `comensal-saas`. Mostrará la clave de instalación en una ventana local. La copia guardada está cifrada en este equipo y no viaja en el ZIP. Necesita conservar la carpeta local `.sites-runtime/security`.
2. Abre `https://sistema.critarissac.com/install`.
3. Introduce esa clave y crea una contraseña de al menos 16 caracteres para **joelpolo@critarissac.com**. Este paso lo haces tú; no envíes la contraseña por el chat.
4. Pulsa **Completar instalación**. Se crean las tablas y se verifica la importación contra el manifiesto. El instalador se bloquea al crear la primera cuenta.
5. Abre `https://sistema.critarissac.com/login` e ingresa con tu correo y la contraseña que acabas de elegir.

Se conservan las organizaciones, sedes, colaboradores, consumos e historial del paquete preparado. No se copian contraseñas ni sesiones del entorno anterior. Los correos de demostración no reciben una contraseña automáticamente.

El paquete es una copia del momento de preparación, no una sincronización automática. Antes del cambio definitivo, detén los registros en el sistema anterior y prepara otra copia si agregaste consumos, colaboradores o permisos después de esta entrega.

La licencia incluida es de validación durante **30 días desde la preparación del paquete**, vinculada al subdominio. La fecha exacta está en `preparacion.json`. No representa cobros ni un plazo comercial acordado; se puede emitir y activar otra licencia desde Seguridad. La clave privada emisora permanece únicamente en el equipo del operador y no está en este paquete.

## 7. Probar antes de usar con el equipo

Revisa el padrón de 834 colaboradores y los 10 consumos transferidos. Usa los filtros de fecha para consultar el historial. Desde **Sedes y equipo** asigna los correos reales y sus roles. Luego, como propietario, en **Seguridad** genera las contraseñas temporales. Cada usuario debe cambiarlas en su primer ingreso.

Prueba con un administrador y con un registrador en navegadores distintos: el primero debe ver todas las sedes y el segundo solo la asignada. Realiza un consumo controlado, comprueba el bloqueo de un duplicado y anula el registro de prueba dejando el motivo. Antes de operación real, configura respaldos de esta base MySQL desde el hosting y comprueba su restauración.

## Si aparece un error

- **Instalación pendiente / PHP 8.2+**: verifica la versión del subdominio, sus extensiones y la ubicación de la carpeta privada.
- **No se pudo completar la operación**: revisa los nombres completos de base/usuario, la contraseña, los privilegios y el registro de errores PHP del hosting. No publiques capturas que muestren credenciales.
- **404 al abrir /install**: confirma que `.htaccess` está en la raíz correcta y que el hosting permite sus reglas.
- **Dominio no configurado / licencia no válida**: usa exactamente el subdominio del paquete. Para otro dominio se necesita regenerarlo; no basta cambiar el texto de la licencia.
- **Certificado no válido**: completa SSL/AutoSSL antes de introducir claves.

La versión se probó localmente con PHP 8.4 y MariaDB 10.11.19. La instalación, HTTPS, permisos de archivos y rendimiento del hosting real siguen pendientes de comprobar. Las licencias controlan la instalación mientras el código del servidor permanezca confiable; no impiden que alguien que tenga el código completo y control del servidor lo modifique.

Referencias: [bases de datos en cPanel](https://docs.cpanel.net/cpanel/databases/manage-my-databases/), [dominios en cPanel](https://docs.cpanel.net/cpanel/domains/domains/), [PHP Sodium](https://www.php.net/manual/en/book.sodium.php).
