Files
network-documentation/servidores/dockge/README.md
Consultoria AS 8bc5e8d6a5 docs(caddy): fix certificados nexusautoparts expirados (08 Sep 2026)
- Storage de Caddy corrupto: certificados desaparecidos + lock files huérfanos
- Token de Cloudflare sin permisos sobre la zona nexusautoparts.com.mx
- Solución: limpiar locks, token nuevo por zona, reinicio de Caddy
2026-09-08 23:25:17 +00:00

184 lines
6.9 KiB
Markdown

# Dockge / Caddy — Reverse Proxy y SSL
> Servidor `dockge` (192.168.10.74) que ejecuta **Caddy** en Docker como reverse proxy central para los servicios públicos de la red.
>
> **Estado**: ✅ Caddy corriendo, certificados renovados.
---
## 1. Información General
| Parámetro | Valor |
|---|---|
| **Hostname** | `dockge` |
| **IP LAN** | `192.168.10.74` |
| **Servicio** | Caddy v2.11.2 (contenedor Docker) |
| **Imagen** | `caddy-cloudflare:latest` |
| **Configuración** | `/etc/caddy/Caddyfile` dentro del contenedor |
| **Panel Dockge** | `http://192.168.10.74:5001` |
### Contenedores principales
| Contenedor | Función | Puerto expuesto |
|---|---|---|
| `caddy` | Reverse proxy + SSL automático | `443/tcp`, `80/tcp` |
| `jellyfin` | Media server | `8096/tcp`, `1900/udp`, `7359/udp` |
| `jellyseerr` | Requests de Jellyfin | `5055/tcp` |
| `bazarr` | Subtítulos | `6767/tcp` |
| `sonarr` | Series | `8989/tcp` |
| `radarr` | Películas | `7878/tcp` |
| `qbittorrent` | Torrents | `8080/tcp`, `6881/tcp+udp` |
| `prowlarr` | Indexers | `9696/tcp` |
| `dockge` | Gestor de stacks Docker | `5001/tcp` |
---
## 2. Dominios Gestionados por Caddy
### Dominios `consultoria-as.com`
| Dominio | Backend | Estado |
|---|---|---|
| `jellyfin.consultoria-as.com` | `127.0.0.1:8096` | ✅ |
| `mediarequest.consultoria-as.com` | `127.0.0.1:5055` | ✅ |
| `immich.consultoria-as.com` | `192.168.10.78:2283` | ✅ |
| `odoo.consultoria-as.com` | `192.168.10.81:8069` | ✅ |
| `n8n.consultoria-as.com` | `192.168.10.83:5678` | ✅ |
| `metabase.consultoria-as.com` | `192.168.10.170:3000` | ✅ |
| `hacienda.consultoria-as.com` | `192.168.10.167:5172` | ✅ |
| `apihotel.consultoria-as.com` | `192.168.10.167:4000` | ✅ |
| `api-hacienda.consultoria-as.com` | `192.168.10.167:4000` | ✅ |
| `nexus.consultoria-as.com` | `192.168.10.91:5000` | ✅ |
| `git.consultoria-as.com` | `192.168.10.69:3000` | ✅ |
| `navidrome.consultoria-as.com` | `192.168.10.85:4533` | ✅ |
| `foro.consultoria-as.com` | `192.168.30.73:4567` | ✅ |
| `status.consultoria-as.com` | `192.168.10.87:3001` | ✅ |
| `cronicas.consultoria-as.com` | `192.168.10.92:3000` | ✅ |
| `pagoda.consultoria-as.com` | `192.168.10.92:3001` | ✅ |
| `mesh.consultoria-as.com` | `https://192.168.10.97:4443` | ✅ |
| `recetas.consultoria-as.com` | `192.168.10.156:8080` | ✅ |
| `afterlife.consultoria-as.com` | `192.168.10.84:3000` | ✅ |
| `3d.consultoria-as.com` | `192.168.10.104:8000` | ✅ |
| `play.consultoria-as.com` | `192.168.10.108:80` | ⚠️ Backend caído |
| `gym.consultoria-as.com` | `192.168.10.123:80` | ⚠️ Backend caído |
| `strada.consultoria-as.com` | `192.168.10.113:80` | ✅ |
### Dominios adicionales
| Dominio | Backend | Estado |
|---|---|---|
| `horuxfin.com`, `www.horuxfin.com` | `192.168.10.90:3000` | ⚠️ No se puede renovar certificado (token solo cubre `consultoria-as.com`) |
| `nexusautoparts.com.mx` | `192.168.10.91:80` | ✅ |
| `*.nexusautoparts.com.mx` | `192.168.10.91:80` | ✅ |
| `manager.nexusautoparts.com.mx` | `192.168.10.89:5003` | ✅ |
---
## 3. Certificados SSL (Let's Encrypt vía Cloudflare DNS)
Caddy obtiene y renueva certificados automáticamente usando el **DNS challenge** de Cloudflare.
### Token de Cloudflare
Ubicado en el encabezado del `Caddyfile`:
```caddyfile
{
acme_dns cloudflare <TOKEN>
}
```
El token debe tener permisos:
- **Zone:Read**
- **DNS:Edit**
- Zona: `consultoria-as.com`
> **Nota**: el token actual solo cubre `consultoria-as.com`. Para renovar `horuxfin.com` se necesita un token adicional con acceso a esa zona.
### Renovación de certificados
Caddy renueva certificados automáticamente. Para forzar una renovación manual:
```bash
ssh root@192.168.10.74
docker restart caddy
```
O recargar configuración:
```bash
docker exec caddy caddy reload --config /etc/caddy/Caddyfile --force
```
### Comandos útiles
```bash
# Ver logs de Caddy
ssh root@192.168.10.74 "docker logs caddy --tail 50"
# Ver certificados activos
ssh root@192.168.10.74 "docker exec caddy caddy list-modules --versions"
# Validar Caddyfile
ssh root@192.168.10.74 "docker exec caddy caddy validate --config /etc/caddy/Caddyfile"
# Verificar expiración de un dominio
echo | openssl s_client -servername strada.consultoria-as.com -connect strada.consultoria-as.com:443 2>/dev/null | openssl x509 -noout -enddate
```
---
## 3.5 Problema Resuelto: Certificados nexusautoparts expirados (08 Sep 2026)
**Síntoma**: todos los clientes de Nexus Autoparts veían "página no es segura" — `nexusautoparts.com.mx`
y `*.nexusautoparts.com.mx` con certificado vencido (15 Ago 2026).
**Causa raíz (combinada)**:
1. El storage de certificados de Caddy se corrompió: los directorios
`/data/caddy/certificates/.../nexusautoparts.com.mx/` y `wildcard_.nexusautoparts.com.mx/`
**desaparecieron**, quedando solo **lock files huérfanos** en `/data/caddy/caddy/locks/` que
bloqueaban la re-emisión en bucle ("expected 1 zone, got 0" + "no such file or directory").
2. El token de Cloudflare usado en esos bloques **solo tenía acceso a la zona `consultoria-as.com`**,
por lo que el DNS-01 challenge para `nexusautoparts.com.mx` nunca podía funcionar.
**Solución aplicada (08 Sep 2026)**:
1. Eliminar los lock files huérfanos: `rm /data/caddy/caddy/locks/issue_cert_*nexusautoparts*.lock`
(volumen `/var/lib/docker/volumes/caddy_data/_data/caddy/locks/`)
2. Crear token de Cloudflare nuevo con **Zone:Read + DNS:Edit sobre la zona `nexusautoparts.com.mx`**
y configurarlo en los 3 bloques `nexusautoparts` del Caddyfile (los de `consultoria-as.com`
conservan el token original).
3. `docker restart caddy` → certificados re-emitidos (`certificate obtained successfully`
para wildcard y apex), vigentes hasta Dic 2026.
**Lección**: cada zona en Cloudflare necesita su propio token con permisos DNS en el Caddyfile.
Zonas pendientes de token: `horuxfin.com`.
---
## 4. Problemas Resueltos (21 Jun 2026)
- ✅ **Token de Cloudflare inválido**: se actualizó el token en el Caddyfile.
- ✅ **Certificados expirados**: se reinició Caddy y se renovaron todos los certificados de `consultoria-as.com` y `nexusautoparts.com.mx`.
- ✅ **IP incorrecta de StradaAutopartes**: se corrigió de `192.168.10.117` a `192.168.10.113`.
### Pendientes
- [ ] Investigar servicios caídos detrás de `play.consultoria-as.com` (192.168.10.108) y `gym.consultoria-as.com` (192.168.10.123).
- [ ] Generar token de Cloudflare para la zona `horuxfin.com` si se requiere HTTPS en ese dominio.
---
## 5. Backends Caídos Detectados
| Dominio | Backend | Problema |
|---|---|---|
| `play.consultoria-as.com` | `192.168.10.108:80` | No responde (timeout) |
| `gym.consultoria-as.com` | `192.168.10.123:80` | No responde (timeout) |
Estos servicios generan errores `502` en Caddy porque sus backends no están accesibles. Revisar si las VMs/contenedores están apagados o cambiaron de IP.
---
*Documentación Caddy / Dockge - Consultoria Alcaraz Salazar*
*Actualizado: 21 de Junio de 2026*