🐧 Linux

OnlyOffice Document Server im Homelab: Einrichten mit Docker & Nextcloud

OnlyOffice Document Server im Homelab: Einrichten mit Docker & Nextcloud
⚠️ Hinweis: Alle Guides auf smoth.me dienen ausschließlich zu Informations- und Lernzwecken. Die Umsetzung erfolgt auf eigene Gefahr. Wir übernehmen keine Haftung für Schäden, Datenverluste oder Systemausfälle, die durch die Anwendung dieser Anleitungen entstehen können. → Vollständiger Haftungsausschluss

Moin, liebe smoth.me-Community!

Als erfahrener Admin und passionierter Homelab-Enthusiast habe ich in den letzten Jahren so einige Office-Suiten und Kollaborationstools ausprobiert. Wenn es darum geht, Dokumente im Browser zu bearbeiten – ähnlich wie bei Google Docs oder Microsoft 365, aber eben selbstgehostet und unter eigener Kontrolle – kommt man an OnlyOffice Document Server kaum vorbei. Es ist ein echtes Kraftpaket, das ich persönlich seit Jahren erfolgreich in meinem Setup nutze, meistens in Kombination mit Nextcloud.

Kürzlich gab es Schlagzeilen rund um das sogenannte „Euro-Office“-Projekt, bei dem Ionos und Nextcloud eine Abspaltung (einen Fork) von OnlyOffice vornehmen wollten und OnlyOffice daraufhin Lizenzverletzungen vorwarf. Diese Diskussion ist super spannend, denn sie zeigt, wie wichtig die Souveränität über unsere Daten und Software ist und wie komplex das Thema Lizenzen im Open-Source-Bereich sein kann. Für uns Homelaber und Admins ist das ein klares Signal: Die Unabhängigkeit und die Möglichkeit, solche Tools selbst zu hosten, sind wertvoller denn je. Egal, wie sich die „Euro-Office“-Situation entwickelt, der OnlyOffice Document Server bleibt eine hervorragende Basis für deine eigene Office-Umgebung.

In diesem Guide zeige ich dir Schritt für Schritt, wie du den OnlyOffice Document Server bei dir zu Hause einrichtest. Wir nutzen dafür Docker Compose, weil es einfach, reproduzierbar und sauber ist. Anschließend integrieren wir das Ganze in Nextcloud, was für die meisten von uns der primäre Anwendungsfall sein dürfte. Schnapp dir einen Kaffee, starten wir durch!

Voraussetzungen für dein OnlyOffice Setup

Bevor wir loslegen, stellen wir sicher, dass die Basis stimmt. Das sind die Dinge, die du in deinem Homelab bereits am Laufen haben solltest oder schnell vorbereiten kannst:

  • Ein Linux-Server: Ich gehe davon aus, dass du einen Server hast, auf dem Docker läuft. Das kann eine VM oder ein LXC auf Proxmox sein (was ich persönlich bevorzuge), ein Raspberry Pi 4/5 mit ausreichend RAM (mindestens 4GB, besser 8GB für OnlyOffice), oder ein dedizierter Mini-PC.
  • Docker und Docker Compose: Diese müssen auf deinem Server installiert sein. Wenn nicht, ist das schnell nachgeholt.
  • Ausreichend Ressourcen: OnlyOffice ist nicht gerade sparsam. Plane mindestens 2 CPU-Kerne und 4 GB RAM nur für den OnlyOffice-Container ein, wenn du mehr als ein paar gleichzeitige Nutzer hast. Für den Anfang und eine Person reichen vielleicht auch 2GB RAM, aber erwarte keine Wunder.
  • Eine Domain/Subdomain: Du solltest eine öffentlich erreichbare Domain oder Subdomain (z.B. office.deinedomain.de) haben, die auf die IP-Adresse deines Servers zeigt. Ohne das wird die SSL-Verschlüsselung und die Integration mit Nextcloud schwierig.
  • Ein Reverse Proxy: Ich nutze und empfehle hier Nginx Proxy Manager (NPM), da er super einfach zu bedienen ist und Let's Encrypt-Zertifikate automatisch verwaltet. Alternativ geht natürlich auch Traefik, Caddy oder ein manueller Nginx.
  • Optional: Eine Nextcloud-Instanz: Wenn du OnlyOffice in Nextcloud integrieren möchtest (was ich dir dringend empfehle), sollte deine Nextcloud-Instanz bereits laufen und erreichbar sein.

