Actualiza toolkit operativo y documentación

This commit is contained in:
urieljareth
2026-09-10 20:53:50 -06:00
parent 3b7209dcc1
commit 714057bfc8
69 changed files with 6023 additions and 384 deletions
+49 -9
View File
@@ -1,7 +1,22 @@
# Caso: Parche enterprise en Chatwoot (Coolify + LXC 102)
> Documentacion de caso verificada el 2026-06-16 desde esta maquina.
> Dominio: `https://chatwoot-c11xzy2tx2cdapm32f5b89vy.urieljareth.org`
> Dominio: **`https://chat.urieljareth.org`** (corregido el 2026-07-24; el FQDN
> `chatwoot-c11xzy2tx2cdapm32f5b89vy.urieljareth.org` que decia antes ya no aplica).
> **Leer antes de usar este caso (revision 2026-07-24):**
>
> 1. **El parche caduca solo en <= 24 h.** No hace falta actualizar para
> perderlo: `Internal::CheckNewVersionsJob` hace ping diario a
> `hub.2.chatwoot.com` y reescribe el plan con lo que responda el hub. Con el
> identifier actual la ventana es todos los dias a las **16:16 UTC**.
> 2. **Los 3 `UPDATE` de este caso no alcanzan** si el plan ya paso por
> `community`: `Internal::ReconcilePlanConfigService` apago los 9 feature
> flags premium en `accounts.feature_flags` de cada cuenta. Hay que correr
> `Apply-ChatwootEnterprisePatch.ps1 -ReenableAccountFeatures`.
>
> Causa raiz completa, plan de actualizacion y fix durable:
> [docs/runbooks/chatwoot-update.md](../runbooks/chatwoot-update.md).
## 0. Resumen ejecutivo
@@ -41,7 +56,7 @@
|---|---|---|
| Host | Docker daemon local | Proxmox VE `192.168.0.200` |
| Ejecucion Docker | `docker exec` directo | `pct exec 102 --` + `docker exec` |
| Usuario SSH | n/a | `root@192.168.0.200` con `~/.openclaw/workspace/proxmox_key_win` |
| Usuario SSH | n/a | `root@192.168.0.200` con `keys/proxmox_ed25519` |
| Contenedor | filtro `name=pgvector` | nombre real: `postgres-c11xzy2tx2cdapm32f5b89vy` |
| DB user / db | `-U postgres -d chatwoot` | `-U <POSTGRES_USER> -d <POSTGRES_DB>` autodetectados (imagen `pgvector/pgvector:pg12` **no crea rol `postgres`**) |
@@ -124,20 +139,29 @@ El script implementa el equivalente exacto y valida los `UPDATE 1`.
2. Sube 3 scripts `.sh` y un `.sql` al host Proxmox (no al LXC, para evitar
un `pct push` extra y problemas de ruta).
3. Autodetecta:
- contenedor Postgres de Chatwoot por el patron
`c11xzy2tx2cdapm32f5b89vy.*(pgvector|postgres|db)`.
- contenedor Postgres de Chatwoot: filtra `docker ps` por el uuid del
servicio y luego por `(pgvector|postgres|db)`. Son **dos greps
encadenados** a proposito — Coolify nombra los contenedores
`<servicio>-<uuid>` (`postgres-c11xzy...`), asi que el patron unico
`<uuid>.*postgres` que tenia antes no casaba nunca y la autodeteccion
fallaba siempre (corregido el 2026-07-24).
- `POSTGRES_USER` / `POSTGRES_DB` / `POSTGRES_PASSWORD` desde
`docker inspect`.
4. Ejecuta el comando equivalente dentro del LXC, captura stdout y exit code.
5. Cuenta las lineas `^UPDATE\s+1\s*$`; **deben ser exactamente 3** o falla.
6. Corre un `SELECT` de verificacion.
7. Limpia los archivos temporales en el host Proxmox.
7. Con `-ReenableAccountFeatures`: reactiva los 9 feature flags premium en todas
las cuentas via `rails runner` y falla si queda alguno pendiente.
8. Limpia los archivos temporales en el host Proxmox.
En el `-DryRun` la `PGPASSWORD` sale enmascarada (antes se imprimia en claro).
### Uso
```powershell
# Desde la raiz del repo.
.\scripts\Apply-ChatwootEnterprisePatch.ps1 -DryRun
.\scripts\Apply-ChatwootEnterprisePatch.ps1 -DryRun -ReenableAccountFeatures
.\scripts\Apply-ChatwootEnterprisePatch.ps1 -ReenableAccountFeatures
.\scripts\Apply-ChatwootEnterprisePatch.ps1 -Container "postgres-c11xzy2tx2cdapm32f5b89vy"
```
@@ -145,10 +169,18 @@ Sin `-Container`, el script lo busca por el UUID del recurso Coolify.
Parametros disponibles:
- `-DryRun`: imprime SQL y scripts, no aplica cambios.
- `-Container <nombre>`: fuerza el contenedor destino.
- `-ReenableAccountFeatures`: ademas de los 3 `UPDATE`, reactiva via
`rails runner` los 9 feature flags premium en **todas** las cuentas y verifica
que no quede ninguno pendiente. **Necesario siempre que el plan venga de
`community`** (ver el aviso al inicio de este documento).
- `-Container <nombre>`: fuerza el contenedor Postgres destino.
- `-AppContainer <nombre>`: contenedor de la app Rails, por defecto
`chatwoot-<ServiceUuid>` (solo lo usa `-ReenableAccountFeatures`).
- `-ServiceUuid <uuid>`: uuid del servicio en Coolify, por defecto
`c11xzy2tx2cdapm32f5b89vy`. De aqui se derivan los nombres de contenedor.
- `-LxcId <id>`: por defecto `102` (Coolify).
- `-ProxmoxHost <host>`: por defecto `192.168.0.200`.
- `-SshKey <ruta>`: por defecto `C:\Users\Uriel Jareth\.openclaw\workspace\proxmox_key_win`.
- `-SshKey <ruta>`: por defecto `keys\proxmox_ed25519`.
### Salida esperada (exitosa)
@@ -222,7 +254,15 @@ resultado, verificar con SELECT, limpiar) es identico.
## 6. Verificacion manual despues del parche
1. Entrar a `https://chatwoot-c11xzy2tx2cdapm32f5b89vy.urieljareth.org`.
Automatica primero:
```powershell
.\scripts\Get-ChatwootLicenseStatus.ps1 -Deep
```
Luego a mano:
1. Entrar a `https://chat.urieljareth.org`.
2. Iniciar sesion con un super admin.
3. Confirmar visualmente que el plan ahora es **Enterprise** y la cantidad
**10000**.