Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
General guidelines
Always back up your database before starting the upgrade process by running:- Stop Twenty:
docker compose down - Change the
TAGvalue in the.envfile next to yourdocker-compose.yml - Start Twenty:
docker compose up -d
Cross-version upgrades (v1.22+)
Starting from v1.22, Twenty supports cross-version upgrades. You can jump directly from any supported version to the latest release without stepping through each intermediate version. For example, upgrading from v1.22 straight to v2.0 is fully supported.Upgrading to v2.5+ — at-rest encryption envelope
Starting in v2.5, Twenty stores at-rest secrets (OAuth tokens, application variables, signing-key private keys, sensitive config values, TOTP secrets) inside a versionedenc:v2: envelope encrypted with ENCRYPTION_KEY (or APP_SECRET if ENCRYPTION_KEY is unset).
The first boot on v2.5 runs slow upgrade commands that backfill existing rows into the new envelope. They are idempotent — interrupting and restarting the server resumes from where it left off — but they can take a while on large databases. You can monitor progress with upgrade:status.
You should set a dedicated ENCRYPTION_KEY before the v2.5 upgrade so the backfill writes rows under it from the start. Switching keys after the backfill requires a rotation.
Rotating secrets and signing keys
For day-to-day operational tasks like rotatingENCRYPTION_KEY, rotating the JWT signing key, or revoking a leaked signing key, see the dedicated Key rotation guide.
Checking upgrade status
Theupgrade:status command lets you inspect the current state of your instance and workspace migrations. It is useful for debugging upgrade issues or when filing a support request.
Run it from the server container:
Options
| Flag | Description |
|---|---|
-w, --workspace-id <id> | Filter to a specific workspace. Can be passed multiple times. |
-f, --failed-only | Hide up-to-date workspaces, only show behind and failed entries. |
Troubleshooting
If the upgrade fails on some workspaces, the server will not advance past the failing step. Restarting the server (docker compose up -d) will retry the upgrade from where it left off.
To quickly identify problems, run: