Instalar la plataforma (local o subdominio)
Requisitos
- PHP 8.1 o superior con las extensiones
pdo_mysql,curl,openssl,sodium,mbstring,zipyjson(vienen en casi todos los hostings). - MariaDB 10.4+ o MySQL 8 con una base de datos vacía y su usuario.
- Para producción: un subdominio con HTTPS (por ejemplo
seo.midominio.com). - Nada de Composer, Node ni Docker.
En un subdominio
- Sube la carpeta
plataformaentera a tu hosting, fuera de la carpeta pública si puedes (por ejemplo/home/usuario/seoia). - Crea el subdominio y haz que su carpeta raíz sea
plataforma/public. Así,app/,storage/y la configuración quedan fuera del alcance de la web. - Activa el certificado HTTPS del subdominio (Let's Encrypt en el panel del hosting).
- Abre el subdominio en el navegador: arranca el asistente de instalación. Pon los datos de la base de datos, la dirección del subdominio y tu usuario administrador.
- El asistente genera la clave maestra de cifrado y te obliga a descargar una copia. Guárdala fuera del servidor: sin ella no se pueden leer las claves de los clientes si restauras una copia de seguridad.
- Entra y activa el doble factor (obligatorio para el administrador).
- Programa el cron cada minuto (Ajustes > Cron te da la línea exacta y una URL alternativa).
- Configura el correo y Redsys en Ajustes, y crea tus Planes.
En local (tu ordenador)
- Arranca MariaDB y crea una base de datos vacía.
- Desde la carpeta
plataforma:php -S localhost:8095 -t public public/router.php - Abre
http://localhost:8095y sigue el asistente. - Para el cron, deja abierta otra ventana con:
php cron/run.phpcada minuto (o el Programador de tareas de Windows).
En local, las tiendas se pueden conectar sin HTTPS (se marcan en «modo local»). Redsys no podrá avisar de los pagos porque no llega a tu ordenador: úsalo solo para probar.
Seguridad del servidor
- La carpeta raíz del subdominio debe ser
public/. Si tu hosting no lo permite, las carpetasapp/,storage/,sql/ycron/llevan un.htaccessque niega el acceso, pero es mejor no depender de él. - Haz copia diaria de la base de datos y de
storage/facturas. - El usuario de base de datos puede no tener permiso
DELETEsobreseo_auditoriapara que el registro sea imborrable.
Hosting que solo sirve public_html (HestiaCP, cPanel)
- Sube
app/,cron/,sql/ystorage/a una carpeta fuera de la web, por ejemploprivate/plataforma/. - Sube el contenido de
public/apublic_html/. - Crea en
public_html/un ficheroruta.phpcon la ruta de la aplicación:<?php return '/home/usuario/web/dominio/private/plataforma'; - El cron apunta a
private/plataforma/cron/run.php.
Actualización automática desde GitHub
La plataforma puede mirar su repositorio cada 5 minutos y actualizarse sola. Necesita git en el servidor.
- Crea una clave de despliegue de solo lectura (
ssh-keygen -t ed25519) y añádela al repositorio en GitHub: Settings > Deploy keys. - Configura el actualizador una vez, por línea de órdenes:
php cron/actualizar.php --configurar clon=/ruta/private/actualizador/repo origen=git@github.com:usuario/repositorio.git rama=main publico=/ruta/public_html "ssh=ssh -i /ruta/clave -o IdentitiesOnly=yes" - Dile qué versión hay instalada:
php cron/actualizar.php --commit <commit>. - Programa
*/5 * * * * php /ruta/cron/actualizar.php.
Antes de cambiar nada valida el código nuevo y guarda una copia; si la plataforma no responde después, vuelve atrás sola y avisa por correo. Nunca toca app/config.php ni storage/. Se ve y se manda desde Ajustes > Actualizaciones.