feat(episode): TRAZA_el-orden-origen-primero-input-despus_S20260728.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: El orden: ORIGEN primero, INPUT después
This commit is contained in:
Ember 2026-07-28 23:37:19 +00:00
parent c063fb2753
commit 62b4770c52

View file

@ -0,0 +1,37 @@
---
episode_id: "31682409-583d-4143-9513-b4860b26aa6f"
puente_flat: "TRAZA_el-orden-origen-primero-input-despus_S20260728.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260728.REINGESTA_CRISOL_FUGAS"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: El orden: ORIGEN primero, INPUT después"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-28T23:37:09.520205+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Orden decidido y preparación hecha. Te resumo.
## El orden: ORIGEN primero, INPUT después
El bypass del origen es el **único agujero realmente abierto**; la `INPUT` previene uno futuro. Pero lo que decide no es la urgencia sino el **modo de fallo**: los pasos del origen, si salen mal, hacen que una web deje de cargar — visible al instante y reversible con una orden. La `INPUT` es el único paso que puede **dejarte sin entrar al servidor**. Por eso va sola, al final, contigo delante. Dos capas peligrosas moviéndose a la vez significan que, si algo se rompe, no sabes cuál fue.
## Corregí el plan antes de escribirte instrucciones
El plan de ayer decía "pasa `render` y `lumbre` a naranja y restringe la entrada a Cloudflare". **Era incorrecto**, por dos medidas nuevas:
**`lumbre.brasaluz.com` es tu endpoint MCP**, y está en gris a propósito. Su bloque en Caddy lo protege con una lista de IPs permitidas **o** con un token. Si pasara por Cloudflare, todas las peticiones llegarían con IP de Cloudflare y esa lista dejaría de distinguir a nadie: una puerta de dos llaves se quedaría con una sola.
**Caddy no tiene ninguna directiva `tls`**, así que renueva por ACME. Restringir la entrada a los rangos de Cloudflare le habría cortado la validación, y tus certificados caducarían semanas después **en silencio**.
De ahí sale una conclusión incómoda pero honesta: como `lumbre` necesita acceso directo, **la IP de origen no se puede ocultar**. Perseguirlo es perseguir algo imposible. Lo alcanzable, y lo que de verdad importa, es que **el origen rechace las peticiones a los vhosts protegidos cuando no vengan de Cloudflare** — comprobando el carnet que Cloudflare presenta. Se aplica vhost por vhost, no toca ACME, no toca `lumbre`, y no hay lista de IPs que mantener.
## Ya hice mi parte previa
Descargué el certificado de la autoridad de Cloudflare y **verifiqué que es genuino** en vez de suponerlo: emisor `CloudFlare, Inc. / Origin Pull / origin-pull.cloudflare.net`, válido hasta 2029, huella SHA256 `9A:1A:C2:B4:...:A2:B9` por si quieres contrastarla. Lo coloqué en un volumen que el contenedor ya ve y comprobé desde dentro que puede leerlo. **Caddy lleva 2 meses en marcha y no lo reinicié** — recrearlo tumbaría los 27 sitios unos segundos, y no hago eso sin avisarte.