# Deploy — lolero.cbcren.online

El sitio corre en un servidor estático (`python3 -m http.server`) en el puerto **8899**,
protegido por un reverse proxy **Caddy** con TLS automático.

```
Internet → Caddy (80/443, TLS automático)
              └─ lolero.cbcren.online → reverse_proxy 172.20.0.1:8899
                                        └─ python3 -m http.server (systemd: lolero.service)
                                                        ├─ index.html
                                                        └─ logos/ (68 archivos)
```

---

## 1. Servir los archivos (systemd)

```ini
# /etc/systemd/system/lolero.service
[Unit]
Description=1v9 Convertite en Leyenda - static site
After=network.target

[Service]
User=ren
WorkingDirectory=/home/ren/lolero
ExecStart=/usr/bin/python3 -m http.server 8899 --bind 0.0.0.0
Restart=always
RestartSec=3

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

```bash
sudo cp lolero.service /etc/systemd/system/lolero.service
sudo systemctl daemon-reload
sudo systemctl enable --now lolero
```

> **Nota:** `http.server` lee los archivos del disco en cada request, así que **no hace falta
> reiniciar el servicio** cuando se actualiza `index.html`. El cambio se sirve solo.

## 2. Caddy (reverse proxy)

El Caddyfile activo está en `/home/ren/immich/Caddyfile` (es un bind mount del contenedor
`caddy-ingress`, no `/etc/caddy/Caddyfile`). Se agregó:

```
lolero.cbcren.online {
	reverse_proxy 172.20.0.1:8899
	encode gzip
	header {
		X-Frame-Options SAMEORIGIN
		X-Content-Type-Options nosniff
	}
	log {
		output file /data/caddy/lolero.cbcren.online.log
	}
}
```

Validar y recargar:

```bash
docker exec caddy-ingress caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
docker exec caddy-ingress caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile
```

> `172.20.0.1` es el gateway de la red docker `caddy` (donde corre `caddy-ingress`).
> Cualquier proxy hacia el host usa esa IP.

## 3. DNS

Registro A: `lolero.cbcren.online → 194.163.191.200` (ya creado). Caddy emite el certificado
Let's Encrypt automáticamente en el primer request.

## 4. Verificación

```bash
curl -sk -o /dev/null -w "%{http_code}\n" https://lolero.cbcren.online/   # 200
curl -sk -o /dev/null -w "%{http_code}\n" https://lolero.cbcren.online/logos/T1.png  # 200
```

## 5. Actualizar contenido

Reemplazar `/home/ren/lolero/index.html` y/o `/home/ren/lolero/logos/`. No requiere restart.

## 6. Rollback

```bash
sudo systemctl stop lolero   # baja el servicio
# el 503 de Caddy se devuelve mientras tanto; subirlo de nuevo con:
sudo systemctl start lolero
```

## Notas de puertos

El puerto **8899** se eligió libre (verificado con `ss -tln`). No se tocan puertos en uso
(8080, 8090, 3000, 8000, etc.).