packages/twenty-docker/helm/twenty/README.md
Deploy Twenty CRM on Kubernetes with server, worker, PostgreSQL, and Redis components.
values.yaml.See QUICKSTART.md for a simple 2-line install with your domain.
Prerequisites: Kubernetes 1.21+, Helm 3.8+, default StorageClass
Internal DB + Redis (default):
helm install my-twenty ./packages/twenty-docker/helm/twenty \
--namespace twentycrm --create-namespace
External DB/Redis:
helm install my-twenty ./packages/twenty-docker/helm/twenty \
--namespace twentycrm --create-namespace \
--set db.enabled=false \
--set db.external.host=db.example.com \
--set redisInternal.enabled=false
See values.yaml for a comprehensive list.
twenty and schema core are created automatically by server init containersecrets.tokens.accessToken value via a secure values file; the auto-generated token is a convenience fallback.acme: true)helm lint ./packages/twenty-docker/helm/twenty
helm template my-twenty ./packages/twenty-docker/helm/twenty
helm plugin install https://github.com/quintush/helm-unittest
helm unittest ./packages/twenty-docker/helm/twenty
Local (default): Uses PVCs for persistence
S3: Set storage.type=s3 and provide credentials using a values file. You can either pass credentials directly or reference an existing Kubernetes Secret.
# values-secrets.yaml (do not commit)
# storage:
# type: s3
# s3:
# bucket: my-bucket
# region: us-east-1
# # Option A: direct values
# accessKeyId: AKIA...
# secretAccessKey: ...
# # Option B: reference a Secret
# # secretName: my-s3-creds
# # accessKeyIdKey: accessKeyId
# # secretAccessKeyKey: secretAccessKey
helm install my-twenty ./packages/twenty-docker/helm/twenty -f values-secrets.yaml
Chart.yaml's appVersion (currently v1.14.0). Override via image.tag in values to pin a different version or use latest for rolling updates.--set for sensitive values; use -f values-secrets.yaml or reference existing Kubernetes Secrets via server.extraEnvFrom.
storage.s3.secretName + accessKeyIdKey/secretAccessKeyKey to avoid embedding them in pod specs.