Skip to main content
Esta guía describe los pasos para instalar Cotizaciones Confi en un servidor desde cero. Está orientada a administradores de sistemas.

Requisitos

ComponenteVersión mínima
PHP8.2
MySQL / MariaDB8.0 / 10.6
Composer2.x
Node.js18.x
Las siguientes extensiones de PHP deben estar habilitadas: pdo_mysql, mbstring, openssl, tokenizer, xml, ctype, json, bcmath, fileinfo, gd.

Pasos de instalación

1

Clona el repositorio

git clone https://github.com/logo3x/cotizaciones.git
cd cotizaciones
2

Instala las dependencias PHP

composer install --optimize-autoloader --no-dev
En entornos de desarrollo omite --no-dev para incluir las dependencias de desarrollo como Laravel Sail y PHPUnit.
3

Configura las variables de entorno

Copia el archivo de ejemplo y edita los valores según tu entorno:
cp .env.example .env
Los valores mínimos que debes configurar son:
.env
APP_NAME="Cotizaciones Confi"
APP_ENV=production
APP_URL=https://tu-dominio.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=proyecto_base
DB_USERNAME=tu_usuario
DB_PASSWORD=tu_contraseña

MAIL_MAILER=smtp
MAIL_HOST=tu_servidor_smtp
MAIL_PORT=587
MAIL_USERNAME[email protected]
MAIL_PASSWORD=tu_contraseña_smtp
MAIL_FROM_ADDRESS[email protected]
MAIL_FROM_NAME="${APP_NAME}"
Configura correctamente MAIL_* antes de poner la aplicación en producción. El flujo de aprobaciones envía notificaciones por correo a gerentes y administradores. Sin correo configurado, las notificaciones fallarán silenciosamente pero el flujo de aprobaciones seguirá funcionando.
4

Genera la clave de la aplicación

php artisan key:generate
5

Ejecuta las migraciones

php artisan migrate
Este comando crea todas las tablas en la base de datos. Si ya existe una base de datos con datos, revisa primero el estado de las migraciones con php artisan migrate:status para evitar pérdida de datos.
6

Carga los datos iniciales

php artisan db:seed
Los seeders cargan los catálogos base: turnos, EPPs, exámenes, orígenes de factores y demás datos de configuración requeridos por la aplicación.
7

Instala las dependencias frontend y compila los assets

npm install && npm run build
8

Configura el servidor web

Apunta el document root del virtual host al directorio public/ del proyecto.
server {
    listen 80;
    server_name tu-dominio.com;
    root /var/www/cotizaciones/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
Los directorios storage/ y bootstrap/cache/ deben ser escribibles por el proceso del servidor web. Ejecuta chmod -R 775 storage bootstrap/cache y asegúrate de que el propietario sea el usuario del servidor (por ejemplo, www-data).
9

Configura los permisos de Filament Shield

Filament Shield gestiona el control de acceso por rol. Genera las políticas y permisos para todos los recursos con:
php artisan shield:generate --all
Esto crea automáticamente los permisos view, create, update, delete para cada recurso registrado en Filament (Cotizaciones, Personal, Equipos, Herramientas, Consumibles, Usuarios, etc.).
10

Crea el primer usuario administrador

php artisan make:filament-user
El comando solicita nombre, correo y contraseña de forma interactiva. Tras crearlo, asigna el rol Administrador desde el panel en Usuarios o directamente en base de datos.
También puedes crear el usuario inicial a través del seeder si tu proyecto incluye un UserSeeder configurado para entornos de producción.

Configuración de almacenamiento

La aplicación utiliza el driver local por defecto. Crea el enlace simbólico para que los archivos almacenados en storage/app/public sean accesibles desde la web:
shell
php artisan storage:link

Verificación

Una vez completados todos los pasos, abre APP_URL en tu navegador. Deberías ver la pantalla de inicio de sesión. Ingresa con las credenciales del usuario administrador creado en el paso 10.

Build docs developers (and LLMs) love