Prerequisites (Advanced Deployment)¶
The advanced deployment uses Kubernetes and Helm — the same method used by DINUM in production for Visio. This guide assumes familiarity with Kubernetes.
When to use this guide¶
Use the Kubernetes deployment if you need:
- High availability — multiple replicas with automatic failover
- Horizontal scaling — scale backend and frontend independently
- Production-grade recording/transcription — with Egress and the Summary service
- Multi-region or multi-zone deployments
- GitOps workflows — declarative infrastructure management
For smaller deployments, the Docker Compose guide is sufficient.
Required tools¶
Install the following on your workstation:
kubectl¶
# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install kubectl /usr/local/bin/kubectl
kubectl version --client
Helm¶
helmfile (recommended)¶
# Via brew (macOS/Linux)
brew install helmfile
# Or download binary
# https://github.com/helmfile/helmfile/releases
helmfile --version
Tilt (for local development only)¶
curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash
tilt version
Kubernetes cluster requirements¶
Minimum cluster specs¶
| Resource | Minimum | Production |
|---|---|---|
| Nodes | 2 | 3+ |
| CPU per node | 2 cores | 4+ cores |
| RAM per node | 4 GB | 8+ GB |
| Kubernetes version | 1.27+ | Latest stable |
Required cluster features¶
- Ingress controller: nginx-ingress or Traefik
- cert-manager: For automatic TLS certificate management
- PersistentVolume provisioner: For PostgreSQL and Garage storage
- LoadBalancer or NodePort: For LiveKit's UDP port (7882)
Managed Kubernetes options¶
The Meet Helm chart works on any standard Kubernetes cluster:
| Provider | Notes |
|---|---|
| OVH Managed Kubernetes | Used by some Meet community instances |
| Scaleway Kapsule | |
| AWS EKS | |
| GKE (Google Kubernetes Engine) | |
| Azure AKS | |
| On-premise (kubeadm, k3s) |
External services (recommended for production)¶
For production, use managed services instead of running databases in Kubernetes:
| Service | Managed option |
|---|---|
| PostgreSQL | Managed DB (OVH DBaaS, RDS, Cloud SQL, etc.) |
| Redis | Managed Redis (ElastiCache, Upstash, etc.) |
| Object storage | S3 (AWS), Scaleway Object Storage, OVH Object Storage |
Network requirements¶
LiveKit's UDP port must be accessible from the public internet. Options:
- NodePort service — expose UDP 7882 directly on a node IP
- LoadBalancer service — requires a cloud load balancer supporting UDP
- Dedicated LiveKit node — a separate VM running LiveKit outside Kubernetes
See LiveKit in the Helm chart for details.
Summary checklist¶
- kubectl installed and configured for your cluster
- Helm 3.x installed
- Kubernetes cluster 1.27+ running
- Ingress controller deployed (nginx-ingress recommended)
- cert-manager deployed with a ClusterIssuer configured
- PostgreSQL reachable (managed or in-cluster)
- Redis reachable (managed or in-cluster)
- S3-compatible object storage available
- OIDC provider configured
- Domain name with DNS pointing to your ingress
- UDP port 7882 accessible (for LiveKit media)