Ziel dieser Anleitung

Diese Anleitung zeigt dir, wie du grommunio Files und grommunio Office auf einer bestehenden grommunio-2026.06.1-Appliance installierst, konfigurierst und durchtestest. Am Ende sollen Benutzer Dateien hochladen, teilen und DOCX, XLSX sowie PPTX direkt im Browser öffnen können.

  • Du installierst grommunio Files 32.0.12 und grommunio Office 9.4.0 aus dem grommunio-Repository.

  • Du richtest Datenbanken, Storage, Redis/File-Locking, Cron und Reverse Proxy ein.

  • Du verbindest Files mit Office und prüfst den echten Editor-Workflow.

  • Du aktivierst die Files-/Office-Integration in grommunio Web.

  • Du testest Upload, Download, Teilen, zweiter Benutzer, Speichern und Wiederöffnen.

  • Du dokumentierst Betriebs-, Backup- und Troubleshooting-Punkte für eine produktive Umgebung.

Die Reihe ist chronologisch gedacht: grommunio 2026 installieren, Antispam mit Rspamd, SSO mit Keycloak, Meet, Chat und jetzt Files mit Office. Produktkontext findest du auf der grommunio-Produktseite.

Architektur: Files, Office, Web und Auth

grommunio Files stellt Dateiablage, WebDAV, Freigaben und Benutzeroberfläche bereit. Die Paketinformationen der geprüften Appliance nennen Nextcloud als technische Basis. grommunio Office ergänzt die browserbasierte Bearbeitung und wird über die OnlyOffice-App in Files angebunden. grommunio Web kann Files als integrierten Einstiegspunkt anzeigen; die Benutzeridentität kommt in dieser Reihe aus grommunio-auth und Keycloak.

grommunio-auth / Keycloak
-> grommunio Web
-> Einstieg zu grommunio Files
-> WebDAV, Shares, Benutzerdateien
-> OnlyOffice-App
-> grommunio Office Document Service
-> Speichern zurück in Files

Voraussetzungen

  • Eine funktionierende grommunio-2026.06.1-Appliance mit Web, Admin, Mail und gültigem FQDN.

  • HTTPS muss über den späteren produktiven FQDN erreichbar sein. Self-Signed-Zertifikate sind nur für isolierte Labs sinnvoll.

  • Genug Speicher für Benutzerdaten, Versionen, Papierkorb, Datenbank und Backups.

  • MariaDB, nginx, PHP-FPM, Redis und Systemd müssen sauber laufen.

  • Benutzer benötigen WebDAV-/Files-Rechte. In der Lab-Prüfung waren `privWeb`, `privDav` und `privFiles` entscheidend.

  • Vor Änderungen erstellst du einen Snapshot oder ein Backup der Appliance.

Schritt 1: Baseline prüfen

Starte nicht mit der Installation, sondern mit einem kurzen Zustandsschnitt. Damit erkennst du später, ob Files/Office ein neues Problem erzeugt hat oder ob der Fehler schon vorher vorhanden war.

bash
cat /etc/os-release
hostname -f
ip addr
df -h
free -h
systemctl --failed
rpm -qa | grep -i grommunio | sort
ss -lntup

Schritt 2: Pakete und Rollen ermitteln

Auf der geprüften grommunio-2026.06.1-Appliance kamen Files und Office als native Pakete aus dem grommunio-Repository. Files brachte Nextcloud-basierte Dateiablage, Office den Document Service und RabbitMQ als Dienstabhängigkeit.

bash
zypper search -s grommunio-files grommunio-office
zypper info grommunio-files grommunio-office grommunio-office-fonts
rpm -ql grommunio-setup | grep -E 'files|office'
Geprüfte Versionen:
- grommunio-files: 32.0.12-lp160.5.1
- grommunio-office: 9.4.0-lp160.6.1
- rabbitmq-server: 4.1.5
- grommunio-web: 3.19.371.ge256c4858

Schritt 3: Files und Office installieren

Installiere Files, Office und RabbitMQ zusammen. Dadurch landen PHP-Abhängigkeiten, Office-Dienste, Fonts und die Files-Anwendung in einem konsistenten Paketstand.

bash
zypper --non-interactive install --auto-agree-with-licenses \
grommunio-files \
grommunio-office \
rabbitmq-server

Prüfe danach, ob die Pakete wirklich installiert sind. Wenn `zypper info` vorher „not installed“ gezeigt hat, muss `rpm -q` danach konkrete Versionsnummern liefern.

bash
rpm -q grommunio-files grommunio-office rabbitmq-server

Schritt 4: Datenbanken und Files-Konfiguration anlegen

Files benötigt eine eigene Datenbank und eine root-/dienstlesbare Konfiguration. Die Secrets gehören nicht in Screenshots, Tickets oder Blogartikel. Verwende Secret-Management oder mindestens root-lesbare Dateien.

bash
install -d -m 0750 /root/grommunio-secrets
openssl rand -base64 32 >/root/grommunio-secrets/files-db-password
chmod 0600 /root/grommunio-secrets/files-db-password
FILES_DB_PASSWORD="$(cat /root/grommunio-secrets/files-db-password)"
mariadb <<SQL
CREATE DATABASE IF NOT EXISTS grofiles CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER IF NOT EXISTS 'grofiles'@'localhost' IDENTIFIED BY '${FILES_DB_PASSWORD}';
GRANT ALL PRIVILEGES ON grofiles.* TO 'grofiles'@'localhost';
FLUSH PRIVILEGES;
SQL

Die Appliance liefert die wichtigen Pfade mit. In der geprüften Installation lagen Anwendung, Konfiguration, externe Apps, Daten und Logs an diesen Stellen.

/usr/share/grommunio-files
/usr/share/grommunio-files/config/config.php
/var/lib/grommunio-files/data
/var/lib/grommunio-files/apps-external
/var/log/grommunio-files/files.log

Schritt 5: Files installieren und Trusted Domains setzen

Führe die Files-Initialisierung mit dem echten FQDN aus. In einer produktiven Umgebung steht hier dein Mail-/Groupware-FQDN ohne Lab-Port. Der `overwritewebroot` bleibt `/files`, weil Files hinter nginx unter diesem Pfad veröffentlicht wird.

bash
cd /usr/share/grommunio-files
sudo -u grofiles ./occ maintenance:install \
--database mysql \
--database-name grofiles \
--database-user grofiles \
--database-pass "$FILES_DB_PASSWORD" \
--admin-user grofiles-admin \
--admin-pass '<secure-admin-password>' \
--data-dir /var/lib/grommunio-files/data
sudo -u grofiles ./occ config:system:set trusted_domains 0 --value="$(hostname -f)"
sudo -u grofiles ./occ config:system:set overwrite.cli.url --value="https://$(hostname -f)/files"
sudo -u grofiles ./occ config:system:set overwritewebroot --value="/files"
sudo -u grofiles ./occ config:system:set overwriteprotocol --value="https"
sudo -u grofiles ./occ config:system:set default_phone_region --value="AT"

Schritt 6: Redis, File Locking und Cron aktivieren

Dateisperren und Hintergrundjobs sind kein optionaler Schmuck. Ohne saubere Jobs bleiben Previews, Aufräumen, Versionen und manche App-Aktionen später liegen.

bash
sudo -u grofiles ./occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
sudo -u grofiles ./occ config:system:set memcache.locking --value="\\OC\\Memcache\\Redis"
sudo -u grofiles ./occ config:system:set redis host --value="127.0.0.1"
sudo -u grofiles ./occ config:system:set redis port --value="6379" --type=integer
sudo -u grofiles ./occ background:cron
systemctl enable --now grommunio-files-cron.timer

Schritt 7: Benutzerquelle anbinden

In der geprüften Appliance wurde `user_external` verwendet, damit sich grommunio-Benutzer gegen den bestehenden DAV-/Groupware-Zugang anmelden können. Dadurch entsteht kein zweiter frei erfundener Benutzerstamm in Files.

bash
cd /usr/share/grommunio-files
sudo -u grofiles ./occ app:enable user_external
sudo -u grofiles ./occ config:system:set user_backends 0 class --value="\\OCA\\UserExternal\\BasicAuth"
sudo -u grofiles ./occ config:system:set user_backends 0 arguments 0 --value="https://$(hostname -f)/dav"

Prüfe danach im grommunio Admin, ob die Benutzer die passenden Rechte haben. In unserer Prüfung waren zwei normale Benutzer mit Web-, DAV- und Files-Rechten ausreichend.

bash
grommunio-admin user query username privWeb privDav privFiles --format json-flat

Schritt 8: Office-Datenbank und Dienste vorbereiten

grommunio Office benötigt eine eigene Datenbank und mehrere Dienste. RabbitMQ, `ds-docservice` und `ds-converter` müssen laufen, sonst lädt Files zwar, aber der Editor bleibt leer oder meldet Download-/Callback-Fehler.

