Nextcloud Office mit docker compose

Folgen Sie dieser Anleitung und binden Sie Nextcloud Office (aka Collabora Office) in Ihren Nextcloud Server ein, so dass Office Dokumente online (und mobil) bearbeitet werden können. Optional beschreiben wir auch, wie Sie die Microsoft-Schriftarten installieren und in Nextcloud Office einbinden.

  1. Systemvorbereitungen und Dockerinstallation
  2. Microsoft Schriftarten (optional)
  3. Aktualisierungen

Wir beginnen zuerst mit der Systemvorbereitung:

sudo -s
apt install apt-transport-https ca-certificates curl software-properties-common -y
apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)

apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Aktualisieren Sie das System und installieren docker-ce und -compose:

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Legen Sie sich nun einen Ordner für Collabora Office an

mkdir -p /var/opt/docker/collabora

und navigieren in diesen Ordner

cd /var/opt/docker/collabora

legen Sie die docker-compose.yaml Datei an

nano docker-compose.yaml

und fügen den gesamten Inhalt ein. Passen Sie die rot markierten Werte an Ihr System an:

---
services:
  collabora:
    container_name: NEXTCLOUDOFFICE
    image: collabora/code:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:9980:9980"
    volumes:
      - /usr/share/fonts/truetype/:/opt/collaboraoffice/share/fonts/truetype/local/:ro
    environment:
      - "aliasgroup1=https://ihre.cloud.de:443,https://ihre\\.cloud\\.de"
      - "username=Ein-Administrator-Account"
      - "password=AdMin-P@ssword"
      - "lang=de_DE"
      - "dictionaries=de_DE en_GB en_US"
      - "extra_params=--o:home_mode.enable=true"
    extra_hosts:
      - "ihre.cloud.de:172.17.0.1" # IP has to be checked for compose stack
    security_opt:
      - no-new-privileges:true
    user: 1001:1001
    cap_drop:
      - ALL
    cap_add:
      - SYS_CHROOT
      - SYS_ADMIN
    deploy:
      resources:
        limits:
          memory: 4G

Passen Sie den vHostIhrer Nextcloud an – fügen Sie den roten Block hinzu:

nano /etc/nginx/conf.d/nextcloud.conf
...
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }

### Start Collabora Online ###
 # static files
 location ^~ /browser {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }
 # WOPI discovery URL
 location ^~ /hosting/discovery {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }
 # Capabilities
 location ^~ /hosting/capabilities {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }
 # main websocket
 location ~ ^/cool/(.*)/ws$ {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header Host $http_host;
   proxy_read_timeout 36000s;
 }
 # download, presentation and image upload
 location ~ ^/(c|l)ool {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }
 # Admin Console websocket
 location ^~ /cool/adminws {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header Host $http_host;
   proxy_read_timeout 36000s;
 }
### End Collabora Online ###

location ~ \.php(?:$|/) {
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;
...
}

Quelle: Collabora

Starten Sie den Webserver nginx neu

service nginx restart

Microsoft Schriftarten (optional)

Installieren bei Bedarf die Microsoft Schriftarten.

apt-add-repository contrib non-free -y
add-apt-repository multiverse -y

Installieren Sie die Schriftarten:

apt install ttf-mscorefonts-installer -y

Starten Sie nun den Collabora-Dockercontainer, um anschließend die Nextcloud damit zu erweitern.

cd /var/opt/docker/collabora
docker compose up -d

Melden Sie sich in der Nextcloud an und aktivieren als Administrator die neue ‚Nextcloud Office‘ App:

Wechseln Sie in die Collabora Einstellungen und tragen dort Ihre Domain (https://ihre.cloud.de) ein:

Ergänzen Sie die ‚Allow list for WOPI requests‚, in unserer Anleitung 172.17.0.1/16 ( « das Docker-Subnetz):

127.0.0.1/8,::1/128,172.17.0.1/16,fe80::...

Ab sofort können Sie Nextcloud mit einer integrierten Officelösung verwenden!

Aktualisierungen

Haben Sie Änderungen an der Dockerkonfiguration vorgenommen oder möchten Sie ein Update ausführen, so können Sie wie folgt vorgehen:

cd /var/opt/docker/collabora/
echo " » Docker wird gestoppt"
docker compose down
echo " » Docker wird bereinigt"
docker image rm $(docker image ls | grep collabora/code | awk '{ print $2 }')
echo " » Docker wird neu gestartet"
docker compose up -d --force-recreate

Die Installation von Nextcloud Office wurde erfolgreich abgeschlossen und so wünsche ich Ihnen viel Spaß mit Ihren Daten in Ihrer privaten Cloud. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert) würden sich meine Frau, meine Zwillinge und ich sehr freuen!

Unterstützung mit WERO