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:
parent
c063fb2753
commit
62b4770c52
1 changed files with 37 additions and 0 deletions
|
|
@ -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.
|
||||||
Loading…
Reference in a new issue