Skip to main content

Secrets and rotation

Every value above marked as a secret should come from your own configuration. The server checks them once at startup, but a missing secret never blocks startup: Teable falls back to the default built into older versions, logs the missing variables, and starts. Those built-in values are public, so anyone can forge tokens or decrypt data protected by them. That is fine for a quick local try-out and unsafe for anything else. Upgrading an existing deployment. An instance that ran without these variables was implicitly using the old built-in values, and still is. The startup warning prints the exact block to add so current sessions, tokens, and encrypted data keep working. Copy it as-is, restart, then plan a rotation. If your configuration format needs it, remember to escape $ in the values. New deployment. Generate fresh values instead:
Use openssl rand -hex 8 for the 16-character *_ENCRYPTION_KEY and *_ENCRYPTION_IV slots.
The startup log also warns when a secret is explicitly set to a publicly known former default. The instance keeps running so your data stays reachable, but anyone can forge tokens or decrypt data protected by that value. Rotate it.
Last modified on August 7, 2026