Skip to content

matrix

Version: 2.56.0 Type: application AppVersion: v1.113.0

A Helm chart to deploy a Matrix homeserver stack into Kubernetes

This chart is not maintained by the upstream project and any issues with the chart should be raised here

Chart source: https://github.com/typokign/matrix-chart

Features

  • Latest version of Synapse
  • (Optional) Latest version of Riot Web
  • (Optional) Choice of lightweight Exim relay or external mail server for email notifications
  • (Optional) Coturn TURN server for VoIP calls
  • (Optional) PostgreSQL cluster via stable/postgresql chart
  • (Optional) matrix-org/matrix-appservice-irc IRC bridge
  • (Optional) tulir/mautrix-whatsapp WhatsApp bridge
  • (Optional) Half-Shot/matrix-appservice-discord Discord bridge
  • Fully configurable via values.yaml
  • Ingress definition for federated Synapse and Riot

Source Code

Requirements

Dependencies

Repository Name Version
https://charts.bitnami.com/bitnami postgresql 13.x

TL;DR

helm repo add zekker6 https://zekker6.github.io/helm-charts/
helm repo update
helm install matrix zekker6/matrix

Installing the Chart

To install the chart with the release name matrix

helm install matrix zekker6/matrix

Uninstalling the Chart

To uninstall the matrix deployment

helm uninstall matrix

The command removes all the Kubernetes components associated with the chart including persistent volumes and deletes the release.

Configuration

Read through the values.yaml file. It has several commented out suggested values. Other values may be used from the values.yaml from the common library.

Specify each parameter using the --set key=value[,key=value] argument to helm install.

helm install matrix \
  --set env.TZ="America/New York" \
    zekker6/matrix

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.

helm install matrix zekker6/matrix -f values.yaml

Custom configuration

N/A

Values

Important: When deploying an application Helm chart you can add more values from our common library chart here

Key Type Default Description
bridges.affinity bool false
bridges.discord.auth.botToken string ""
bridges.discord.auth.clientId string ""
bridges.discord.channelName string "[Discord] :guild :name"
bridges.discord.data.capacity string "512Mi"
bridges.discord.data.storageClass string ""
bridges.discord.defaultVisibility string "public"
bridges.discord.enabled bool false
bridges.discord.image.pullPolicy string "Always"
bridges.discord.image.repository string "halfshot/matrix-appservice-discord"
bridges.discord.image.tag string "latest"
bridges.discord.joinLeaveEvents bool true
bridges.discord.presence bool true
bridges.discord.readReceipt bool true
bridges.discord.replicaCount int 1
bridges.discord.resources object {}
bridges.discord.selfService bool false
bridges.discord.service.port int 9005
bridges.discord.service.type string "ClusterIP"
bridges.discord.typingNotifications bool true
bridges.discord.users.nickname string ":nick"
bridges.discord.users.username string ":username#:tag"
bridges.irc.data.capacity string "1Mi"
bridges.irc.database string "matrix_irc"
bridges.irc.databaseSslVerify bool true
bridges.irc.enabled bool false
bridges.irc.image.pullPolicy string "IfNotPresent"
bridges.irc.image.repository string "matrixdotorg/matrix-appservice-irc"
bridges.irc.image.tag string "release-0.22.0-rc1"
bridges.irc.presence bool false
bridges.irc.replicaCount int 1
bridges.irc.resources object {}
bridges.irc.servers."chat.freenode.net".name string "Freenode"
bridges.irc.servers."chat.freenode.net".port int 6697
bridges.irc.servers."chat.freenode.net".ssl bool true
bridges.irc.service.port int 9006
bridges.irc.service.type string "ClusterIP"
bridges.volume.accessMode string "ReadWriteMany"
bridges.volume.capacity string "1Mi"
bridges.volume.storageClass string ""
bridges.whatsapp.bot.avatar string "mxc://maunium.net/NeXNQarUbrlYBiPCpprYsRqr"
bridges.whatsapp.bot.displayName string "WhatsApp bridge bot"
bridges.whatsapp.bot.username string "whatsappbot"
bridges.whatsapp.callNotices bool true
bridges.whatsapp.communityName string "whatsapp_{{.Localpart}}={{.Server}}"
bridges.whatsapp.connection.maxAttempts int 3
bridges.whatsapp.connection.qrRegenCount int 2
bridges.whatsapp.connection.reportRetry bool true
bridges.whatsapp.connection.retryDelay int -1
bridges.whatsapp.connection.timeout int 20
bridges.whatsapp.data.capacity string "512Mi"
bridges.whatsapp.data.storageClass string ""
bridges.whatsapp.enabled bool false
bridges.whatsapp.image.pullPolicy string "Always"
bridges.whatsapp.image.repository string "dock.mau.dev/tulir/mautrix-whatsapp"
bridges.whatsapp.image.tag string "latest"
bridges.whatsapp.permissions.* string "relaybot"
bridges.whatsapp.relaybot.enabled bool false
bridges.whatsapp.relaybot.invites list []
bridges.whatsapp.relaybot.management string "!foo:example.com"
bridges.whatsapp.replicaCount int 1
bridges.whatsapp.resources object {}
bridges.whatsapp.service.port int 29318
bridges.whatsapp.service.type string "ClusterIP"
bridges.whatsapp.users.displayName string "{{if .Notify}}{{.Notify}}{{else}}{{.Jid}}{{end}} (WA)"
bridges.whatsapp.users.username string "whatsapp_{{.}}"
coturn.allowGuests bool true
coturn.enabled bool true
coturn.image.pullPolicy string "IfNotPresent"
coturn.image.repository string "instrumentisto/coturn"
coturn.image.tag string "4.5"
coturn.kind string "DaemonSet"
coturn.labels.component string "coturn"
coturn.ports.from int 49152
coturn.ports.to int 49172
coturn.replicaCount int 1
coturn.resources object {}
coturn.service.type string "ClusterIP"
coturn.sharedSecret string ""
coturn.uris list []
fullnameOverride string ""
imagePullSecrets list []
ingress.annotations."nginx.ingress.kubernetes.io/configuration-snippet" string "proxy_intercept_errors off;\n"
ingress.enabled bool true
ingress.federation bool true
ingress.hosts.federation string "matrix-fed.chart-example.local"
ingress.hosts.riot string "element.chart-example.local"
ingress.hosts.synapse string "matrix.chart-example.local"
ingress.tls list []
mail.enabled bool true
mail.external.host string ""
mail.external.password string ""
mail.external.port int 25
mail.external.requireTransportSecurity bool true
mail.external.username string ""
mail.from string "Matrix <matrix@example.com>"
mail.relay.enabled bool true
mail.relay.image.pullPolicy string "IfNotPresent"
mail.relay.image.repository string "devture/exim-relay"
mail.relay.image.tag string "4.95-r0-4"
mail.relay.labels.component string "mail"
mail.relay.probes.liveness object {}
mail.relay.probes.readiness object {}
mail.relay.probes.startup object {}
mail.relay.replicaCount int 1
mail.relay.resources object {}
mail.relay.service.port int 25
mail.relay.service.type string "ClusterIP"
mail.riotUrl string ""
matrix.adminEmail string "admin@example.com"
matrix.blockNonAdminInvites bool false
matrix.disabled bool false
matrix.disabledMessage string ""
matrix.encryptByDefault string "invite"
matrix.federation.allowPublicRooms bool true
matrix.federation.enabled bool true
matrix.ip_blacklist[0] string "127.0.0.0/8"
matrix.ip_blacklist[10] string "198.51.100.0/24"
matrix.ip_blacklist[11] string "203.0.113.0/24"
matrix.ip_blacklist[12] string "224.0.0.0/4"
matrix.ip_blacklist[13] string "::1/128"
matrix.ip_blacklist[14] string "fe80::/10"
matrix.ip_blacklist[15] string "fc00::/7"
matrix.ip_blacklist[16] string "2001:db8::/32"
matrix.ip_blacklist[17] string "ff00::/8"
matrix.ip_blacklist[18] string "fec0::/10"
matrix.ip_blacklist[1] string "10.0.0.0/8"
matrix.ip_blacklist[2] string "172.16.0.0/12"
matrix.ip_blacklist[3] string "192.168.0.0/16"
matrix.ip_blacklist[4] string "100.64.0.0/10"
matrix.ip_blacklist[5] string "192.0.0.0/24"
matrix.ip_blacklist[6] string "169.254.0.0/16"
matrix.ip_blacklist[7] string "192.88.99.0/24"
matrix.ip_blacklist[8] string "198.18.0.0/15"
matrix.ip_blacklist[9] string "192.0.2.0/24"
matrix.logging.rootLogLevel string "WARNING"
matrix.logging.sqlLogLevel string "WARNING"
matrix.logging.synapseLogLevel string "WARNING"
matrix.oidc_providers list []
matrix.presence bool true
matrix.registration.allowGuests bool false
matrix.registration.autoJoinRooms list []
matrix.registration.disable_verification bool false
matrix.registration.enable_3pid_lookup bool true
matrix.registration.enabled bool false
matrix.retentionPeriod string "7d"
matrix.search bool true
matrix.security.surpressKeyServerWarning bool true
matrix.serverName string "example.com"
matrix.telemetry bool false
matrix.uploads.maxPixels string "32M"
matrix.uploads.maxSize string "10M"
matrix.urlPreviews.enabled bool false
matrix.urlPreviews.rules.ip.blacklist[0] string "127.0.0.0/8"
matrix.urlPreviews.rules.ip.blacklist[1] string "10.0.0.0/8"
matrix.urlPreviews.rules.ip.blacklist[2] string "172.16.0.0/12"
matrix.urlPreviews.rules.ip.blacklist[3] string "192.168.0.0/16"
matrix.urlPreviews.rules.ip.blacklist[4] string "100.64.0.0/10"
matrix.urlPreviews.rules.ip.blacklist[5] string "169.254.0.0/16"
matrix.urlPreviews.rules.ip.blacklist[6] string "::1/128"
matrix.urlPreviews.rules.ip.blacklist[7] string "fe80::/64"
matrix.urlPreviews.rules.ip.blacklist[8] string "fc00::/7"
matrix.urlPreviews.rules.maxSize string "10M"
matrix.urlPreviews.rules.url object {}
nameOverride string ""
networkPolicies.enabled bool false
postgresql.database string "matrix"
postgresql.enabled bool true
postgresql.hostname string ""
postgresql.password string "matrix"
postgresql.persistence.size string "8Gi"
postgresql.port int 5432
postgresql.primary.initdb.scriptsConfigMap string "{{ .Release.Name }}-postgresql-initdb"
postgresql.username string "matrix"
riot.branding.authFooterLinks list []
riot.branding.authHeaderLogoUrl string ""
riot.branding.brand string "Element"
riot.branding.welcomeBackgroundUrl string ""
riot.enabled bool true
riot.image.pullPolicy string "IfNotPresent"
riot.image.repository string "vectorim/riot-web"
riot.image.tag string "v1.7.33"
riot.integrations.api string "https://scalar.vector.im/api"
riot.integrations.enabled bool true
riot.integrations.ui string "https://scalar.vector.im/"
riot.integrations.widgets[0] string "https://scalar.vector.im/_matrix/integrations/v1"
riot.integrations.widgets[1] string "https://scalar.vector.im/api"
riot.integrations.widgets[2] string "https://scalar-staging.vector.im/_matrix/integrations/v1"
riot.integrations.widgets[3] string "https://scalar-staging.vector.im/api"
riot.integrations.widgets[4] string "https://scalar-staging.riot.im/scalar/api"
riot.labels.component string "element"
riot.labs[0] string "feature_new_spinner"
riot.labs[10] string "feature_custom_themes"
riot.labs[1] string "feature_pinning"
riot.labs[2] string "feature_custom_status"
riot.labs[3] string "feature_custom_tags"
riot.labs[4] string "feature_state_counters"
riot.labs[5] string "feature_many_integration_managers"
riot.labs[6] string "feature_mjolnir"
riot.labs[7] string "feature_dm_verification"
riot.labs[8] string "feature_bridge_state"
riot.labs[9] string "feature_presence_in_room_list"
riot.permalinkPrefix string "https://matrix.to"
riot.probes.liveness object {}
riot.probes.readiness object {}
riot.probes.startup object {}
riot.replicaCount int 1
riot.resources object {}
riot.roomDirectoryServers[0] string "matrix.org"
riot.service.port int 80
riot.service.type string "ClusterIP"
riot.welcomeUserId string ""
synapse.image.pullPolicy string "IfNotPresent"
synapse.image.repository string "matrixdotorg/synapse"
synapse.image.tag string "v1.113.0"
synapse.labels.component string "synapse"
synapse.metrics.annotations bool true
synapse.metrics.enabled bool true
synapse.metrics.port int 9092
synapse.probes.liveness.periodSeconds int 10
synapse.probes.liveness.timeoutSeconds int 5
synapse.probes.readiness.periodSeconds int 10
synapse.probes.readiness.timeoutSeconds int 5
synapse.probes.startup.failureThreshold int 6
synapse.probes.startup.periodSeconds int 5
synapse.probes.startup.timeoutSeconds int 5
synapse.replicaCount int 1
synapse.resources object {}
synapse.service.federation.port int 80
synapse.service.federation.type string "ClusterIP"
synapse.service.port int 80
synapse.service.type string "ClusterIP"
volumes.media.capacity string "10Gi"
volumes.media.storageClass string ""
volumes.signingKey.capacity string "1Mi"
volumes.signingKey.storageClass string ""

Older versions

A historical overview of changes can be found on ArtifactHUB

Support


Autogenerated from chart metadata using helm-docs v1.11.0