bash
openssl rand -base64 32 >/root/grommunio-secrets/office-db-password
chmod 0600 /root/grommunio-secrets/office-db-password
OFFICE_DB_PASSWORD="$(cat /root/grommunio-secrets/office-db-password)"
mariadb <<SQL
CREATE DATABASE IF NOT EXISTS groffice CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER IF NOT EXISTS 'groffice'@'localhost' IDENTIFIED BY '${OFFICE_DB_PASSWORD}';
GRANT ALL PRIVILEGES ON groffice.* TO 'groffice'@'localhost';
FLUSH PRIVILEGES;
SQL
mysql groffice < /usr/libexec/grommunio-office/server/schema/mysql/createdb.sql
systemctl enable --now rabbitmq-server ds-docservice ds-converter
systemctl start ds-themegen ds-fontgen || true

Schritt 9: Files mit Office verbinden

Aktiviere die OnlyOffice-App in Files und setze die URLs passend zur nginx-Veröffentlichung. In der geprüften Umgebung war Files unter `/files/` und Office unter `/office/` erreichbar.

bash
cd /usr/share/grommunio-files
sudo -u grofiles ./occ app:enable onlyoffice
sudo -u grofiles ./occ config:app:set onlyoffice DocumentServerUrl --value="https://$(hostname -f)/office/"
sudo -u grofiles ./occ config:app:set onlyoffice DocumentServerInternalUrl --value="https://$(hostname -f)/office/"
sudo -u grofiles ./occ config:app:set onlyoffice StorageUrl --value="https://$(hostname -f)/files/"
sudo -u grofiles ./occ config:app:set onlyoffice customizationForcesave --value=true
sudo -u grofiles ./occ config:app:set onlyoffice sameTab --value=true

Für produktive Systeme muss TLS sauber validierbar sein. In einem isolierten Self-Signed-Lab kann es nötig sein, Peer-Prüfung für den Test abzuschalten. Das ist ein Lab-Workaround, kein Produktionsstandard.

bash
# Nur für isolierte Self-Signed-Labs:
sudo -u grofiles ./occ config:app:set onlyoffice verify_peer_off --value=true
# Für produktive Systeme:
sudo -u grofiles ./occ config:app:delete onlyoffice verify_peer_off || true

Schritt 10: grommunio Web integrieren

Aktiviere die Files- und Office-Funktionen im grommunio-Web-Plugin. Benutzer sollen später aus Web in Files wechseln können und Office-Dateitypen direkt bearbeiten.

bash
grep -E 'PLUGIN_FILES_USER_DEFAULT_ENABLE|PLUGIN_FILES_ONLYOFFICE_ENABLE|PLUGIN_FILES_ONLYOFFICE_FILETYPES' \
/etc/grommunio-web/config-files.php
# Erwartung:
# define('PLUGIN_FILES_USER_DEFAULT_ENABLE', true);
# define('PLUGIN_FILES_ONLYOFFICE_ENABLE', true);
# define('PLUGIN_FILES_ONLYOFFICE_FILETYPES', ".doc,.docx,.docxf,.oform,.odp,.ods,.odt,.ppt,.pptx,.xls,.xlsx");

Wenn du die Werte ändern musst, passe `/etc/grommunio-web/config-files.php` an und starte die betroffenen Dienste neu. Verwende dabei den echten FQDN der Umgebung und keine frei gewählten Beispiel-URLs.

bash
systemctl restart nginx php-fpm grommunio-web || true

Schritt 11: Healthchecks ausführen

Prüfe zuerst Dienste und HTTP-Routen. `Office /healthcheck` muss `true` liefern. Files leitet ohne Session erwartungsgemäß auf den Login weiter.

bash
systemctl --no-pager --plain is-active nginx mariadb rabbitmq-server ds-docservice ds-converter grommunio-files-cron.timer php-fpm
systemctl --failed --no-pager --plain
ss -lntup | grep -E ':(80|443|8000|3306|6379)'
curl -kIs https://$(hostname -f)/files/ | head -5
curl -ks https://$(hostname -f)/office/healthcheck
Geprüftes Ergebnis:
- Files liefert ohne Session HTTP 302 zum Login.
- Office /healthcheck liefert true.
- ds-docservice lauscht lokal auf Port 8000.
- nginx, MariaDB, RabbitMQ, ds-docservice, ds-converter, php-fpm und Files-Cron sind aktiv.
- systemctl --failed meldet 0 failed units.

