Assistent

Der Assistent führt Sie durch die Ersteinrichtung des BundesMessengers.

Voraussetzungen

Für die Installation des BundesMessengers wird ein bestehendes Kubernetes-Cluster benötigt. Kubernetes wird durch verwaltet. Stellen Sie sicher, dass auf ihrem aktuellen Rechner die Kommandozeilenprogramme helm und kubectl zur Verfügung stehen. Überprüfen Sie außerdem, dass Sie mit kubectl cluster-info Informationen über ihr Kubernetes-Cluster abrufen können.

Server Informationen

Die BundesMessenger-Instanz ist eindeutig mit der Domain identifiziert; Nutzer haben somit Matrix-IDs wie beispielsweise @chris:example.org oder @dirk:example.org. Aus dem Internet erreichbar ist der Server unter der Domain . Die für den Zugriff aus dem Internet nötigen Zertifikate werden automatisch von LetsEncrypt ausgestellt und werden eingesetzt. Um von LetsEncrypt kontaktiert werden zu können, wird die Kontakt-Email verwendet.

Für einen rechtssicheren Betrieb sind die folgenden URLs gegeben:

Externe Systeme

Die PostgreSQL-Datenbank wird intern bereitgestellt. Genauso, wie die Redis-Datenbank.

Zusätzliche Systeme

Es können verschiedene Systeme zum Erweitern der Funktionalität aktiviert werden.

Eigener BundesMessenger Webclient. Dieser erlaubt es, direkt aus dem Webbrowser heraus Nachrichten zu versenden. Die Messenger-Weboberfläche ist erreichbar unter der URL .
Das Admin-Portal erlaubt die Wartung des BundesMessengers über eine Weboberfläche.
Der Scanner scannt Schadcode.
Der Scanner scannt Content.

Download Konfiguration

Der BundesMessenger ist nun fertig konfiguriert! Die Konfigurationsdatei kann hier heruntergeladen werden:

Download
# bum-configuration.yaml 
---
serverName: {{publicServerName}}

# Zum Absichern der Administration gegen externen Zugriff
# kann dies eine lokale Adresse sein
adminAPIServerName: admin-api.{{publicServerName}}
dataPrivacyUrl: {{dataPrivacyURL}}
imprintUrl: {{imprintURL}}
{{#adminportal}}

synapse_admin:
  enabled: true
  uri: admin-gui.{{publicServerName}}
{{/adminportal}}
{{#webclient}}

webclient:
  enabled: true
  uri: {{webclienturl}}
{{/webclient}}
{{#schadcodescanner}}

schadcodescanner:
  enabled: true
{{/schadcodescanner}}
{{#contentscanner}}

contentscanner:
  enabled: true
{{/contentscanner}}

postgresql:
  enabled: true
{{#monitoring}}

monitoring:
  enabled: true
  labels:
  release: kube-prometheus-stack
{{/monitoring}}

ingress:
  tls:
    - hosts:
        # All host names for which to create a certificate
        - {{ publicServerName }}
        - web.{{ publicServerName }}
        - admin-api.{{ publicServerName }}
        - admin-gui.{{ publicServerName }}
      secretName: ingress-bum-tls-certificate
  annotations:
    # Annotation to enable cert manager
    {{#letsencrypt}}
    cert-manager.io/cluster-issuer: letsencrypt-prod
    {{/letsencrypt}}
    {{^letsencrypt}}
    cert-manager.io/cluster-issuer: letsencrypt-staging
    {{/letsencrypt}}
Download
# certmanager-ClusterIssuer.yaml
{{^letsencrypt}}
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: ssl@example.com
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource used to store the account's private key.
      name: letsencrypt-staging-key
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
      - http01:
          ingress:
            class: nginx
{{/letsencrypt}}
{{#letsencrypt}}
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: ssl@example.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource used to store the account's private key.
      name: letsencrypt-prod-key
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
    - http01:
        ingress:
          class: nginx
{{/letsencrypt}}

Installation

Der BundesMessenger wird mittels Helm auf einem Kubernetes-Cluster installiert. Stellen Sie sicher, dass Sie mit kubectl auf das zu verwendende Kubernetes-Cluster zugreifen können. Die folgenden Schritte sind zur Erstinstallation des BundesMessengers unter dem Namespace durchzuführen:

$ helm upgrade --install ingress-nginx ingress-nginx \
    --repo=https://kubernetes.github.io/ingress-nginx \
    --namespace=ingress-nginx --create-namespace

$ helm upgrade --install cert-manager cert-manager \
    --namespace=cert-manager --create-namespace \
    --repo=https://charts.jetstack.io \
    --set=installCRDs=true

$ kubectl apply -f certmanager-ClusterIssuer.yaml

$ helm upgrade --install --namespace=bum --create-namespace \
    -f bum-configuration.yaml \
    bundesmessenger \
    oci://registry.opencode.de/bwi/bundesmessenger/backend/helm-chart/bundesmessenger

Glückwunsch! Der BundesMessenger ist nun einsatzbereit und kann unter https://matrix.example.org erreicht werden.