Mein Tipp: Wenn du auf Proxmox unterwegs bist, erstelle für OnlyOffice eine eigene kleine Debian-VM. Das hält die Dinge sauber getrennt und du kannst Ressourcen flexibel zuweisen.

Schritt-für-Schritt: OnlyOffice Document Server mit Docker Compose einrichten

1. Docker und Docker Compose installieren (falls noch nicht geschehen)

Falls du Docker und Docker Compose noch nicht auf deinem Server hast, hier die Schnellinstallation. Für Debian/Ubuntu-basierte Systeme sieht das so aus:

# Docker installieren
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Aktuellen Benutzer zur Docker-Gruppe hinzufügen (damit sudo nicht jedes Mal nötig ist)
sudo usermod -aG docker $USER

# Änderungen übernehmen (oder neu anmelden)
newgrp docker

# Docker Version prüfen
docker --version
docker compose version

Nachdem du deinen Benutzer zur Docker-Gruppe hinzugefügt hast, musst du dich einmal ab- und wieder anmelden oder newgrp docker ausführen, damit die Änderungen wirksam werden.

2. Verzeichnisstruktur anlegen

Wir erstellen ein eigenes Verzeichnis für OnlyOffice und wechseln dorthin. Hier legen wir später unsere docker-compose.yml und die persistenten Daten ab.

mkdir ~/onlyoffice-ds
cd ~/onlyoffice-ds

3. Docker Compose Konfiguration erstellen

Jetzt kommt der Kern der Sache: Die docker-compose.yml. OnlyOffice Document Server ist ein einzelner Container, der aber ein paar wichtige Konfigurationen benötigt. Eines der wichtigsten Dinge ist das JWT Secret – dazu gleich mehr.

Erstelle eine Datei namens docker-compose.yml in deinem ~/onlyoffice-ds Verzeichnis:

version: '3.8'

services:
  onlyoffice-document-server:
    container_name: onlyoffice-document-server
    image: onlyoffice/documentserver:latest
    restart: always
    ports:
      - "8000:80" # Wir exponieren Port 80 des Containers auf Port 8000 des Hosts
      # - "8443:443" # Wenn du SSL direkt im Container terminieren willst, was ich nicht empfehle
    environment:
      # WICHTIG: Ersetze 'DEIN_SUPER_GEHEIMES_JWT_SECRET' durch ein starkes, einzigartiges Passwort!
      # Dies wird für die Kommunikation mit Nextcloud benötigt.
      - JWT_SECRET=DEIN_SUPER_GEHEIMES_JWT_SECRET
      - JWT_ENABLED=true # Standardmäßig ist es aktiviert, aber explizit ist besser
      - JWT_HEADER=Authorization
      - JWT_IN_BODY=true
      # - DB_TYPE=postgres # Standard ist PostgreSQL, kann hier überschrieben werden
      # - DB_HOST=localhost
      # - DB_PORT=5432
      # - DB_NAME=onlyoffice
      # - DB_USER=onlyoffice
      # - DB_PWD=onlyoffice
      # - AMQP_URI=amqp://guest:guest@localhost:5672 # Für RabbitMQ, falls benötigt
    volumes:
      - ./data/onlyoffice/logs:/var/log/onlyoffice # Logs
      - ./data/onlyoffice/data:/var/www/onlyoffice/Data # Dokumentendaten
      - ./data/onlyoffice/lib:/var/lib/onlyoffice # Lib-Dateien
      - ./data/onlyoffice/db:/var/lib/postgresql # PostgreSQL Datenbank
    # Optional: Ressourcenbegrenzung, wenn du mehrere Dienste auf einem Host hast
    # deploy:
    #   resources:
    #     limits:
    #       cpus: '2.0'
    #       memory: 4G
    #     reservations:
    #       cpus: '1.0'
    #       memory: 2G

