first commit

This commit is contained in:
NicolasHorde 2025-03-24 20:04:19 +01:00
commit ebc5ffdbfb
9 changed files with 336 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.DS_Store

4
Chart.yaml Normal file
View File

@ -0,0 +1,4 @@
apiVersion: v2
name: typebot
version: 0.1.0
description: Helm Chart for deploying Typebot with Traefik

2
templates/NOTES.txt Normal file
View File

@ -0,0 +1,2 @@
---
Thank you for installing {{ .Chart.Name }}!

0
templates/_helpers.tpl Normal file
View File

172
templates/deployment.yaml Normal file
View File

@ -0,0 +1,172 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: typebot-builder
spec:
replicas: 1
selector:
matchLabels:
app: typebot-builder
template:
metadata:
labels:
app: typebot-builder
spec:
containers:
- name: typebot-builder
image: {{ .Values.image.builder.repository }}:{{ .Values.image.builder.tag }}
ports:
- containerPort: 3000
env:
- name: DATABASE_URL
value: "postgresql://{{ .Values.postgres.user }}:{{ .Values.postgres.password }}@typebot-postgres:5432/{{ .Values.postgres.db }}"
- name: ENCRYPTION_SECRET
value: "{{ .Values.encryption }}"
- name: NEXTAUTH_URL
value: "https://{{ .Values.domain.builder }}"
- name: ADMIN_EMAIL
value: "{{ .Values.email }}"
{{- if .Values.redis.enabled }}
- name: REDIS_URL
value: "redis://{{ .Values.redis.host }}:{{ .Values.redis.port }}"
{{- end }}
{{- if .Values.s3.enabled }}
- name: S3_ACCESS_KEY
value: {{ .Values.s3.accessKey | quote }}
- name: S3_SECRET_KEY
value: {{ .Values.s3.secretKey | quote }}
- name: S3_BUCKET
value: {{ .Values.s3.bucket | quote }}
- name: S3_PORT
value: {{ .Values.s3.port | quote }}
- name: S3_ENDPOINT
value: {{ .Values.s3.endpoint | quote }}
- name: S3_SSL
value: {{ .Values.s3.ssl | quote }}
- name: S3_REGION
value: {{ .Values.s3.region | quote }}
- name: S3_FORCE_PATH_STYLE
value: {{ .Values.s3.forcePathStyle | quote }}
{{- end }}
- name: DISABLE_SIGNUP
value: {{ .Values.extraEnv.disablesignup | quote }}
- name: DEBUG
value: {{ .Values.extraEnv.debug | quote }}
- name: NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE
value: {{ .Values.extraEnv.uploadmaxsize | quote }}
- name: CHAT_API_TIMEOUT
value: {{ .Values.extraEnv.chatAPItimeout | quote }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: typebot-viewer
spec:
replicas: 1
selector:
matchLabels:
app: typebot-viewer
template:
metadata:
labels:
app: typebot-viewer
spec:
containers:
- name: viewer
image: {{ .Values.image.viewer.repository }}:{{ .Values.image.viewer.tag }}
ports:
- containerPort: 3000
env:
- name: DATABASE_URL
value: "postgresql://{{ .Values.postgres.user }}:{{ .Values.postgres.password }}@typebot-postgres:5432/{{ .Values.postgres.db }}"
- name: ENCRYPTION_SECRET
value: "{{ .Values.encryption }}"
- name: NEXTAUTH_URL
value: "https://{{ .Values.domain.viewer }}"
- name: ADMIN_EMAIL
value: "{{ .Values.email }}"
{{- if .Values.redis.enabled }}
- name: REDIS_URL
value: "redis://{{ .Values.redis.host }}:{{ .Values.redis.port }}"
{{- end }}
{{- if .Values.s3.enabled }}
- name: S3_ACCESS_KEY
value: {{ .Values.s3.accessKey | quote }}
- name: S3_SECRET_KEY
value: {{ .Values.s3.secretKey | quote }}
- name: S3_BUCKET
value: {{ .Values.s3.bucket | quote }}
- name: S3_PORT
value: {{ .Values.s3.port | quote }}
- name: S3_ENDPOINT
value: {{ .Values.s3.endpoint | quote }}
- name: S3_SSL
value: {{ .Values.s3.ssl | quote }}
- name: S3_REGION
value: {{ .Values.s3.region | quote }}
- name: S3_FORCE_PATH_STYLE
value: {{ .Values.s3.forcePathStyle | quote }}
{{- end }}
- name: DISABLE_SIGNUP
value: {{ .Values.extraEnv.disablesignup | quote }}
- name: DEBUG
value: {{ .Values.extraEnv.debug | quote }}
- name: NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE
value: {{ .Values.extraEnv.uploadmaxsize | quote }}
- name: CHAT_API_TIMEOUT
value: {{ .Values.extraEnv.chatAPItimeout | quote }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: typebot-postgres
spec:
replicas: 1
selector:
matchLabels:
app: typebot-postgres
template:
metadata:
labels:
app: typebot-postgres
spec:
containers:
- name: postgres
image: {{ .Values.image.postgres.repository }}:{{ .Values.image.postgres.tag }}
ports:
- containerPort: 5432
env:
- name: POSTGRES_USER
value: {{ .Values.postgres.user | quote }}
- name: POSTGRES_PASSWORD
value: {{ .Values.postgres.password | quote }}
- name: POSTGRES_DB
value: {{ .Values.postgres.db | quote }}
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: typebot-postgres-pvc
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: typebot-redis
spec:
replicas: 1
selector:
matchLabels:
app: typebot-redis
template:
metadata:
labels:
app: typebot-redis
spec:
containers:
- name: redis
image: redis:7
ports:
- containerPort: 6379

39
templates/ingress.yaml Normal file
View File

@ -0,0 +1,39 @@
---
{{- if .Values.ingress.enabled }}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: typebot-builder
spec:
ingressClassName: {{ .Values.ingress.className }}
rules:
- host: {{ .Values.domain.builder }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: typebot-builder
port:
number: 3000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: typebot-viewer
spec:
ingressClassName: {{ .Values.ingress.className }}
rules:
- host: {{ .Values.domain.viewer }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: typebot-viewer
port:
number: 3000
{{- end }}

12
templates/pvc.yaml Normal file
View File

@ -0,0 +1,12 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: typebot-postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.postgres.persistence.size }}
storageClassName: {{ .Values.postgres.persistence.storageClass }}

52
templates/svc.yaml Normal file
View File

@ -0,0 +1,52 @@
---
apiVersion: v1
kind: Service
metadata:
name: typebot-builder
spec:
selector:
app: typebot-builder
ports:
- port: 3000
targetPort: 3000
protocol: TCP
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: typebot-viewer
spec:
selector:
app: typebot-viewer
ports:
- port: 3000
targetPort: 3000
protocol: TCP
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: typebot-postgres
spec:
selector:
app: typebot-postgres
ports:
- port: 5432
targetPort: 5432
protocol: TCP
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: typebot-redis
spec:
selector:
app: typebot-redis
ports:
- port: 6379
targetPort: 6379
protocol: TCP
type: ClusterIP

54
values.yaml Normal file
View File

@ -0,0 +1,54 @@
domain:
viewer: typebot.example.com
builder: typebot_builder.example.com
email: admin@example.com
encryption: changeme
postgres:
user: typebot
password: changeme
db: typebot
persistence:
enabled: true
size: 1Gi
storageClass: standard
image:
builder:
repository: ghcr.io/baptistearno/typebot-builder
tag: latest
viewer:
repository: ghcr.io/baptistearno/typebot-viewer
tag: latest
postgres:
repository: postgres
tag: 15
studio:
enabled: true
s3:
enabled: true
accessKey: minio
secretKey: minio123
bucket: typebot
port: 9000
endpoint: localhost
ssl: false
region: us-east-1
forcePathStyle: true
redis:
enabled: true
host: typebot-redis
port: 6379
extraEnv:
disablesignup: "false"
debug: "false"
uploadmaxsize: "10000000"
chatAPItimeout: "30000"
ingress:
enabled: true
className: traefik