Ziel dieser Anleitung
Diese Anleitung zeigt dir, wie du grommunio Chat auf einer bestehenden grommunio-2026.06.1-Appliance installierst, konfigurierst und mit mehreren Benutzern testest. Wichtig ist nicht nur, dass `/chat/` lädt. Wichtig ist, dass Teams, Kanäle, WebSocket-Verbindung, Benutzerrechte und Domain-Zuordnung zusammen funktionieren.
Du installierst grommunio Chat 10 aus dem grommunio-Repository.
Du richtest Datenbank, Chat-Konfiguration, lokalen Admin und Admin-API-Anbindung ein.
Du aktivierst Chat pro Domain und Benutzer.
Du prüfst den Nginx-Upstream für `/chat/`.
Du testest zwei Benutzer im selben Team und Kanal.
Du bewertest, was mandantenfähig ist und wann du eine getrennte Installation brauchst.
Die Reihe bleibt chronologisch: grommunio installieren, Antispam mit Rspamd, SSO mit Keycloak, Meet mit Jitsi und jetzt Chat. Produktkontext findest du auf der grommunio-Produktseite.
Architektur: Was grommunio Chat ist
grommunio Chat ist die Teamkommunikation innerhalb der grommunio-Plattform und basiert technisch auf Mattermost. Die Appliance betreibt den Chat-Dienst lokal und stellt ihn über nginx unter `/chat/` bereit. grommunio Admin hält die Zuordnung zwischen grommunio-Domain, grommunio-Benutzer und Chat-Team.
Browser-> https://mail.example.test/chat/-> nginx location /chat/-> upstream chat_server-> grommunio-chat auf 127.0.0.1:8065-> MariaDB-Datenbank grochat-> Domain-Chat-Team und Benutzer-Zuordnung über grommunio Admin
Schritt 1: Paket installieren und Bestand prüfen
Prüfe zuerst, ob Chat bereits installiert ist. Auf der geprüften Appliance war nur der Admin-Treiber vorhanden; der eigentliche Chat-Server musste nachinstalliert werden.
rpm -qa | grep -Ei 'grommunio-chat|mattermost' | sortzypper search -s grommunio-chatzypper --non-interactive install --auto-agree-with-licenses grommunio-chat-v10
Schritt 2: Datenbank und Konfiguration vorbereiten
Chat benötigt eine eigene Datenbank und eine `config.json`. Verwende eindeutige Passwörter und schreibe sie nicht in Tickets, Screenshots oder Artikel. In produktiven Runbooks gehören diese Werte in ein Secret-Management oder zumindest in root-lesbare Dateien.
install -d -m 0750 -o grochat -g grochat /etc/grommunio-chat /var/log/grommunio-chat /var/lib/grommunio-chatcp -n /etc/grommunio-chat/config.json.example /etc/grommunio-chat/config.json# Beispiel: Datenbank und Benutzer anlegen.# Ersetze <secure-password> durch ein starkes Secret.mariadb <<'SQL'CREATE DATABASE IF NOT EXISTS grochat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER IF NOT EXISTS 'grochat'@'localhost' IDENTIFIED BY '<secure-password>';GRANT ALL PRIVILEGES ON grochat.* TO 'grochat'@'localhost';FLUSH PRIVILEGES;SQL
In `config.json` müssen mindestens `SiteURL`, SQL-Treiber, SQL-DataSource und Local Mode stimmen. Die `SiteURL` muss exakt zur URL passen, mit der Benutzer Chat im Browser öffnen. In der Laborprüfung führte eine abweichende Port-/Origin-Kombination zu WebSocket-403.
python3 - <<'PY'import jsonfrom pathlib import Pathpath = Path('/etc/grommunio-chat/config.json')data = json.loads(path.read_text())data['ServiceSettings']['SiteURL'] = 'https://mail.example.test/chat'data['ServiceSettings']['ListenAddress'] = '127.0.0.1:8065'data['ServiceSettings']['EnableLocalMode'] = Truedata['ServiceSettings']['LocalModeSocketLocation'] = '/var/tmp/grommunio-chat_local.socket'data['SqlSettings']['DriverName'] = 'mysql'data['SqlSettings']['DataSource'] = 'grochat:<secure-password>@tcp(localhost:3306)/grochat?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s'data['TeamSettings']['EnableOpenServer'] = Falsedata['TeamSettings']['RestrictCreationToDomains'] = 'example.test'path.write_text(json.dumps(data, indent=2) + '\n')PYchown grochat:grochat /etc/grommunio-chat/config.jsonchmod 0640 /etc/grommunio-chat/config.json
Schritt 3: Dienst starten und Nginx-Upstream prüfen
Starte Chat und prüfe den lokalen Socket. Auf der geprüften Appliance war zusätzlich wichtig, die mitgelieferte Nginx-Upstream-Datei aus der `.example`-Datei zu aktivieren. Ohne diesen Upstream schlug `nginx -t` mit `host not found in upstream "chat_server"` fehl.
systemctl enable --now grommunio-chattest -S /var/tmp/grommunio-chat_local.socketcp -n /etc/grommunio-common/nginx/upstreams.d/grommunio-chat.conf.example \/etc/grommunio-common/nginx/upstreams.d/grommunio-chat.confnginx -tsystemctl restart nginx grommunio-admin-apicurl -kI https://mail.example.test/chat/curl -k https://mail.example.test/chat/api/v4/system/ping
Schritt 4: Lokalen Chat-Admin und Admin-API anbinden
grommunio Admin benötigt einen technischen Chat-Admin, damit Domains und Benutzer in Chat gespiegelt werden können. Verwende dafür eine Adresse innerhalb der erlaubten Domain. Wenn du `RestrictCreationToDomains = example.test` setzt, ist `admin@localhost` bewusst nicht erlaubt.
export MMCTL_LOCAL_SOCKET_PATH=/var/tmp/grommunio-chat_local.socket/usr/share/grommunio-chat/bin/grommunio-chat-ctl --local user create \--email groadmin@example.test \--username groadmin \--password '<secure-password>' \--system-admin \--email-verified \--disable-welcome-emailcat >/etc/grommunio-admin-api/conf.d/chat.yaml <<'YAML'chat:connection:login_id: groadminpassword: '<secure-password>'url: mail.example.testbasepath: /chat/api/v4port: 443scheme: httpsverify: FalseYAMLchmod 0600 /etc/grommunio-admin-api/conf.d/chat.yamlsystemctl restart grommunio-admin-api
Schritt 5: Domain und Benutzer aktivieren
Aktiviere Chat zuerst auf Domain-Ebene. Erst danach können Benutzer zuverlässig mit Chat verknüpft werden. In der Gegenprobe erzeugte `grommunio-admin domain modify example.test --chat true` ein Chat-Team für diese Domain.
grommunio-admin domain modify example.test --chat truegrommunio-admin user modify alex@example.test --chat true --privChat truegrommunio-admin user modify meet@example.test --chat true --privChat truegrommunio-admin domain query domainname chat chatID --format json-flatgrommunio-admin user query username chat chatAdmin privChat privWeb --format json-flat
Wenn eine Appliance-Version bei `user modify` einen Fehler wirft, prüfe, ob Domain-Chat, technischer Chat-Admin und Admin-API-Verbindung stimmen. Manipuliere produktiv nicht direkt die Datenbank, sondern repariere zuerst die Admin-API-Anbindung und wiederhole die unterstützten `grommunio-admin`-Befehle.
Schritt 6: Login und Kanäle testen
Öffne Chat mit einem normalen Benutzer. Nach dem ersten Login muss das Domain-Team sichtbar sein. In dieser Anleitung heißen Team und Kanäle synthetisch, der Ablauf ist aber identisch zu einer produktiven Umgebung.
Screenshot: Login in grommunio Chat über die Chat-Route.
Screenshot: Nach dem Login sieht der Benutzer das Domain-Team und die Standardkanäle.
Lege dann fachliche Kanäle an. In der Beispielumgebung wurden `Betrieb` und `Projekt` verwendet, weil sie typische Trennungen für interne Collaboration abbilden.
export MMCTL_LOCAL_SOCKET_PATH=/var/tmp/grommunio-chat_local.socketTEAM="$(/usr/share/grommunio-chat/bin/grommunio-chat-ctl --local team list --json \| jq -r '.[0].name')"/usr/share/grommunio-chat/bin/grommunio-chat-ctl --local channel create \--team "$TEAM" \--name betrieb \--display-name "Betrieb" \--purpose "Abstimmung für Betrieb, Monitoring und Tagesbetrieb."/usr/share/grommunio-chat/bin/grommunio-chat-ctl --local channel users add "$TEAM:betrieb" alex meet
Screenshot: Der Kanal Betrieb ist für den ersten Benutzer sichtbar.
Screenshot: Ein zweiter Benutzer sieht dasselbe Team und denselben Kanal.
Schritt 7: Mehrbenutzer- und WebSocket-Test
Teste Chat immer mit zwei getrennten Browser-Kontexten oder zwei Geräten. Eine funktionierende Login-Seite reicht nicht. Die Nachricht muss beim zweiten Benutzer ohne Reload sichtbar werden. Genau dabei fallen falsche `SiteURL`-, Reverse-Proxy- oder WebSocket-Konfigurationen auf.
Screenshot: Der erste Benutzer sendet eine Nachricht im Kanal Betrieb.
Screenshot: Der zweite Benutzer sieht dieselbe Nachricht im gleichen Kanal.
Abnahmekriterien:- /chat/ liefert HTTP 200- /chat/api/v4/system/ping liefert status OK- WebSocket liefert keinen 403-Handshake-Fehler- zwei Benutzer sehen dasselbe Domain-Team- beide Benutzer sehen denselben Kanal- eine Nachricht wird beim zweiten Benutzer sichtbar- nginx -t ist erfolgreich- grommunio-chat, nginx, mariadb und grommunio-admin-api sind active
Mandantenfähigkeit: Was geht und wo brauchst du Trennung?
Die getestete Appliance kann grommunio-Domains jeweils mit einem eigenen Chat-Team verknüpfen. Eine zweite Domain erzeugte in der Gegenprobe ein zweites Team. Das ist hilfreich für organisatorische Trennung, aber es ist keine harte Plattform-Isolation.
Tauglich innerhalb einer gemeinsamen Installation: getrennte Domain-Teams, öffentliche und private Kanäle, Team-Mitglieder, Rollen auf Team-/Kanalebene, kontrollierte Einladungen, direkte Nachrichten innerhalb der Plattform.
Nur eingeschränkt mandantenfähig: globale Chat-Server-Konfiguration, Plugins, Webhooks, Bots, E-Mail-Benachrichtigung, Dateispeicher, Systemkonsole, Suchindex, globale Retention- und Compliance-Funktionen.
Eigene Installation empfohlen: getrennte Kunden mit harten Datenschutzgrenzen, getrennten Administratoren, getrenntem SSO, getrennten Backup-/Restore-Anforderungen, separaten Plugins/Integrationen oder abweichenden Sicherheitsrichtlinien.
In einer grommunio-Groupware-Umgebung ist ein Domain-Team pro Mandant gut für interne Unternehmensbereiche. Für Managed-Service-Kunden mit echtem Isolationserfordernis planst du separate grommunio-Installationen.
grommunio-admin domain create tenant2.test -u 10 --title "Tenant 2 Test" --chat truegrommunio-admin domain query domainname title chat chatID --format json-flat# Erwartung:# example.test -> eigenes Chat-Team# tenant2.test -> eigenes Chat-Team
Troubleshooting aus der Prüfung
`host not found in upstream "chat_server"`: Die Datei `/etc/grommunio-common/nginx/upstreams.d/grommunio-chat.conf` fehlt. Aktiviere sie aus der `.example`-Datei und prüfe danach `nginx -t`.
`WebSocket handshake: 403`: `SiteURL` passt nicht exakt zur Browser-URL. Prüfe FQDN, Port, Reverse Proxy und TLS.
`The email you provided does not belong to an accepted domain`: `RestrictCreationToDomains` blockiert die Adresse. Verwende einen technischen Admin innerhalb der erlaubten Domain.
`chat is not enabled for domain`: Erst die Domain mit `grommunio-admin domain modify <domain> --chat true` aktivieren, danach Benutzer aktivieren.
`Preview Mode: Email notifications have not been configured`: Für Chat-Funktion nicht kritisch, aber produktiv müssen SMTP-/Benachrichtigungspfad und Absenderkonzept geprüft werden.
grommunio 2026 Schritt für Schritt
Diese Reihe ist als praktische Reihenfolge gedacht: erst die Grundinstallation, danach Mail-Schutz, zentrale Anmeldung, Videokonferenzen und anschließend Chat.
- grommunio 2026 installieren
- grommunio-antispam mit Rspamd einrichten
- grommunio-auth mit Keycloak einrichten
- grommunio Meet einrichten und testen
- grommunio Chat einrichten und testen (du bist hier)
grommunio Chat produktiv einführen
ForgeOne plant, lizenziert und betreibt grommunio als souveräne Collaboration-Plattform inklusive Mail, Kalender, Kontakte, Antispam, SSO, Meet, Chat, Monitoring, Backup und Support. Wenn du Chat als Teil deiner Collaboration-Plattform einführen willst, prüfen wir Architektur, Mandantenfähigkeit, Betrieb und Rollout gemeinsam.






