docs: note JWT rotation ready but blocked on supabase compose
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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`.
|
||||||
|
|||||||
Reference in New Issue
Block a user