# Despliegue de Blocksy en VPS

Blocksy es una aplicación Astro 5 con renderizado de servidor y el adaptador
oficial de Node en modo `standalone`.

## Datos de la aplicación

- Dominio principal: `blocksy.ai`
- Alias: `www.blocksy.ai`
- Node recomendado: 22 LTS
- Puerto interno: `4322`
- Health check: `GET /api/health`
- Comando de instalación: `npm ci`
- Comando de compilación: `npm run build`
- Comando de producción: `npm start`
- Entrada compilada: `dist/server/entry.mjs`

## Variables de entorno

Crear `/etc/blocksy.env`, legible únicamente por el usuario del servicio:

```dotenv
HOST=127.0.0.1
PORT=4322
OPENAI_API_KEY=REEMPLAZAR
OPENAI_MODEL=gpt-5.4-mini
```

No guardar `OPENAI_API_KEY` dentro del repositorio.

## Servicio systemd sugerido

```ini
[Unit]
Description=Blocksy Astro
After=network.target

[Service]
Type=simple
User=blocksy
Group=blocksy
WorkingDirectory=/var/www/blocksy
EnvironmentFile=/etc/blocksy.env
ExecStart=/usr/bin/node /var/www/blocksy/dist/server/entry.mjs
Restart=always
RestartSec=5

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

Después de instalarlo como `/etc/systemd/system/blocksy.service`:

```bash
sudo systemctl daemon-reload
sudo systemctl enable --now blocksy
curl http://127.0.0.1:4322/api/health
```

## Nginx sugerido

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name blocksy.ai www.blocksy.ai;

    client_max_body_size 25m;

    location / {
        proxy_pass http://127.0.0.1:4322;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
```

Validar y recargar:

```bash
sudo nginx -t
sudo systemctl reload nginx
```

Cuando los registros DNS ya apunten al VPS, emitir el certificado:

```bash
sudo certbot --nginx -d blocksy.ai -d www.blocksy.ai
```

## Registros DNS

Conservar los registros MX y TXT existentes. Cambiar únicamente los registros
web cuando se conozca la IP pública del VPS:

| Tipo | Host | Valor | TTL |
| --- | --- | --- | --- |
| A | `@` | `IPV4_PUBLICA_DEL_VPS` | Automatic |
| CNAME | `www` | `blocksy.ai` | Automatic |

Si el servidor tiene IPv6 estable, también puede agregarse un registro `AAAA`
para `@`; de lo contrario, no agregarlo.
