🔥 50% OFF en todas las licencias — Precio de lanzamiento
00d 00h 00m 00s
Obtener oferta →
Volver a Documentación
Guía Técnica v2.0

Guía de Instalación

Todo lo necesario para instalar AutomatizaNegocios en tu servidor VPS o entorno local.

Antes de empezar: Identifica tu tipo de proyecto

La instalación varía según la licencia que adquiriste. Identifica cuál es la tuya:

Característica 📦 Compilado (Partner) ⭐ Código Fuente (Dueño)
Frontend Vue.js Ya compilado en public/build/ Código fuente en resources/js/
Node.js Engine Binario ejecutable node-engine Código fuente en node-engine/src/
¿Necesita npm install? ❌ No ✅ Sí — obligatorio
¿Necesita npm run build? ❌ No ✅ Sí — obligatorio
¿Necesita Node.js en el servidor? Solo para el engine (runtime) Sí — para compilar + engine
¿Cómo sé cuál tengo? Si tu proyecto tiene una carpeta resources/js/ con archivos .vue y .ts, tienes el Código Fuente. Si solo tiene public/build/ con archivos compilados, tienes el Compilado.

Requisitos del Servidor

Requisito Mínimo Recomendado
Sistema Operativo Ubuntu 20.04 LTS Ubuntu 22.04 LTS
CPU 1 vCPU 2+ vCPU
RAM 1 GB 2+ GB
Disco 20 GB SSD 40+ GB SSD
PHP 8.1 8.2+
MySQL 8.0 8.0+
Node.js 18.x 18.x LTS
Servidor Web Nginx 1.18 o Apache 2.4 Última versión

VPS Recomendados

Cualquier VPS con Ubuntu y acceso root es compatible. Recomendamos estos proveedores por su relación calidad/precio:

Paso 1: Instalar Dependencias del Sistema

# Actualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar PHP 8.2 y extensiones necesarias
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring \
  php8.2-xml php8.2-curl php8.2-zip php8.2-gd php8.2-bcmath \
  php8.2-intl php8.2-readline -y

# Instalar MySQL
sudo apt install mysql-server -y

# Instalar Node.js 18 (requerido para AMBOS tipos de licencia)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y

# Verificar versiones
node -v   # Debe mostrar v18.x.x
npm -v    # Debe mostrar 9.x.x o superior

# Instalar Composer (gestor de dependencias PHP)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# Instalar Supervisor (para workers en background)
sudo apt install supervisor -y
⚠️ No uses apt install npm a secas. Instala una versión vieja. Siempre usa el repositorio de NodeSource como se muestra arriba para obtener Node.js 18 LTS.

Servidor Web: elige uno

# Instalar Nginx
sudo apt install nginx -y

Paso 2: Configurar Base de Datos

# Entrar a MySQL
sudo mysql -u root

# Crear base de datos y usuario
CREATE DATABASE app_wsp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'tu_password_seguro';
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
El usuario necesita privilegios GRANT ALL ON *.* porque el sistema crea bases de datos dinámicas para cada tenant.

Paso 3: Subir y Configurar Archivos

# Crear directorio del proyecto
sudo mkdir -p /var/www/automatizanegocios
cd /var/www/automatizanegocios

