Guía de Instalación
Esta es la guía de instalación completa y paso a paso de FeedbackPulse SaaS. Sigue cada paso con cuidado.
Lista de Verificación Pre-Instalación
Antes de comenzar, asegúrate de tener:
- Un servidor que cumpla todos los requisitos
- Un nombre de dominio apuntando a la dirección IP de tu servidor
- Acceso SSH a tu servidor (o FTP para subir archivos)
- Una base de datos MySQL/MariaDB y credenciales
- Una cuenta de correo SMTP (Gmail, Mailgun, Amazon SES, etc.)
- Tu código de compra de Envato (del pedido de CodeCanyon)
Paso 1: Subir los Archivos a Tu Servidor
Opción A: Usando SSH (Recomendado)
# Conectarse al servidor
ssh user@your-server-ip
# Navegar al directorio web
cd /var/www
# Subir y descomprimir el archivo ZIP
# (Sube el zip via SCP, SFTP, o wget desde un enlace temporal)
unzip feedbackpulse-saas.zip -d feedbackpulse-saas
cd feedbackpulse-saas
Opción B: Usando FTP/SFTP
- Conéctate a tu servidor usando FileZilla, WinSCP o similar
- Navega a tu directorio web (generalmente
/var/www/o/home/user/public_html/) - Sube la carpeta completa
feedbackpulse-saasextraída - Asegúrate de que el subdirectorio
public/sea accesible
Opción C: Usando el Administrador de Archivos de cPanel
- Inicia sesión en cPanel
- Abre el Administrador de Archivos → navega a
public_html(o un subdirectorio) - Sube el archivo ZIP
- Extráelo en el lugar
- Importante: Necesitarás establecer la raíz del documento en la carpeta
public/(consulta Configuración de Apache)
Paso 2: Establecer Permisos de Archivos
cd /var/www/feedbackpulse-saas
# Establecer propietario (reemplaza www-data con tu usuario del servidor web)
# Apache: www-data | Nginx: www-data o nginx
sudo chown -R www-data:www-data .
# Establecer permisos de directorio
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
# Hacer que storage y cache sean escribibles
sudo chmod -R 775 storage bootstrap/cache
Paso 3: Configurar Tu Servidor Web
Tu servidor web debe apuntar al directorio public/ dentro del proyecto — NO a la raíz del proyecto. Este es un requisito de seguridad crítico.
Elige tu servidor web:
- Configuración de Apache
- Configuración de Nginx
- Alojamiento Compartido (cPanel, Plesk, DirectAdmin) — si estás en alojamiento compartido, ¡sigue esta guía en su lugar!
Versión rápida:
Apache:
DocumentRoot /var/www/feedbackpulse-saas/public
Nginx:
root /var/www/feedbackpulse-saas/public;
Después de configurar, reinicia tu servidor web:
# Apache
sudo systemctl restart apache2
# Nginx
sudo systemctl restart nginx
Paso 4: Enlace Simbólico de Almacenamiento (Automático)
El instalador web intenta automáticamente crear el enlace simbólico de almacenamiento durante el paso final. No necesitas ejecutar ningún comando.
- VPS/Dedicado: El enlace simbólico se crea automáticamente. No se requiere ninguna acción.
- Alojamiento compartido: Si los enlaces simbólicos están deshabilitados en tu host, FeedbackPulse utiliza un mecanismo de respaldo PHP integrado para servir los archivos subidos (logos, imágenes). Todo funciona — no se requiere ninguna acción.
La página de finalización del instalador te indicará si el enlace simbólico se creó o si el mecanismo de respaldo está activo.
Paso 5: Ejecutar el Instalador Web
Abre tu navegador y navega a:
https://yourdomain.com/install
El instalador te guiará a través de 5 pasos. Consulta la Guía del Instalador Web para capturas de pantalla detalladas y explicaciones.
Resumen rápido:
Paso 1: Verificación de Licencia
- Introduce tu código de compra de Envato/CodeCanyon
- Esto valida tu licencia con la API de Envato
- Si no usas Envato, puede haber una opción para omitir este paso
Paso 2: Comprobación de Requisitos
- El instalador comprueba automáticamente:
- Dependencias del vendor (
vendor/autoload.phpexiste) - Versión de PHP (8.2+)
- Extensiones de PHP requeridas
- Permisos de directorio (storage, bootstrap/cache)
- Entorno de alojamiento (detecta alojamiento compartido, muestra información de compatibilidad)
- Dependencias del vendor (
- Corrige cualquier elemento fallido antes de continuar
Paso 3: Configuración de la Base de Datos
- Introduce tus credenciales de base de datos:
- Host:
127.0.0.1(olocalhost) - Puerto:
3306 - Nombre de la base de datos:
feedbackpulse(¡créala primero!) - Usuario: tu usuario de base de datos
- Contraseña: tu contraseña de base de datos
- Host:
- El instalador ejecutará todas las migraciones y sembrará los datos predeterminados
Crea la base de datos primero:
CREATE DATABASE feedbackpulse CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Paso 4: Cuenta de Administrador
- Crea tu cuenta de superadmin:
- Nombre: Tu nombre
- Correo electrónico: [email protected]
- Contraseña: Una contraseña segura (mín. 8 caracteres)
- Esta es la cuenta que usarás para gestionar toda la plataforma
Paso 5: Configuración de Correo Electrónico
- Introduce los datos de tu SMTP:
- Host: p. ej.,
smtp.gmail.com - Puerto:
587(TLS) o465(SSL) - Usuario: tu nombre de usuario SMTP
- Contraseña: tu contraseña SMTP o contraseña de aplicación
- Cifrado: TLS (recomendado)
- Dirección de remitente:
[email protected]
- Host: p. ej.,
- Puedes omitir esto y configurarlo más tarde en la Configuración de Administración
Finalización
- Cambia los controladores de sesión y caché a
databasepara producción - Genera un
CRON_TOKENpara el endpoint de cron basado en web - Crea un archivo
storage/installed.lock(evita volver a ejecutar el instalador) - Muestra una página de éxito con instrucciones para configurar la tarea cron (opciones CLI y URL) y los próximos pasos
Paso 6: Configurar la Tarea Cron
FeedbackPulse necesita una tarea cron para ejecutar tareas programadas. Esto es esencial para:
- Enviar resúmenes por correo electrónico (diarios/semanales)
- Procesar expiraciones de períodos de prueba
- Aplicar políticas de retención de datos
- Enviar alertas de uso
- Ejecutar detección de anomalías con IA
- Enviar informes programados
Opción 1 — Comando CLI (VPS / Dedicado):
crontab -e
Agrega esta línea:
* * * * * cd /var/www/feedbackpulse-saas && php artisan schedule:run >> /dev/null 2>&1
Opción 2 — URL/wget (Alojamiento Compartido):
Si tu panel de alojamiento solo admite cron basado en URL, usa el endpoint de cron web (el CRON_TOKEN se genera automáticamente durante la instalación y se muestra en la página de finalización):
wget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN"
Consejo: La página de finalización del instalador muestra ambas opciones con la ruta real de tu servidor y el token ya completados. ¡Cópialos desde allí!
Para más detalles, consulta Tareas Cron y Trabajadores de Cola.
Paso 7: Configurar SSL (HTTPS)
HTTPS está muy recomendado por seguridad, especialmente dado que FeedbackPulse maneja datos de autenticación y pago.
Usando Let's Encrypt (Gratuito)
# Instalar Certbot
sudo apt install certbot python3-certbot-nginx # para Nginx
# O
sudo apt install certbot python3-certbot-apache # para Apache
# Obtener el certificado
sudo certbot --nginx -d yourdomain.com # para Nginx
# O
sudo certbot --apache -d yourdomain.com # para Apache
Certbot configurará automáticamente tu servidor web para HTTPS y establecerá la renovación automática.
Para más detalles, consulta Certificados SSL.
Paso 8: Verificar la Instalación
Revisa esta lista de verificación:
| Verificación | Cómo | Resultado Esperado |
|---|---|---|
| La página de inicio carga | Visita https://yourdomain.com | Ver la página de inicio |
| El inicio de sesión funciona | Visita https://yourdomain.com/login | Iniciar sesión con credenciales del superadmin |
| Panel de administración | Visita https://yourdomain.com/admin/dashboard | Ver el panel de administración |
| Enlace de almacenamiento | Visita https://yourdomain.com/storage/ | Sin error 404 |
| Comprobación de salud | Visita https://yourdomain.com/up | Ver texto "OK" |
| Cron ejecutándose | Comprueba Admin → Configuración | Sin advertencias de cron |
| El correo funciona | Admin → Configuración → Email → Enviar Prueba | Recibir correo de prueba |
Pasos Post-Instalación
Una vez completada la instalación:
- Revisar los planes de suscripción —
Admin → Plans(editar precios, límites, funcionalidades) - Configurar pasarelas de pago —
Admin → Configuración → Payments(claves de API de Stripe/PayPal) - Personalizar la página de inicio —
Admin → Landing Page - Probar el envío de correo —
Admin → Configuración → Email → Enviar Correo de Prueba - Configurar DNS con comodín (opcional) — para subdominios de inquilino. Consulta Configuración de DNS con Comodín.
- Crear tu primer inquilino — Regístrate en
/registeren una ventana de incógnito
Solución de Problemas de Instalación
| Problema | Solución |
|---|---|
| Página en blanco | Comprueba storage/logs/laravel.log en busca de errores. Generalmente es un problema de permisos. |
| Error 500 del servidor | Activa el modo de depuración temporalmente: establece APP_DEBUG=true en .env y luego revisa el error. |
| "Class not found" | Asegúrate de que el directorio vendor/ esté presente e intacto. Vuelve a subirlo desde el paquete descargado si es necesario. |
| Conexión a la base de datos rechazada | Verifica las credenciales, asegúrate de que MySQL esté funcionando, comprueba si localhost vs 127.0.0.1 hace diferencia. |
| El instalador no carga | Asegúrate de que la raíz web apunte al directorio public/. |
| CSS/JS no carga | Limpia la caché del navegador. Si faltan imágenes, el mecanismo de respaldo de almacenamiento lo maneja automáticamente en alojamiento compartido. En VPS, visita /update como superadmin para volver a crear el enlace simbólico. |
| Permiso denegado | Ejecuta de nuevo los comandos chown y chmod del Paso 2. |
Para más información, consulta Solución de Problemas.
Próximos Pasos
- Guía del Instalador Web — capturas detalladas del instalador
- Configuración de Apache — configuración del host virtual de Apache
- Configuración de Nginx — configuración del bloque de servidor Nginx
- Configuración — ajusta tu
.env