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

4.1 KiB

Kubernetes for Twenty CRM (Helm)

DISCLAIMER: The k8s and podman deployments are not maintained by the core team. These files are provided and maintained by the community. Twenty core team maintains support for docker deployment.

Overview

This repository contains a world-class Helm chart and (legacy) raw Kubernetes manifests plus Terraform files to help you deploy and manage the Twenty CRM application. The chart is located at packages/twenty-docker/helm/twenty and supersedes the manifests in packages/twenty-docker/k8s/manifests.

Prerequisites

Before using these files, ensure you have the following installed and configured on your system:

  • Kubernetes cluster (e.g., Minikube, EKS, GKE)
  • kubectl
  • Helm 3
  • Terraform
  • Docker

Quick install:

export DOMAIN=your-domain.com
helm install my-twenty packages/twenty-docker/helm/twenty \
  --namespace twentycrm --create-namespace --wait \
  --set server.ingress.hosts[0].host=$DOMAIN \
  --set server.ingress.hosts[0].paths[0].path=/ \
  --set server.ingress.hosts[0].paths[0].pathType=Prefix \
  --set server.ingress.tls[0].hosts[0]=$DOMAIN

See QUICKSTART and chart README for details.

Setup Instructions

Step 1: Clone the Repository

Clone the repository to your local machine:

git clone https://github.com/twentyhq/twenty.git
cd twenty/packages/twenty-docker/k8s

Step 2: Customize the Manifests and Terraform Files

Important: These files require customization for your specific implementation. Update the placeholders and configurations according to your environment and requirements.

Step 3: Deploy with Terraform

  1. Navigate to the Terraform directory:

    cd terraform
    
  2. Initialize Terraform:

    terraform init
    
  3. Plan the deployment:

    terraform plan
    
  4. Apply the deployment:

    terraform apply
    

OR

Step 3 (Alternative): Deploy with Kubernetes Manifests

  1. Navigate to the Kubernetes manifests directory:

    cd ../k8s
    
  2. Create Server Secret

    kubectl create secret generic -n twentycrm tokens --from-literal accessToken=changeme --from-literal loginToken="changeme" --from-literal refreshToken="changeme" --from-literal fileToken="changeme"
    
  3. Apply the manifests:

    kubectl apply -f .
    

Customization

Kubernetes Manifests

  • Namespace: Update the namespace in the manifests as needed.
  • Resource Limits: Adjust the resource limits and requests according to your application's requirements.
  • Environment Variables: Configure server tokens in the Secret command above.

Terraform Files

  • Variables: Update the variables in the variables.tf file to match your environment.
  • Locals: Update the locals in the main.tf file to match your environment.
  • Providers: Ensure the provider configurations (e.g., AWS, GCP) are correct for your setup.
  • Resources: Modify the resource definitions as needed to fit your infrastructure.

Troubleshooting

Common Issues

  • Connectivity: Ensure your Kubernetes cluster is accessible and configured correctly.
  • Permissions: Verify that you have the necessary permissions to deploy resources in your cloud provider.
  • Resource Limits: Adjust resource limits if you encounter issues related to insufficient resources.

Logs and Debugging

  • Use kubectl logs to check the logs of your Kubernetes pods.
  • Use terraform show and terraform state to inspect your Terraform state and configurations.

Conclusion

This setup provides a basic structure for deploying the TwentyCRM application using Kubernetes and Terraform. Ensure you thoroughly customize the manifests and Terraform files to suit your specific needs. For any issues or questions, please refer to the official documentation of Kubernetes and Terraform or seek support from your cloud provider.


Feel free to contribute and improve this repository by submitting pull requests or opening issues. Happy deploying!