# Subir archivos (desde tu PC con scp)
scp -r ./proyecto/* usuario@tu-ip:/var/www/automatizanegocios/

# O con Git (solo licencia Código Fuente)
git clone https://tu-repo-privado.git /var/www/automatizanegocios

# Copiar y configurar archivo de entorno
cp .env.example .env
nano .env

Variables .env esenciales:

APP_NAME="AutomatizaNegocios"
APP_ENV=production
APP_KEY=base64:...
APP_DEBUG=false
APP_URL=https://tu-dominio.com

# Idioma predeterminado (es=Español, en=English, fr=Français, pt=Português)
APP_LOCALE=es
APP_FALLBACK_LOCALE=es

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=app_wsp
DB_USERNAME=app_user
DB_PASSWORD=tu_password_seguro

QUEUE_CONNECTION=database

Paso 4: Ejecutar Instalación

Este paso varía según tu tipo de licencia. Selecciona:

Instalación más rápida. El frontend ya viene compilado en public/build/, no necesitas Node.js para compilar.
# Instalar dependencias PHP
composer install --no-dev --optimize-autoloader

# Generar application key
php artisan key:generate

# Ejecutar migraciones y seeders
php artisan migrate --seed

# Instalar OAuth2 (autenticación API)
php artisan passport:install

# Optimizar para producción
php artisan config:cache
php artisan route:cache
php artisan view:cache

# Asignar permisos correctos
sudo chown -R www-data:www-data /var/www/automatizanegocios
sudo chmod -R 775 storage bootstrap/cache

Paso 5: Configurar Servidor Web

Selecciona la guía según el servidor web que instalaste en el Paso 1.

Configuración Nginx

Crea el archivo de configuración:

sudo nano /etc/nginx/sites-available/automatizanegocios

Pega esta configuración:

server {
    listen 80;
    # Incluir wildcard para subdominios de tenants
    server_name tu-dominio.com www.tu-dominio.com *.tu-dominio.com;
    root /var/www/automatizanegocios/public;
    index index.php;

    # Tamaño máximo de uploads (archivos multimedia)
    client_max_body_size 64M;

    # Compresión gzip
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;

    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;
    }

    # Bloquear acceso a archivos ocultos (.env, .git)
    location ~ /\.(?!well-known) { deny all; }

    # Cache de assets estáticos
    location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff2?)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}
# Activar sitio y eliminar default
sudo ln -s /etc/nginx/sites-available/automatizanegocios /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default

# Verificar configuración
sudo nginx -t

# Reiniciar Nginx
sudo systemctl restart nginx

# Instalar SSL con Certbot (dominio principal)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tu-dominio.com -d www.tu-dominio.com

# ⚠️ Para SSL wildcard (subdominios de tenants), ver la
# Guía de Configuración → Subdominios para Tenants → Paso C
Importante: El wildcard *.tu-dominio.com en server_name es necesario para que los subdominios de tenants funcionen. Sin esto, los tenants no podrán acceder a sus paneles.

Paso 5.5: Configurar Firewall (UFW)

Configura el firewall para permitir solo los puertos necesarios:

# Habilitar UFW (si no está activo)
sudo ufw enable

# Permitir SSH (¡IMPORTANTE! Si no lo haces, perderás acceso al servidor)
sudo ufw allow 22

# Permitir HTTP y HTTPS
sudo ufw allow 80
sudo ufw allow 443

# Permitir puerto del Node Engine (si lo usas directamente)
# El puerto depende de tu configuración en .env (NODE_PORT)
sudo ufw allow 3000

# Verificar reglas activas
sudo ufw status verbose
¡Cuidado! Siempre permite el puerto SSH (22) antes de habilitar el firewall. Si no lo haces, quedarás bloqueado fuera del servidor.

Paso 6: Configurar Supervisor (Workers)

CRÍTICO: Sin Supervisor, las campañas de WhatsApp no se enviarán. Laravel usa colas (queues) para procesar los envíos en background. Si Supervisor no está corriendo, los jobs se quedarán en la cola sin procesarse y las campañas aparecerán como "Registrado" con 0 enviados.

Supervisor mantiene los procesos en background corriendo permanentemente.

# 1. Instalar Supervisor
sudo apt install supervisor -y
sudo nano /etc/supervisor/conf.d/automatizanegocios-worker.conf
[program:an-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/automatizanegocios/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/automatizanegocios/storage/logs/worker.log
stopwaitsecs=3600
# Aplicar configuración
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start an-worker:*

Paso 7: Iniciar Node.js Engine (WhatsApp)

Este paso también varía según tu tipo de licencia:

# El engine viene como binario ejecutable
chmod +x /var/www/automatizanegocios/node-engine

# Ejecutar
cd /var/www/automatizanegocios
./node-engine &
Recomendación: Agrega también el Node Engine a Supervisor (o PM2) para que se reinicie automáticamente si el servidor se reinicia.

Paso 8: Verificar Instalación

  1. Visita https://tu-dominio.com — deberías ver la pantalla de login
  2. Ingresa con las credenciales del seeder: admin@admin.com / password
  3. Verifica que el Dashboard Central cargue correctamente
  4. Crea un tenant de prueba y verifica que accede a su panel
  5. Accede al subdominio del tenant: https://nombre-tenant.tu-dominio.com — debe mostrar la pantalla de login del tenant
  6. Verifica el worker: sudo supervisorctl status
  7. Verifica el Node Engine: revisa que el proceso esté corriendo
  8. Verifica el firewall: sudo ufw status
  9. Verifica el SSL wildcard: sudo certbot certificates — debe incluir *.tu-dominio.com
# Lista de verificación rápida desde terminal:
sudo supervisorctl status            # Worker corriendo
ps aux | grep node                   # Node Engine corriendo
sudo ufw status                      # Firewall activo
sudo certbot certificates            # SSL con wildcard
curl -I https://tu-dominio.com       # Dominio principal OK
dig test.tu-dominio.com +short       # DNS wildcard resuelve
IMPORTANTE: Cambia las credenciales del admin inmediatamente después de la primera sesión.

Resumen Rápido por Licencia

Paso 📦 Compilado ⭐ Código Fuente
1. Dependencias del sistema ✅ Igual ✅ Igual
2. Base de datos ✅ Igual ✅ Igual
3. Subir archivos ✅ Igual ✅ Igual (o Git clone)
4. composer install ✅ Sí ✅ Sí
4. npm install && build ❌ No necesario ⚠️ OBLIGATORIO
5. Servidor web ✅ Igual ✅ Igual
6. Supervisor ✅ Igual ✅ Igual
7. Node Engine Ejecutar binario npm install + ejecutar con Node

Troubleshooting

🔴 Vite manifest not found (Error 500)

Error: Vite manifest not found at: .../public/build/manifest.json

Causa: Los assets del frontend no fueron compilados. Esto solo ocurre con la licencia Código Fuente. La licencia Compilado ya incluye public/build/.

Solución:

cd /var/www/automatizanegocios

# Verificar que Node.js está instalado
node -v    # Debe mostrar v18+
npm -v     # Debe mostrar 9+

# Si NO está instalado, instálalo primero:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y

# Instalar dependencias y compilar
npm install
npm run build

# Verificar que se creó el manifest
ls -la public/build/manifest.json

# Corregir permisos
sudo chown -R www-data:www-data public/build

Si hay errores de memoria al compilar:

NODE_OPTIONS="--max-old-space-size=1024" npm run build

🔴 npm: command not found

Causa: Node.js no está instalado en el servidor.

Solución:

# NO uses "apt install npm" — instala una versión vieja
# Usa el repositorio oficial de NodeSource:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y

# Verificar
node -v && npm -v

🟡 Error 500 / Página en blanco

🟡 El interfaz aparece en inglés

🟡 No se conecta WhatsApp

🟡 Error de permisos al escribir en storage

sudo chown -R www-data:www-data /var/www/automatizanegocios
sudo chmod -R 775 storage bootstrap/cache
sudo chmod -R 775 public/build  # Solo si existe

🟡 Certbot SSL falla

🟡 Subdominio muestra otro sitio o landing page

🟡 Subdominio muestra "No es seguro" en HTTPS

🟡 DNS wildcard no resuelve

🔴 Campañas no se envían (0 sent, estado "Registrado")

Este es uno de los problemas más comunes. La campaña se crea pero los mensajes no se procesan.

🔴 Error cURL 28: SSL connection timeout a Evolution API

🔴 Evolution API se cae frecuentemente

🟡 Worker Supervisor muestra FATAL

Referencia Rápida de Mantenimiento

Comandos útiles para el día a día del servidor:

# ===== WORKERS Y COLAS =====
sudo supervisorctl status                      # Ver estado del worker
sudo supervisorctl restart an-worker:*         # Reiniciar worker
php artisan queue:work --once                  # Procesar 1 job manualmente
php artisan queue:retry all                    # Reintentar jobs fallidos
php artisan queue:flush                        # Limpiar jobs fallidos

# ===== CACHÉ Y CONFIGURACIÓN =====
php artisan config:clear                       # Limpiar cache de config
php artisan cache:clear                        # Limpiar cache general
php artisan view:clear                         # Limpiar cache de vistas
php artisan route:clear                        # Limpiar cache de rutas
php artisan optimize                           # Optimizar para producción

# ===== LOGS =====
tail -100 storage/logs/laravel.log             # Ver últimos logs
tail -f storage/logs/laravel.log               # Seguir logs en vivo
tail -50 storage/logs/worker.log               # Ver logs del worker

# ===== SERVIDOR =====
sudo systemctl restart apache2                 # Reiniciar Apache
sudo systemctl restart nginx                   # Reiniciar Nginx
sudo systemctl restart php8.2-fpm              # Reiniciar PHP-FPM
sudo certbot renew --dry-run                   # Probar renovación SSL

# ===== BASE DE DATOS =====
php artisan migrate:status                     # Ver estado de migraciones
php artisan db:seed --class=NombreSeeder       # Ejecutar seeder específico

# ===== MONITOREO =====
free -h                                        # Ver uso de RAM
df -h                                          # Ver uso de disco
top -bn1 | head -5                             # Ver uso de CPU
sudo ufw status                                # Ver reglas de firewall
¿Dudas? ¡Escríbenos!