# 🚀 Configuración del Servidor - WebChat Widget

## Servidor: bitnami@52.3.160.124
## Ruta: ~/htdocs/webchat

## 📋 Pasos de Configuración

### 1. Verificar/Instalar Node.js

En servidores Bitnami, Node.js puede estar en diferentes ubicaciones:

```bash
# Verificar ubicaciones comunes
which node
/opt/bitnami/nodejs/bin/node --version
/usr/bin/node --version

# Si no está instalado, instalar Node.js
# Para Bitnami en AWS:
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs

# O usar nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
```

### 2. Instalar Dependencias

```bash
cd ~/htdocs/webchat
npm install --production
```

### 3. Configurar Variables de Entorno

```bash
cd ~/htdocs/webchat
nano .env
```

Agregar:

```
OPENAI_API_KEY=sk-tu-api-key-real-aqui
PORT=3000
```

### 4. Configurar Apache/Nginx como Proxy Reverso (Opcional)

Si quieres servir el widget a través de Apache en el puerto 80/443:

**Para Apache:**

```bash
sudo nano /opt/bitnami/apache/conf/bitnami/bitnami.conf
```

Agregar al final:

```apache
<VirtualHost *:80>
    ServerName tu-dominio.com
    
    ProxyPreserveHost On
    ProxyPass /api/ http://localhost:3000/api/
    ProxyPassReverse /api/ http://localhost:3000/api/
    ProxyPass /chat-widget.js http://localhost:3000/chat-widget.js
    ProxyPass /chat-widget.css http://localhost:3000/chat-widget.css
    ProxyPass /example.html http://localhost:3000/example.html
</VirtualHost>
```

Reiniciar Apache:

```bash
sudo /opt/bitnami/ctlscript.sh restart apache
```

### 5. Iniciar el Servidor

**Opción A: Directo (para pruebas)**

```bash
cd ~/htdocs/webchat
npm start
```

**Opción B: Con PM2 (recomendado para producción)**

```bash
# Instalar PM2 globalmente
npm install -g pm2

# Iniciar aplicación
cd ~/htdocs/webchat
pm2 start server.js --name webchat

# Configurar para iniciar al arrancar
pm2 startup
pm2 save
```

**Opción C: Como servicio systemd**

Crear archivo `/etc/systemd/system/webchat.service`:

```ini
[Unit]
Description=WebChat Widget Server
After=network.target

[Service]
Type=simple
User=bitnami
WorkingDirectory=/home/bitnami/htdocs/webchat
Environment=NODE_ENV=production
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
```

Activar servicio:

```bash
sudo systemctl enable webchat
sudo systemctl start webchat
sudo systemctl status webchat
```

### 6. Verificar que Funciona

```bash
# Verificar que el servidor responde
curl http://localhost:3000/api/docs/default

# Ver logs
pm2 logs webchat
# O si usas systemd:
sudo journalctl -u webchat -f
```

### 7. Configurar Firewall (si es necesario)

```bash
# Permitir puerto 3000
sudo ufw allow 3000/tcp
# O si usas iptables:
sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
```

## 🔧 Comandos Útiles

```bash
# Ver estado del servidor
pm2 status
# O
sudo systemctl status webchat

# Ver logs
pm2 logs webchat --lines 50
# O
sudo journalctl -u webchat -n 50

# Reiniciar
pm2 restart webchat
# O
sudo systemctl restart webchat

# Detener
pm2 stop webchat
# O
sudo systemctl stop webchat
```

## 📝 Notas Importantes

1. **Puerto**: El servidor corre en el puerto 3000 por defecto. Asegúrate de que esté abierto.

2. **OPENAI_API_KEY**: Es CRÍTICO que configures tu API key real en el archivo `.env`.

3. **Documentos**: Los documentos deben estar en `~/htdocs/webchat/public/docs/{appId}/`

4. **Permisos**: Asegúrate de que los archivos tengan los permisos correctos:
   ```bash
   chmod -R 755 ~/htdocs/webchat
   ```

5. **Logs**: Los leads capturados se muestran en la consola del servidor.

## 🧪 Probar el Widget

Una vez configurado, puedes probar el widget visitando:

```
http://52.3.160.124:3000/example.html
```

O integrando en cualquier sitio web:

```html
<script src="http://52.3.160.124:3000/chat-widget.js" data-app-id="default"></script>
```

## ⚠️ Troubleshooting

### El servidor no inicia

- Verifica que Node.js esté instalado: `node --version`
- Verifica que el puerto 3000 no esté en uso: `netstat -tulpn | grep 3000`
- Revisa los logs de errores

### El widget no carga

- Verifica que el servidor esté corriendo
- Revisa la consola del navegador por errores CORS
- Verifica que la ruta del script sea correcta

### No se cargan los documentos

- Verifica que existan en `public/docs/{appId}/`
- Revisa permisos de archivos
- Verifica logs del servidor

