All templates

Twenty CRM

A CRM with the feel of a spreadsheet: people, companies, pipelines, custom objects.

Added by LeafdTK, 28 Sept 2026 v1.0.0 AGPL-3.0-only community #crm#sales#contacts

Resources

Twenty CRM

LeafdTK2 deployments1 database1 domainv1.0.0

4
  • db

    postgres

    Ready

  • cache

    valkey/valkey:8-alpine

    Running

  • app

    twentycrm/twenty:latest

    Running

  • ingress

    crm.example.com

    Live

Parameters

YAML

twenty.yaml v1.0.0
apiVersion: leaf/v1
kind: Template
metadata:
  name: twenty
  displayName: 'Twenty CRM'
  description: 'A CRM with the feel of a spreadsheet: people, companies, pipelines, custom objects.'
  icon: https://github.com/twentyhq.png?size=256
  version: '1.0.0'
  category: community
  tags: ['crm', 'sales', 'contacts']
  keywords: ['hubspot', 'salesforce', 'pipedrive', 'customers']
  homepage: https://twenty.com
  license: AGPL-3.0-only

parameters:
  - name: appName
    displayName: 'App Name'
    type: string
    default: 'crm'
    required: true
    validation:
      pattern: '^[a-z][a-z0-9-]{1,58}[a-z0-9]$'
      message: 'Must be lowercase alphanumeric with hyphens, 3-60 chars'
  - name: domain
    displayName: 'Domain'
    type: string
    required: true
    placeholder: 'crm.example.com'
  - name: appSecret
    displayName: 'App secret'
    description: 'Generated if left empty'
    type: secret
    validation:
      min: 32
  - name: signups
    displayName: 'Allow sign-ups'
    type: boolean
    default: true
  - name: storage
    displayName: 'Storage'
    description: 'Volume for attachments'
    type: string
    default: '5Gi'
  - name: enableTls
    displayName: 'Enable HTTPS'
    type: boolean
    default: true

resources:
  - name: db
    type: database
    config:
      name: '{{ params.appName }}-db'

  - name: cache
    type: deployment
    config:
      name: '{{ params.appName }}-cache'
      image: valkey/valkey:8-alpine
      replicas: 1
      ports:
        - name: valkey
          containerPort: 6379
          servicePort: 6379
          protocol: TCP

  - name: app
    type: deployment
    config:
      name: '{{ params.appName }}'
      image: twentycrm/twenty:latest
      replicas: 1
      ports:
        - name: http
          containerPort: 3000
          servicePort: 3000
          protocol: TCP
      volumes:
        - name: storage
          type: pvc
          mountPath: /app/packages/twenty-server/.local-storage
          storageSize: '{{ params.storage }}'
      env:
        - key: SERVER_URL
          value: 'https://{{ params.domain }}'
        - key: PG_DATABASE_URL
          value: '{{ resources.db.connectionString }}'
          secret: true
        - key: REDIS_URL
          value: 'redis://{{ resources.cache.serviceName }}:6379'
        - key: APP_SECRET
          value: '{{ params.appSecret }}'
          secret: true
        - key: STORAGE_TYPE
          value: local
        - key: IS_SIGN_UP_DISABLED
          value: '{{ params.signups }}'
        - key: DISABLE_DB_MIGRATIONS
          value: 'false'

  - name: ingress
    type: ingress
    config:
      host: '{{ params.domain }}'
      tlsEnabled: '{{ params.enableTls }}'
      routes:
        - path: /
          serviceName: '{{ resources.app.serviceName }}'
          servicePort: 3000

your own cloud, in one click.

Free and open source. Runs on any Linux box.

Install Orchard