Self-Hosting

AutoService es open source y puedes desplegarlo en tu propia infraestructura. Esta guía cubre la instalación con Docker (recomendado) y manual.

Con Docker (Recomendado)

Requisitos previos

  • Docker 20.10+
  • Docker Compose 2.0+
  • 2 GB RAM mínimo
  • 10 GB de disco

Instalación

# 1. Clonar el repositorio
git clone https://github.com/lucho19jose/ITSM-IA-FIRST.git
cd ITSM-IA-FIRST

# 2. Copiar el archivo de configuración
cp .env.example .env

# 3. Configurar variables de entorno
nano .env

# 4. Levantar los servicios
docker compose up -d

# 5. Ejecutar migraciones
docker compose exec app php artisan migrate --seed

# 6. Generar clave de aplicación
docker compose exec app php artisan key:generate

Servicios incluidos

El docker-compose.yml incluye:

ServicioPuertoDescripción
app8000Aplicación Laravel
mysql3306Base de datos
redis6379Cache y colas
nginx80/443Proxy reverso
workerProcesador de colas
schedulerTareas programadas

Verificar instalación

# Verificar que todos los servicios estén corriendo
docker compose ps

# Ver logs
docker compose logs -f app

# Acceder a la aplicación
open http://localhost:8000

Variables de entorno

# Aplicación
APP_NAME=AutoService
APP_ENV=production
APP_DEBUG=false
APP_URL=https://tu-dominio.com

# Base de datos
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=autoservice
DB_USERNAME=autoservice
DB_PASSWORD=tu-contraseña-segura

# Redis
REDIS_HOST=redis
REDIS_PORT=6379

# Email (SMTP)
MAIL_MAILER=smtp
MAIL_HOST=smtp.tu-proveedor.com
MAIL_PORT=587
MAIL_USERNAME=soporte@tu-empresa.com
MAIL_PASSWORD=tu-contraseña
MAIL_FROM_ADDRESS=soporte@tu-empresa.com

# IA
AI_ENABLED=true
AI_CLASSIFICATION_THRESHOLD=90
AI_PROVIDER=local

# Cola de trabajos
QUEUE_CONNECTION=redis

# Sesión
SESSION_DRIVER=redis
SESSION_LIFETIME=120

Instalación manual (sin Docker)

Requisitos

  • PHP 8.2+ con extensiones: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Redis, Tokenizer, XML
  • Composer 2.x
  • Node.js 18+ y npm
  • MySQL 8.0+ o PostgreSQL 15+
  • Redis 6+
  • Nginx o Apache

Pasos

# 1. Clonar y configurar
git clone https://github.com/lucho19jose/ITSM-IA-FIRST.git
cd ITSM-IA-FIRST
cp .env.example .env

# 2. Instalar dependencias PHP
composer install --optimize-autoloader --no-dev

# 3. Instalar dependencias frontend
npm install && npm run build

# 4. Configurar base de datos en .env
# (editar DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD)

# 5. Generar clave y migrar
php artisan key:generate
php artisan migrate --seed

# 6. Configurar permisos
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

# 7. Configurar el cron para tareas programadas
# Agregar a crontab:
# * * * * * cd /ruta/a/autoservice && php artisan schedule:run >> /dev/null 2>&1

# 8. Iniciar workers de cola
php artisan queue:work redis --sleep=3 --tries=3 --max-time=3600

Configuración de Nginx

server {
    listen 80;
    server_name tu-dominio.com;
    root /var/www/autoservice/public;

    index index.php;

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

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Actualizaciones

# Con Docker
cd ITSM-IA-FIRST
git pull origin main
docker compose build app
docker compose up -d
docker compose exec app php artisan migrate

# Sin Docker
cd ITSM-IA-FIRST
git pull origin main
composer install --optimize-autoloader --no-dev
npm install && npm run build
php artisan migrate
php artisan queue:restart

Backups

Base de datos

# Con Docker
docker compose exec mysql mysqldump -u autoservice -p autoservice > backup.sql

# Sin Docker
mysqldump -u autoservice -p autoservice > backup.sql

Archivos

# Adjuntos y storage
tar -czf storage-backup.tar.gz storage/app

Restaurar

# Base de datos
mysql -u autoservice -p autoservice < backup.sql

# Archivos
tar -xzf storage-backup.tar.gz

SSL/HTTPS

Con Let’s Encrypt (recomendado)

# Instalar certbot
apt install certbot python3-certbot-nginx

# Obtener certificado
certbot --nginx -d tu-dominio.com

# Renovación automática (ya configurada por certbot)

Monitoreo

Health check

curl https://tu-dominio.com/api/health
# {"status": "ok", "database": "ok", "redis": "ok", "queue": "ok"}

Logs

# Logs de aplicación
tail -f storage/logs/laravel.log

# Con Docker
docker compose logs -f app

Contribuir

¿Quieres contribuir a AutoService? Visita el repositorio en GitHub:

  1. Fork el repositorio
  2. Crea una rama: git checkout -b feature/mi-mejora
  3. Haz commit: git commit -m 'Agregar mi mejora'
  4. Push: git push origin feature/mi-mejora
  5. Abre un Pull Request

Volver al inicio: Visión General →