Wichtig zu wissen: Das JWT_SECRET!

Dieses Secret ist absolut entscheidend für die Sicherheit und Funktion deines OnlyOffice-Setups. Es dient dazu, die Kommunikation zwischen deinem Nextcloud (oder jeder anderen Integrations-App) und dem OnlyOffice Document Server abzusichern. Ohne ein korrektes und übereinstimmendes Secret können die Dienste nicht miteinander kommunizieren oder schlimmer noch, es könnten unautorisierte Zugriffe stattfinden.

  • Ersetze DEIN_SUPER_GEHEIMES_JWT_SECRET unbedingt durch ein langes, komplexes, zufällig generiertes Passwort.
  • Speichere dieses Secret sicher! Du wirst es später bei der Konfiguration in Nextcloud benötigen.

4. OnlyOffice starten

Nachdem die docker-compose.yml erstellt ist, starte den Container:

docker compose up -d

Der Parameter -d sorgt dafür, dass der Container im Hintergrund läuft. Du kannst den Status mit docker compose ps überprüfen. Es kann ein paar Minuten dauern, bis OnlyOffice vollständig gestartet ist, besonders beim ersten Mal, da das Image heruntergeladen und die Datenbank initialisiert werden muss.

Wenn alles geklappt hat, solltest du nun auf http://DEINE_SERVER_IP:8000 eine OnlyOffice-Willkommensseite sehen. Das ist ein gutes Zeichen, aber noch nicht das Ende der Fahnenstange, denn wir wollen SSL und eine schöne Domain.

Reverse Proxy Konfiguration (Nginx Proxy Manager)

Da OnlyOffice standardmäßig über HTTP auf Port 80 im Container läuft und wir HTTPS über eine Domain nutzen wollen, brauchen wir einen Reverse Proxy. Ich zeige dir das Vorgehen mit Nginx Proxy Manager (NPM), da er super nutzerfreundlich ist.

1. Neuen Proxy Host in Nginx Proxy Manager anlegen

