/matrix-helm

A Helm Chart for matrix.org (Synapse and Element Web)

Primary LanguageSmarty

Helm chart for Matrix (Synapse + Element)

You can use this Helm chart to deploy Synapse, its backing PostgreSQL database, and the Element-Web frontend.

helm repo add matrix https://remram44.github.io/matrix-helm
helm install chat matrix/matrix --namespace chat -f values.yaml

For example, to deploy both Synapse and Element at chat.example.org, with the domain part being simply example.org (e.g. @user:example.org, #room:example.org):

homeserverConfig:
  server_name: example.org
  public_baseurl: https://chat.example.org/
  web_client_location: https://chat.example.org/
  email:
    app_name: Example Chat
ingress:
  enabled: true
  hosts:
    - chat.example.org
  tls:
    - hosts:
        - chat.example.org
        - example.org
element:
  config:
    default_server_config:
      m.homeserver:
        base_url: https://chat.example.org
        server_name: Example Chat
  ingress:
    enabled: true
    host: chat.example.org

You can also use a different domain for Synapse and Element, for example:

homeserverConfig:
  server_name: example.org
  public_baseurl: https://synapse.example.org/
  web_client_location: https://element.example.org/
  email:
    app_name: Example Chat
ingress:
  enabled: true
  hosts:
    - synapse.example.org
  tls:
    - hosts:
        - synapse.example.org
        - example.org
element:
  config:
    default_server_config:
      m.homeserver:
        base_url: https://synapse.example.org
        server_name: Example Chat
  ingress:
    enabled: true
    host: element.example.org

For a list of the settings allowed in homeserverConfig, check out Synapse's own documentation.

Why do you use a custom Element image?

The official Element image, docker.io/vectorim/element-web, runs as root and is only built for a few architectures. The image in this repo (element/) is built from docker.io/nginxinc/nginx-unprivileged.