Resources
Twenty CRM
-
db
postgres
Ready
-
cache
valkey/valkey:8-alpine
Running
-
app
twentycrm/twenty:latest
Running
-
ingress
crm.example.com
Live
Parameters
Deploy Twenty CRM
App Name required
crm
Domain required
crm.example.com
App secret
•••••••••••••••• generated
Generated if left empty
Allow sign-ups
On
Storage
5Gi
Volume for attachments
Enable HTTPS
On
Cancel Deploy
YAML
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