docs: note JWT rotation ready but blocked on supabase compose

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
4Ventures
2026-09-21 18:47:08 +02:00
parent 5d448c0e71
commit 9d1609c88b
3 changed files with 13 additions and 2 deletions

3
.gitignore vendored
View File

@@ -43,6 +43,9 @@ scripts/dokploy_traefik_insert.py
scripts/dokploy_traefik_only.py scripts/dokploy_traefik_only.py
scripts/dokploy_traefik_unlock.py scripts/dokploy_traefik_unlock.py
scripts/dokploy_view_deploy_error.py scripts/dokploy_view_deploy_error.py
scripts/dokploy_collect_supabase_env.py
scripts/dokploy_find_jwt_secret.py
scripts/dokploy_prepare_key_rotation.py
tsconfig.tsbuildinfo tsconfig.tsbuildinfo
# debug / OS # debug / OS

View File

@@ -7,7 +7,8 @@ El PDF “Agencia 2030” y el antiguo `.env.example` del repo contenían **JWTs
### Rotación (checklist — hacerlo en ventana corta) ### Rotación (checklist — hacerlo en ventana corta)
1. Supabase Studio → Settings → API → **regenerar** `anon` y `service_role`. 1. Supabase Studio → Settings → API → **regenerar** `anon` y `service_role`
**o** (self-hosted) cambiar `JWT_SECRET` / `GOTRUE_JWT_SECRET` y emitir JWTs nuevos.
2. Dokploy → client-portal Environment: pegar anon + service_role nuevos → Save → Deploy. 2. Dokploy → client-portal Environment: pegar anon + service_role nuevos → Save → Deploy.
3. n8n (credenciales Supabase / HTTP headers): actualizar API keys. 3. n8n (credenciales Supabase / HTTP headers): actualizar API keys.
4. Local: actualizar `.env.local` (gitignored); no tocar `.env.example` (placeholders). 4. Local: actualizar `.env.local` (gitignored); no tocar `.env.example` (placeholders).
@@ -15,7 +16,10 @@ El PDF “Agencia 2030” y el antiguo `.env.example` del repo contenían **JWTs
6. Smoke: `curl /api/health` → `serviceRoleConfigured true`; `python3 scripts/smoke_operator_login.py`. 6. Smoke: `curl /api/health` → `serviceRoleConfigured true`; `python3 scripts/smoke_operator_login.py`.
7. Rotar `ANTHROPIC_API_KEY` si estuvo en chats/docs (opcional, independiente). 7. Rotar `ANTHROPIC_API_KEY` si estuvo en chats/docs (opcional, independiente).
**No automatizar la regeneración** desde scripts: hace falta confirmación en Studio. **Estado 2026-09-21:** claves nuevas **preparadas** en `.ops/supabase_rotated.env` (gitignored).
**Aplicación bloqueada:** el stack vivo (`ventures-web-supabase-gm0nnn-*`) no tiene compose editable en Dokploy (`4ventures-infra` está en `error` / `composeFile` vacío) y SSH al VPS (`187.77.170.176:22`) hace timeout. Sin recrear contenedores con el nuevo `JWT_SECRET`, los JWT filtrados **siguen válidos**.
**Desbloqueo:** acceso host (SSH/VPN) o restaurar el compose Supabase en Dokploy → sustituir env → recrear servicios auth/kong/rest/studio → Deploy client-portal.
## Superficies a restringir (amenaza) ## Superficies a restringir (amenaza)

View File

@@ -45,6 +45,10 @@ Detalle / revert: `.ops/HARDEN_SURFACES.md`. Re-aplicar: `python3 scripts/dokplo
`app.4ventures.es` y Dokploy **sin** allowlist. `app.4ventures.es` y Dokploy **sin** allowlist.
## Rotación JWT Supabase
Claves nuevas en `.ops/supabase_rotated.env` (gitignored). Aplicar requiere recrear el stack Supabase (ver `SECURITY.md`).
## Incidentes ## Incidentes
Ver `SECURITY.md`. Ver `SECURITY.md`.