### Jitsi Helm Installation Example Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/README.md Provides a step-by-step guide to install Jitsi Meet using Helm, including adding the repository, creating a values.yaml file, and performing the installation. ```bash # 1. Add Helm repository helm repo add jitsi https://jitsi-contrib.github.io/jitsi-helm/ helm repo update # 2. Create values.yaml (see 02_configuration_reference.md) cat > values.yaml <> /etc/nginx/nginx.conf < current-values.yaml ``` -------------------------------- ### Configure Custom Prosody Plugins Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/07_advanced_configuration.md Mount custom Lua modules for Prosody by defining extra volumes and volume mounts, then configuring Prosody to load these modules. The 'contInit' section allows for dynamic configuration updates. ```yaml prosody: extraVolumes: - name: custom-prosody-plugins configMap: name: custom-prosody-plugins extraVolumeMounts: - name: custom-prosody-plugins mountPath: /prosody-plugins-custom custom: contInit: _10_config: | #!/bin/bash # Load custom modules cat >> /etc/prosody/prosody.cfg.lua < publicURL: https://meet.example.com ``` -------------------------------- ### Accessing Helm Values via Dot Notation Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/03_helm_templates.md Demonstrates how to access component-specific and global configuration values using dot notation. ```yaml {{ .Values.{{component}}.{{property}} }} {{ .Values.global.{{property}} }} ``` -------------------------------- ### Tune Prosody Readiness Probe Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/07_advanced_configuration.md Configure readiness probe settings for Prosody to manage traffic routing based on its health. ```yaml prosody: readinessProbe: httpGet: path: /http-bind port: 5280 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 3 successThreshold: 1 ``` -------------------------------- ### Enable Excalidraw Integration Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/04_deployment_patterns.md Enables Excalidraw integration for a virtual whiteboard. Specify the image tag for Excalidraw. ```yaml excalidraw: enabled: true image: tag: "2026.3.0" ``` -------------------------------- ### Blue-Green Deployment with Helm Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/08_integration_and_extensions.md Deploys a new version of Jitsi Meet in parallel to the existing one using a different release name. This allows for testing the new version before switching traffic and decommissioning the old one. ```bash # Deploy new version with different name helm install jitsi-release-v2 jitsi/jitsi-meet \ -f current-values.yaml \ --set nameOverride=jitsi-v2 # Test new version # Update ingress/loadbalancer to point to new version # Delete old version: helm uninstall jitsi-release ``` -------------------------------- ### Jitsi Helm Chart Directory Structure Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/01_chart_overview.md Illustrates the standard directory layout for the Jitsi Meet Helm chart, outlining the purpose of key files and directories. ```yaml jitsi-helm/ ├── Chart.yaml # Chart metadata ├── values.yaml # Default configuration values ├── templates/ # Kubernetes resource templates │ ├── _helpers.tpl # Global helper functions │ ├── configmap.yaml # Global configuration │ ├── serviceaccount.yaml # Service account definition │ ├── web/ # Web component templates │ ├── prosody/ # Prosody component templates │ ├── jicofo/ # Jicofo component templates │ ├── jvb/ # JVB component templates │ ├── jibri/ # Jibri component templates │ ├── jigasi/ # Jigasi component templates │ ├── transcriber/ # Transcriber component templates │ ├── coturn/ # Coturn component templates │ ├── etherpad/ # Etherpad component templates │ ├── excalidraw/ # Excalidraw component templates │ └── tests/ # Test manifests ├── docs/ # Documentation └── files/ # Static files (Grafana dashboards, etc.) ``` -------------------------------- ### Create Istio VirtualService Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/08_integration_and_extensions.md Define an Istio VirtualService to route traffic for a specific host to the Jitsi Meet web service. ```yaml apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: jitsi-web spec: hosts: - meet.example.com http: - match: - uri: prefix: / route: - destination: host: jitsi-meet-web port: number: 80 timeout: 30s retries: attempts: 3 perTryTimeout: 10s ``` -------------------------------- ### Port-forward Jitsi Web Service (ClusterIP) Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/templates/NOTES.txt This command sets up a port-forwarding connection to a Jitsi web service when its type is ClusterIP. This allows access to the application via localhost. ```bash export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "jitsi-meet.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=web" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80 ``` -------------------------------- ### Recording and Streaming Configuration Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/04_deployment_patterns.md Enables Jibri for both local recording and livestreaming, such as to YouTube. Requires YouTube API credentials to be configured via environment variables. ```yaml jibri: enabled: true recording: true livestreaming: true replicaCount: 3 persistence: enabled: true size: 20Gi singleUseMode: false ``` -------------------------------- ### Jibri Configuration File Overrides Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/07_advanced_configuration.md Override default configuration files for Jibri. Customize Jibri settings, stats service, and X.org video dummy configuration. ```yaml jibri: custom: defaults: _jibri_conf: | { "jibri": { "stats": { "enable-stats-service": false } } } _xorg_video_dummy_conf: | # Custom X.org video dummy config ``` -------------------------------- ### Configure LDAP Authentication via Prosody Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/08_integration_and_extensions.md Enable and configure LDAP/Active Directory authentication by specifying connection details and user base for Prosody. ```yaml enableAuth: true prosody: custom: defaults: _prosody_cfg_lua: | authentication = "ldap" ldap = { hostname = "ldap.example.com", bind_dn = "cn=admin,dc=example,dc=com", bind_password = "password", user_base = "ou=users,dc=example,dc=com", user_filter = "(&(uid=$user)(objectClass=inetOrgPerson))" } ``` -------------------------------- ### Add Custom Prosody Plugins Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/README.md Integrates custom Prosody plugins by mounting additional ConfigMaps. This allows extending Jitsi Meet with custom features not included by default. ```yaml prosody: extraVolumes: - name: prosody-modules configMap: name: prosody-modules extraVolumeMounts: - name: prosody-modules subPath: mod_measure_client_presence.lua mountPath: /prosody-plugins-custom/mod_measure_client_presence.lua ``` -------------------------------- ### Mount Extra Files to Web Pod Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/07_advanced_configuration.md Use the 'web.extraFiles' directive to mount custom configuration files or scripts into the web pod. Specify the path, mode, and content for each file. ```yaml web: extraFiles: - path: /etc/nginx/conf.d/custom-locations.conf mode: "0644" content: | location /custom-health { return 200 "OK\n"; } - path: /custom-config.json mode: "0644" content: | { "custom": "configuration" } ``` -------------------------------- ### Configure Jibri Recording Storage Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/08_integration_and_extensions.md Set up persistent storage for Jibri recordings. This allows recordings to survive pod restarts. Ensure to use `ReadWriteOnce` storage or `ReadWriteMany` if scaling Jibri. ```yaml jibri: persistence: enabled: true size: 100G storageClassName: fast-ssd # Or use existing PVC: # existingClaim: jibri-recordings-pvc ``` -------------------------------- ### Guest Access Only Configuration Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/04_deployment_patterns.md Enables guest access without any authentication. This is the default setting. ```yaml enableAuth: false enableGuests: true ``` -------------------------------- ### Set Component Log Levels Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/08_integration_and_extensions.md Configure the verbosity of logs for various Jitsi components by setting environment variables in the Helm chart. Use 'debug', 'info', 'warn', or 'error' as appropriate. ```yaml web: extraEnvs: # Nginx typically doesn't expose log level via env prosody: extraEnvs: PROSODY_LOG_LEVEL: debug # debug, info, warn, error jvb: extraEnvs: JVB_LOG_LEVEL: debug jicofo: extraEnvs: JICOFO_LOG_LEVEL: debug jibri: extraEnvs: JIBRI_LOG_LEVEL: debug ``` -------------------------------- ### Configure OAuth / OpenID Connect Adapter Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/08_integration_and_extensions.md Forward OAuth requests to an external provider by deploying an OIDC adapter container and configuring Nginx proxy. ```yaml web: extraContainers: - name: oidc-adapter image: ghcr.io/jitsi-contrib/jitsi-oidc-adapter:latest ports: - name: http containerPort: 9000 env: - name: OIDC_ISSUER value: "https://auth.example.com" - name: OIDC_CLIENT_ID valueFrom: secretKeyRef: name: oidc-credentials key: client-id custom: defaults: _nginx_conf: | location /oidc/ { proxy_pass http://localhost:9000; } ``` -------------------------------- ### Retrieve Current Jitsi Helm Values Source: https://github.com/jitsi-contrib/jitsi-helm/blob/main/_autodocs/00_TABLE_OF_CONTENTS.md Fetches the current configuration values for a deployed Jitsi Helm release and saves them to a local file. ```bash helm get values jitsi > current-values.yaml ```