Files
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

107 lines
5.2 KiB
Plaintext

---
title: Guía de actualización
icon: arrow-up-right-dots
---
## Guías generales
**Haga siempre una copia de seguridad de su base de datos antes de iniciar el proceso de actualización** ejecutando:
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Para restaurar desde la copia de seguridad:
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
Si usa Docker Compose, siga estos pasos:
1. Detenga Twenty: `docker compose down`
2. Cambie el valor de `TAG` en el archivo `.env` junto a su `docker-compose.yml`
3. Inicie Twenty: `docker compose up -d`
El servidor ejecuta automáticamente todas las migraciones de actualización necesarias al iniciarse. No se requiere ningún comando manual.
## Actualización a v2.34+ — PostgreSQL 15 como mínimo
Twenty v2.34 requiere PostgreSQL 15 o una versión posterior. La configuración oficial de Docker Compose utiliza PostgreSQL 16. Si tu instancia se conecta a una base de datos administrada externamente, actualízala antes de iniciar el servidor v2.34.
## Actualizaciones entre versiones (v1.23+)
A partir de la **v1.23**, Twenty admite actualizaciones entre versiones. Puede actualizar directamente desde cualquier versión compatible a la última versión sin tener que pasar por cada versión intermedia.
Por ejemplo, actualizar de la v1.23 directamente a la v2.0 está totalmente admitido.
## Actualización a v2.5+ — envoltura de cifrado de datos en reposo
A partir de la **v2.5**, Twenty almacena los secretos en reposo (tokens OAuth, variables de aplicación, claves privadas de firma, valores de configuración sensibles, secretos TOTP) dentro de una envoltura versionada `enc:v2:` cifrada con `ENCRYPTION_KEY` (o `APP_SECRET` si `ENCRYPTION_KEY` no está definido).
El primer arranque en la v2.5 ejecuta comandos de actualización lentos que **rellenan** las filas existentes en la nueva envoltura. Son idempotentes: si se interrumpe y se reinicia el servidor, se reanuda desde donde se quedó, pero pueden tardar un tiempo en bases de datos grandes. Puedes supervisar el progreso con `upgrade:status`.
Debes establecer una `ENCRYPTION_KEY` dedicada **antes** de la actualización a v2.5 para que el proceso de relleno escriba las filas bajo esa clave desde el principio. Cambiar de clave después del relleno requiere una [rotación](/l/es/developers/self-host/capabilities/key-rotation).
## Rotación de secretos y claves de firma
Para las tareas operativas del día a día, como rotar `ENCRYPTION_KEY`, rotar la clave de firma JWT o revocar una clave de firma filtrada, consulta la [Guía de rotación de claves](/l/es/developers/self-host/capabilities/key-rotation).
## Comprobación del estado de la actualización
El comando `upgrade:status` le permite inspeccionar el estado actual de su instancia y de las migraciones de los espacios de trabajo. Es útil para depurar problemas de actualización o al enviar una solicitud de soporte.
Ejecútelo desde el contenedor del servidor:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Salida de ejemplo:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Opciones
| Opción | Descripción |
| ------------------------- | -------------------------------------------------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Filtra por un espacio de trabajo específico. Puede pasarse varias veces. |
| `-f, --failed-only` | Oculta los espacios de trabajo actualizados, y solo muestra los que están desactualizados o han fallado. |
## Solución de Problemas
Si la actualización falla en algunos espacios de trabajo, el servidor no avanzará más allá del paso con errores. Al reiniciar el servidor (`docker compose up -d`), se reintentará la actualización desde donde se detuvo.
Para identificar rápidamente los problemas, ejecute:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
Esto muestra únicamente los espacios de trabajo que están desactualizados o han fallado, junto con el mensaje de error de cada fallo.
## Antes de la v1.23
Si su instancia es anterior a la v1.23, debe actualizar de forma incremental a través de cada versión principal etiquetada (de la v1.6 a la v1.7, luego de la v1.7 a la v1.8, y así sucesivamente) hasta llegar a la v1.23. A partir de ahí, puede actualizar directamente a la última versión.