Melde dich bei deinem Nginx Proxy Manager an und gehe zu "Hosts" -> "Proxy Hosts" -> "Add Proxy Host".

  • Details:
    • Domain Names: Gib hier deine gewünschte Subdomain ein (z.B. office.deinedomain.de).
    • Scheme: http (da OnlyOffice im Container auf Port 80 läuft und NPM die SSL-Terminierung übernimmt)
    • Forward Hostname / IP: Die interne IP-Adresse deines OnlyOffice-Servers (z.B. 192.168.1.100).
    • Forward Port: 8000 (der Port, den wir in unserer docker-compose.yml für OnlyOffice exponiert haben).
  • SSL:
    • Aktiviere "Force SSL".
    • Wähle "Request a new SSL Certificate" (Let's Encrypt).
    • Aktiviere "I Agree to the Let's Encrypt Terms of Service".
  • Advanced: Dieser Schritt ist entscheidend für OnlyOffice! Ohne die richtigen Header funktioniert die WebSockets-Kommunikation und andere wichtige Funktionen nicht. Füge den folgenden Nginx-Code in das "Custom Nginx Configuration"-Feld ein:
# ONLYOFFICE specific headers
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;

Speichere den Proxy Host. NPM wird versuchen, das Let's Encrypt-Zertifikat anzufordern und den Host zu aktivieren.

Mein Tipp: Wenn du Probleme mit dem Zertifikat hast, stelle sicher, dass deine Domain korrekt auf die öffentliche IP deines Routers zeigt und Port 80/443 von außen zu deinem NPM weitergeleitet ist.

OnlyOffice in Nextcloud integrieren

Jetzt kommt der spaßige Teil: OnlyOffice in Nextcloud nutzbar machen.

1. OnlyOffice-App in Nextcloud installieren

  1. Melde dich als Administrator bei deiner Nextcloud-Instanz an.
  2. Klicke oben rechts auf dein Profilbild und gehe zu "Apps".
  3. Suche im Bereich "Office & Text" (oder über die Suchfunktion) nach "ONLYOFFICE" und klicke auf "Installieren".

2. OnlyOffice-App konfigurieren

  1. Nach der Installation gehst du in den Nextcloud-Einstellungen (wieder über dein Profilbild) zu "Administrationseinstellungen" -> "ONLYOFFICE".
  2. ONLYOFFICE Document Server Adresse: Gib hier die URL deines OnlyOffice Document Servers ein, die du über den Reverse Proxy eingerichtet hast (z.B. https://office.deinedomain.de/). Achte darauf, dass der Schrägstrich am Ende dabei ist!
  3. Secret key (JWT): Hier gibst du das exakt gleiche JWT_SECRET ein, das du in deiner docker-compose.yml für den OnlyOffice-Container hinterlegt hast. Das ist der wichtigste Schritt für die Authentifizierung!
  4. Scrolle nach unten und klicke auf "Speichern". Nextcloud sollte nun versuchen, eine Verbindung zum OnlyOffice Document Server herzustellen. Wenn alles korrekt ist, siehst du eine Erfolgsmeldung.

3. Testen der Integration

Gehe in Nextcloud zu deinen Dateien und erstelle ein neues Dokument (z.B. ein Textdokument, eine Tabelle oder eine Präsentation). Wenn alles richtig konfiguriert ist, sollte sich der OnlyOffice-Editor direkt im Browser öffnen und du kannst mit der Bearbeitung beginnen.

Häufige Fehler und Lösungen

In meiner Erfahrung stolpert man bei der Einrichtung von OnlyOffice oft über die gleichen Dinge. Hier sind die Top 3:

1. JWT Secret Mismatch oder Fehlen

Problem: Nextcloud kann keine Verbindung zum OnlyOffice Document Server herstellen, oder Dokumente lassen sich nicht öffnen, mit Fehlern wie "Fehler beim Herunterladen der Datei" oder "Server-Antwortfehler". Oft liegt es an einer fehlenden oder falschen JWT-Konfiguration.

Lösung:

  • Prüfe die docker-compose.yml: Stelle sicher, dass die Umgebungsvariable JWT_SECRET im OnlyOffice-Container gesetzt ist und ein starkes Secret enthält.
  • Prüfe die Nextcloud-Einstellungen: Stelle sicher, dass du in den ONLYOFFICE-Einstellungen in Nextcloud exakt dasselbe Secret eingegeben hast. Ein Tippfehler, ein fehlendes Zeichen oder ein zusätzliches Leerzeichen reichen schon aus.
  • Überprüfe JWT_ENABLED: Es sollte auf true gesetzt sein (ist es standardmäßig, aber besser prüfen).
  • Container-Logs prüfen: Schau dir die Logs des OnlyOffice-Containers an (docker compose logs onlyoffice-document-server). Dort können Hinweise auf Authentifizierungsfehler auftauchen.

2. Reverse Proxy Headers fehlen oder sind falsch

Problem: Die OnlyOffice-Oberfläche lädt, aber die Editoren funktionieren nicht richtig, die Dokumente laden ewig oder es gibt Fehler bei der Zusammenarbeit (WebSockets-Probleme). Oder es erscheint nur ein grauer Bildschirm.

Lösung:

  • Advanced Nginx Configuration in NPM: Gehe zurück zu deinem Proxy Host in Nginx Proxy Manager und überprüfe den "Advanced"-Tab. Die dort eingefügten Nginx-Header sind essenziell für OnlyOffice. Vergleiche sie genau mit dem Beispiel im Guide. Insbesondere X-Forwarded-Proto, Upgrade und Connection sind kritisch.
  • SSL-Probleme: Stelle sicher, dass dein SSL-Zertifikat gültig ist und die Domain korrekt auf deinen Server zeigt. Browser-Fehler wie "NET::ERR_CERT_COMMON_NAME_INVALID" deuten auf SSL-Probleme hin.
  • Port-Weiterleitung: Überprüfe, ob Port 80 und 443 von deinem Router zu deinem Reverse Proxy weitergeleitet sind, damit Let's Encrypt das Zertifikat ausstellen kann und der Zugriff von außen funktioniert.

3. Ressourcenmangel

Problem: OnlyOffice ist extrem langsam, hängt sich auf, oder Dokumente laden nicht. Besonders bei mehreren Benutzern oder großen Dokumenten.

Lösung:

  • RAM ist King: OnlyOffice liebt RAM. Wenn du nur 2GB für den Container hast und mehrere Leute gleichzeitig arbeiten, wird es eng. Versuche, dem Container mehr RAM zuzuweisen (mindestens 4GB, besser 6-8GB für produktive Umgebungen). Wenn du auf Proxmox bist, erhöhe den RAM der VM.
  • CPU-Kerne: Auch CPU-Kerne sind wichtig, besonders beim Rendern komplexer Dokumente. Mindestens 2 Kerne sind empfehlenswert.
  • Speichergeschwindigkeit: Langsamer Speicher (z.B. SD-Karten auf Raspberry Pi ohne ausreichend schnelles Swap) kann auch ein Flaschenhals sein. SSDs sind hier immer die beste Wahl.
  • Container-Logs prüfen: Auch hier können die Logs Hinweise geben, wenn der Container aufgrund von Ressourcenmangel abstürzt oder Probleme hat.

Fazit und nächste Schritte

Glückwunsch! Du hast jetzt einen voll funktionsfähigen OnlyOffice Document Server in deinem Homelab laufen und ihn erfolgreich in Nextcloud integriert. Das ist ein riesiger Schritt in Richtung digitaler Souveränität und ermöglicht dir, deine Dokumente sicher und privat zu bearbeiten.

Die Diskussion um das „Euro-Office“-Projekt zeigt uns einmal mehr, wie wichtig es ist, die Kontrolle über unsere Infrastruktur und Daten zu behalten. Egal, welche Richtung die Lizenzstreitigkeiten nehmen, mit OnlyOffice hast du eine robuste und leistungsstarke Lösung in der Hand, die sich bewährt hat und von einer aktiven Community weiterentwickelt wird.

Was sind die nächsten Schritte?

  • Backup-Strategie: Denk daran, regelmäßige Backups deiner OnlyOffice-Daten zu erstellen (insbesondere des data und db Volumes).
  • Anpassungen: Du kannst OnlyOffice weiter anpassen, z.B. das Branding ändern oder weitere Plugins installieren.
  • Weitere Integrationen: OnlyOffice lässt sich nicht nur mit Nextcloud, sondern auch mit anderen Plattformen wie Seafile, Owncloud oder Confluence integrieren.
  • Ressourcen-Monitoring: Behalte die Ressourcen (RAM, CPU) deines OnlyOffice-Containers im Auge, um Engpässe frühzeitig zu erkennen.

Ich hoffe, dieser Guide hilft dir dabei, dein Homelab noch leistungsfähiger zu machen. Wenn du Fragen hast oder auf Probleme stößt, melde dich in der smoth.me-Community! Wir helfen uns gegenseitig.

Weitere Guides aus "Linux"

Raspberry Pi: Optimaler Dauerbetrieb trotz steigender Kosten
Dieser Guide zeigt, wie du deinen Raspberry Pi für den effizienten und langlebigen Betrieb von Diens…
Tails 7.6 im Praxistest: Anonym surfen mit neuem Passwort-Manager
Ein Deep Dive in die Neuerungen von Tails 7.6. Ich zeige dir, wie du die anonyme Linux-Distribution …
XPipe 22.0: Dein Passwortmanager als SSH-Schlüsselbund im Homelab
Dieser Praxis-Guide zeigt dir, wie du XPipe 22.0 einrichtest, deinen Passwortmanager integrierst und…
SystemRescue 13.00: Dein Notfall-Toolkit für Daten und Systeme
Dieser Praxis-Guide zeigt dir, wie du SystemRescue 13.00 einrichtest und effektiv für Datenrettung, …