Antes de empezar, comprueba que tu hosting cumpla con estos requisitos mínimos:
| Componente | Versión mínima | Notas |
|---|---|---|
| 🐘 PHP | 8.1+ | La mayoría de hostings lo ofrecen en cPanel → “Select PHP Version” |
| 🗄️ MySQL / MariaDB | 5.7+ / 10.3+ | cPanel → “MySQL® Databases” |
| 🌐 Apache | con mod_rewrite |
Namecheap y la mayoría de hostings lo traen activado por defecto |
Asegúrate de que estas extensiones estén habilitadas en tu hosting:
| Extensión | Para qué se usa |
|---|---|
pdo_mysql |
Conexión a la base de datos |
openssl |
Cifrado y generación de tokens seguros |
mbstring |
Soporte de caracteres multibyte (UTF-8) |
curl |
Verificación de captchas y servicios externos |
sodium |
Cifrado simétrico (secretos TOTP, contraseñas SMTP) |
[!TIP] En cPanel → Select PHP Version puedes activar/desactivar extensiones con un clic.
porra-mundial-2026-vX.X.X.zip de la última versión.[!NOTE] El zip ya incluye la carpeta
vendor/con todas las dependencias PHP. No necesitas instalar Composer en el servidor.
Desde tu panel de control cPanel:
| # | Acción | Dónde |
|---|---|---|
| 1 | Crear una nueva base de datos | cPanel → MySQL® Databases → Create New Database |
| 2 | Crear un usuario MySQL | Misma página → MySQL Users → Add New User |
| 3 | Asignar usuario a la base de datos | Add User to Database → selecciona ambos → ALL PRIVILEGES |
📝 Apunta estos 4 valores — los necesitarás en el asistente:
📌 Host de la BD → normalmente localhost (cPanel lo muestra en la misma página)
📌 Nombre de la BD → p.ej. cpaneluser_porra
📌 Usuario de la BD → p.ej. cpaneluser_porrauser
📌 Contraseña de la BD → la que hayas elegido
[!WARNING] Usa una contraseña fuerte para el usuario MySQL. El generador de cPanel es buena opción.
Conecta a tu hosting con un cliente FTP (FileZilla, WinSCP, Cyberduck, etc.) y elige una de estas dos modalidades:
/public (recomendada)Esta es la opción más segura porque los archivos de la aplicación quedan fuera del directorio público.
/home/usuario/porra/ ← sube TODO aquí
├── 📂 app/
├── 📂 config/
├── 📂 database/
├── 📂 public/ ← este será el Document Root
├── 📂 storage/
├── 📂 vendor/
├── 📄 .htaccess
└── 📄 composer.json
Después, ve a cPanel → Domains → edita tu dominio y cambia el Document Root a:
/home/usuario/porra/public
public_html (si no puedes cambiar el docroot)Si tu hosting no permite modificar el Document Root:
/home/usuario/public_html/ ← sube TODO aquí
├── 📂 app/
├── 📂 config/
├── 📂 public/
├── 📂 storage/
├── ...
[!NOTE] El archivo
.htaccessde la raíz se encarga automáticamente de redirigir las peticiones a/publicy de bloquear el acceso directo aapp/,config/,storage/, etc.
Desde el File Manager de cPanel o tu cliente FTP, ajusta los permisos de estas carpetas:
| Carpeta | Permisos | Motivo |
|---|---|---|
📁 config/ |
775 | El asistente necesita escribir config.php aquí |
📁 storage/ |
775 | Logs, caché, correos, archivo de lock |
📁 storage/logs/ |
775 | Archivos de log de la aplicación |
📁 storage/cache/ |
775 | Archivos de caché |
📁 storage/mail/ |
775 | Correos .eml cuando no hay SMTP |
[!TIP] En FileZilla: clic derecho sobre la carpeta → File permissions… → escribe
775→ marca Recurse into subdirectories.
Abre tu dominio en el navegador — el asistente se lanzará automáticamente.
El proceso tiene 5 pantallas:
| ### 1️⃣ | **🔍 Comprobaciones del sistema** El asistente verifica versión de PHP, extensiones, permisos de carpetas y conectividad. Corrige los puntos marcados en 🔴 rojo y **recarga la página** para volver a comprobar. |
| ### 2️⃣ | **🗄️ Conexión a base de datos** Introduce los datos que anotaste en el Paso 2: - Host (normalmente `localhost`) - Puerto (`3306` por defecto) - Nombre de la base de datos - Usuario y contraseña - Prefijo de tablas (`pm_` por defecto) |
| ### 3️⃣ | **🌐 Configuración del sitio** - Nombre del sitio (p.ej. _"Porra del grupo"_) - URL pública (p.ej. `https://porra.tudominio.com`) - Zona horaria (p.ej. `Europe/Madrid`) - Idioma (`es` por defecto) |
| ### 4️⃣ | **👤 Administrador inicial** Crea la primera cuenta de administrador: - Nombre de usuario - Email - Contraseña fuerte (mín. 8 caracteres) |
| ### 5️⃣ | **🚀 Ejecutar instalación** Un solo clic. El asistente: 1. Escribe `config/config.php` con todos los ajustes 2. Genera una `app_key` criptográfica única 3. Ejecuta las migraciones SQL 4. Crea la cuenta de administrador 5. Escribe `storage/installed.lock` |
[!IMPORTANT] Una vez completada la instalación, la ruta
/installdevuelve 403 — Ya instalado. El asistente se autobloquea para evitar reinstalaciones accidentales.
Una vez dentro del panel de administración, configura estos ajustes recomendados:
Ve a cPanel → SSL/TLS o Let’s Encrypt™ SSL y activa un certificado para tu dominio.
[!WARNING] HTTPS es obligatorio si quieres usar autenticación WebAuthn (Yubikey, Windows Hello, FIDO2).
Panel de admin → Comunicaciones · SMTP
| Campo | Ejemplo |
|---|---|
| Servidor | mail.tudominio.com |
| Puerto | 587 (TLS) o 465 (SSL) |
| Usuario | noreply@tudominio.com |
| Contraseña | Tu contraseña SMTP |
| Cifrado | TLS (recomendado) |
| Reply-to | admin@tudominio.com |
[!TIP] Sin configurar SMTP, los emails se guardan como archivos
.emlenstorage/mail/. Es útil para depurar, pero los usuarios no recibirán correos reales.
| Ajuste | Dónde | Descripción |
|---|---|---|
| 🤖 Captcha | Panel → Seguridad | Google reCAPTCHA v2/v3 o Cloudflare Turnstile |
| 🔑 Política MFA | Panel → Seguridad | Opcional · Solo admins · Todos los usuarios |
| 📱 Tu propio MFA | Tu perfil | Activa TOTP o WebAuthn en tu cuenta de admin |
No es estrictamente necesario, el asistente se autobloquea tras la instalación.
Para una defensa en profundidad adicional, puedes eliminar los archivos del instalador:
🗑️ Borrar: app/Modules/Install/
Hazlo por FTP o desde el File Manager de cPanel una vez que todo funcione correctamente.
Class "PDO" not found