Schritt 12: Login und Dateien prüfen

Öffne Files mit einem normalen grommunio-Benutzer. Wenn du direkt in Files anmelden musst, ist das im geprüften Pfad BasicAuth gegen die bestehende grommunio-Benutzerquelle. In einer vollständig durchgehenden SSO-Architektur prüfst du zusätzlich den Einstieg aus grommunio Web.

https://mail.example.test/files/

Screenshot: Login in grommunio Files mit normalem Benutzer.

Lade anschließend je eine DOCX-, XLSX- und PPTX-Datei hoch. Damit testest du nicht nur die Files-Oberfläche, sondern auch die Office-Zuordnung pro Dateityp.

bash
curl -k -u 'alice@example.test:<password>' -T ForgeOne-Files-Office-Test.docx \
https://mail.example.test/files/remote.php/dav/files/alice@example.test/ForgeOne-Files-Office-Test.docx
curl -k -u 'alice@example.test:<password>' -T ForgeOne-Files-Office-Test.xlsx \
https://mail.example.test/files/remote.php/dav/files/alice@example.test/ForgeOne-Files-Office-Test.xlsx
curl -k -u 'alice@example.test:<password>' -T ForgeOne-Files-Office-Test.pptx \
https://mail.example.test/files/remote.php/dav/files/alice@example.test/ForgeOne-Files-Office-Test.pptx
https://mail.example.test/files/

Screenshot: Files zeigt DOCX, XLSX und PPTX nach Upload und Scan.

Schritt 13: DOCX bearbeiten, speichern und wieder auslesen

Der eigentliche Abnahmetest ist nicht das Öffnen des Editors. Schreibe Text in das Dokument, speichere, schließe, lade die Datei erneut herunter und prüfe, ob die Änderung wirklich in der DOCX-Datei angekommen ist.

https://mail.example.test/files/index.php/apps/onlyoffice/29

Screenshot: DOCX im Office-Editor mit sichtbarer Teständerung.

https://mail.example.test/files/index.php/apps/onlyoffice/29

Screenshot: Der Editor meldet nach dem Speichern, dass alle Änderungen gespeichert sind.

bash
curl -k -u 'alice@example.test:<password>' \
-o /tmp/ForgeOne-Files-Office-Test.docx \
https://mail.example.test/files/remote.php/dav/files/alice@example.test/ForgeOne-Files-Office-Test.docx
unzip -p /tmp/ForgeOne-Files-Office-Test.docx word/document.xml | grep 'ForgeOne Files Office validation'
Geprüftes Ergebnis:
- DOCX wurde im Browser geöffnet.
- Text wurde im Editor eingefügt.
- Speichern meldete "All changes saved".
- WebDAV-Download lieferte eine gültige Microsoft-Word-Datei.
- Der Marker war in word/document.xml enthalten.

Schritt 14: XLSX und PPTX prüfen

Prüfe danach mindestens eine Tabelle und eine Präsentation. In der getesteten Umgebung öffneten beide Dateitypen im passenden Office-Editor.

https://mail.example.test/files/index.php/apps/onlyoffice/30

Screenshot: XLSX öffnet im Tabelleneditor von grommunio Office.

https://mail.example.test/files/index.php/apps/onlyoffice/31

Screenshot: PPTX öffnet im Präsentationseditor von grommunio Office.

Schritt 15: Teilen mit zweitem Benutzer testen

Files ist erst dann praxisfähig, wenn Freigaben funktionieren. Teile eine Datei von Benutzer A an Benutzer B und prüfe danach den Zugriff mit einer getrennten Session.

bash
curl -k -u 'alice@example.test:<password>' \
-H 'OCS-APIRequest: true' \
--data-urlencode 'path=/ForgeOne-Files-Office-Test.docx' \
-d 'shareType=0' \
--data-urlencode 'shareWith=bob@example.test' \
-d 'permissions=15' \
'https://mail.example.test/files/ocs/v2.php/apps/files_sharing/api/v1/shares?format=json'
curl -k -u 'bob@example.test:<password>' -X PROPFIND -H 'Depth: 1' \
https://mail.example.test/files/remote.php/dav/files/bob@example.test/
https://mail.example.test/files/

Screenshot: Der zweite Benutzer sieht die geteilte DOCX-Datei in seinem Files-Konto.

Schritt 16: SSO, MFA und Sessions einordnen

