Todo lo necesario para instalar AutomatizaNegocios en tu servidor VPS o entorno local.
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 |
resources/js/ con archivos .vue y .ts,
tienes el Código Fuente. Si solo tiene public/build/ con archivos compilados,
tienes el Compilado.| 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 |
# 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
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.# Instalar Nginx
sudo apt install nginx -y
# 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;
GRANT ALL ON *.* porque el sistema crea bases de datos dinámicas para cada tenant.
# 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
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
Este paso varía según tu tipo de licencia. Selecciona:
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
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
*.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.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
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:*
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 &
https://tu-dominio.com — deberías ver la pantalla de loginadmin@admin.com / passwordhttps://nombre-tenant.tu-dominio.com — debe mostrar la
pantalla de login del tenantsudo supervisorctl statussudo ufw statussudo 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
| 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 |
Vite manifest not found at: .../public/build/manifest.jsonCausa: 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
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
tail -50 storage/logs/laravel.logsudo chmod -R 775 storage bootstrap/cache.env esté configurado correctamentephp artisan config:clear && php artisan cache:clear && php artisan view:clearphp artisan key:generateAPP_LOCALE=es en tu .envphp artisan config:cleares, en, fr, ptps aux | grep node.env (variable NODE_PORT)sudo ufw allow 3000 (o el puerto configurado)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
dig tu-dominio.comsudo ufw allow 80 && sudo ufw allow 443*.tu-dominio.com esté en server_name (Nginx) o
ServerAlias (Apache)sudo systemctl restart nginx o
apache2*.tu-dominio.comsudo certbot certificates — debe mostrar *.tu-dominio.comA con hostname * en tu panel DNSdig NS tu-dominio.comsudo supervisorctl statuscommand not found: sudo apt install supervisor -y y configúralo (ver
Paso 6)STOPPED o FATAL:
sudo supervisorctl restart an-worker:*php artisan queue:work --oncecurl -I --connect-timeout 10 EVOLUTION_API_URL
# Verificar DNS
dig tu-evolution-api.dominio.com +short
# Verificar conectividad TCP
timeout 5 bash -c 'cat < /dev/tcp/HOST/443' && echo "OK" || echo "FALLA"
# Verificar con curl
curl -Ik --connect-timeout 10 https://tu-evolution-api.dominio.com
| Servicios | RAM Mínima | Recomendada |
|---|---|---|
| Solo Evolution API | 1 GB | 2 GB |
| Evolution API + Chatwoot | 4 GB | 8 GB |
| Evolution API + Chatwoot + n8n | 4 GB | 8 GB |
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
tail -50 /var/www/automatizanegocios/storage/logs/worker.logsudo supervisorctl restart an-worker:*php artisan queue:work --onceComandos ú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