Die zentrale Anmeldung der Gesamtplattform läuft in dieser Artikelreihe über grommunio-auth und Keycloak. Für grommunio Web ist das der normale SSO-Pfad. Files wurde in der geprüften Installation gegen die bestehende grommunio-DAV-Benutzerquelle angebunden; dadurch existiert kein zweiter administrativer Benutzerstamm, auch wenn der direkte Files-Login eine eigene Session erzeugt.

Wenn du eine vollständig nahtlose Browser-SSO-Strecke von Keycloak bis Files erzwingen willst, plane das als eigenes Identity-Thema: Redirect-URIs, Logout-Verhalten, Claims, Gruppen, Session-Lifetime und MFA müssen dann Ende zu Ende getestet werden.

Schritt 17: Backup und Betrieb

  • Sichere `/usr/share/grommunio-files/config/config.php`, `/var/lib/grommunio-files`, `/var/log/grommunio-files`, `/etc/grommunio-office/default.json` und die Datenbanken `grofiles` sowie `groffice`.

  • Plane Benutzerdateien, Versionen und Papierkorb als eigenes Storage-Thema. Die Daten wachsen anders als Mailboxdaten.

  • Prüfe Cron, PHP-Memory-Limit, Upload-Limits, Virenscan-Konzept, Retention, Restore-Test und Monitoring.

  • In produktiven Setups gehören TLS-Zertifikate, interne Office-Callbacks und externe Browser-URLs sauber getrennt und dokumentiert.

  • Nach Updates prüfst du `occ status`, Office-Healthcheck, DOCX-Speichern, Share-Zugriff und grommunio-Web-Einstieg erneut.

Troubleshooting aus der Prüfung

  • Editor meldet Download- oder Callback-Fehler: Prüfe `DocumentServerUrl`, `DocumentServerInternalUrl`, `StorageUrl`, nginx-Pfade und TLS-Vertrauen.

  • Office-Healthcheck ist grün, aber der echte Editor speichert nicht: Teste mit realer DOCX-Datei und WebDAV-Download. Ein synthetischer Healthcheck ersetzt keinen Speicher-/Callback-Test.

  • Self-Signed-Lab bricht intern ab: Für das Lab kann `verify_peer_off=true` und `rejectUnauthorized=false` im Office-Request-Pfad nötig sein. Produktiv ist das nicht akzeptabel.

  • Dateien tauchen nach CLI/WebDAV-Upload nicht auf: Führe `sudo -u grofiles ./occ files:scan <user>` aus.

  • Benutzer kann sich nicht anmelden: Prüfe grommunio-Rechte, DAV-Zugang und den `user_external`-Backend-Eintrag.

  • Web zeigt Files nicht an: Prüfe `/etc/grommunio-web/config-files.php` und starte Web-/PHP-/nginx-Dienste neu.

grommunio 2026 Schritt für Schritt

Die Plattform wächst Schritt für Schritt. Lies die Reihe in dieser Reihenfolge, wenn du eine vollständige Collaboration-Umgebung aufbauen willst.

  1. grommunio 2026 installieren
  2. grommunio-antispam mit Rspamd einrichten
  3. grommunio-auth mit Keycloak und MFA integrieren
  4. grommunio Meet einrichten und testen
  5. grommunio Chat einrichten
  6. grommunio Files und Office einrichten (du bist hier)

Geprüfte Grundlage

  • grommunio 2026.06.1 auf openSUSE-Leap-16.0-Appliance-Basis.

  • grommunio Files 32.0.12, laut Paketbeschreibung auf Nextcloud-Basis.

  • grommunio Office 9.4.0 mit OnlyOffice-App 9.14.2 in Files.

  • DOCX, XLSX und PPTX wurden im Browser geöffnet.

  • DOCX wurde editiert, gespeichert, per WebDAV heruntergeladen und der gespeicherte Marker in `word/document.xml` gefunden.

  • Alice teilte die DOCX-Datei an Bob; Bob sah die Datei in Files und per WebDAV.

  • Office-Healthcheck lieferte `true`; `systemctl --failed` meldete 0 failed units.

grommunio Files und Office sauber einführen

ForgeOne plant, lizenziert und betreibt grommunio als souveräne Collaboration-Plattform mit Mail, Kalender, Kontakten, Antispam, SSO, Meet, Chat, Files, Office, Monitoring, Backup und Support. Wenn du Files und Online-Office produktiv integrieren willst, prüfen wir Speicher, Rechte, TLS, SSO, Backup und Betriebsmodell gemeinsam.