Nextcloud mit Euro-Office

Seit Anfang Juni gibt es mit Euro-Office eine neue Office-Variante für Ihre Nextcloud. Das Projekt wurde von einem Konsortium europäischer Unternehmen (darunter Nextcloud und Ionos) ins Leben gerufen und zielt darauf ab, eine (europäische) Alternative zu Microsoft Office anzubieten. Neben Nextcloud Office (Collabora Office) und OnlyOffice gibt es somit eine dritte Online-Office-Variante. Um das neue Eurooffice (ehem. OnlyOffice) in Nextcloud zu verwenden gehen Sie einfach wie nachfolgend beschrieben vor.

  1. Docker Installation
  2. Optional: Microsoft Schriftarten
  3. Eurooffice (Skript)
  4. Anpassung Webserver (TLS Zertifikate)

Stellen Sie zuerst die Voraussetzungen sicher.

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:

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

Aktivieren Sie die Eurooffice-App:

sudo -u www-data php /var/www/nextcloud/occ app:enable eurooffice

Ergänzen weiterer Schriftarten (optional):

Optional können Schriftarten, bspw. die Microsoft-Schriftarten installiert und eingebunden werden:

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

Installieren Sie die Microsoft-Schriftarten:

apt install ttf-mscorefonts-installer -y

Erstellen Sie nun das Arbeitsverzeichnis für Eurooffice und wechseln dort hinein:

mkdir -p /var/opt/docker/eurooffice
cd /var/opt/docker/eurooffice

Euro-Office-Skript

Erstellen Sie ein Skript, welches zur Einrichtung und Aktualisierung verwendet wird.

nano eurooffice.sh

Ersetzen Sie „IhrGeheimesSecret!“ mit dem Secret Ihrer Wahl. Ersetzen Sie zudem die für Eurooffice verwendete Domain, im Beispiel „euo.ihredomain.de“.

#!/bin/bash
SECRET="IhrGeheimesSecret!"
DOMAIN="https://euo.ihredomain.de"
clear
echo " » Eurooffice - Docker stoppen und bereinigen..."
echo ""
docker stop EuroOffice
docker rm EuroOffice
docker image rm $(docker image ls | grep euro-office | awk '{ print $2 }')
docker system prune -fa
echo ""
echo " » Docker aktualisieren und starten ..."
echo ""
docker run -i -t -d \
--name=EuroOffice \
-p 127.0.0.1:8888:80 \
--restart=always \
-e JWT_SECRET=$SECRET \
-v /usr/share/fonts/truetype:/usr/share/fonts/custom \
ghcr.io/euro-office/documentserver:latest
echo ""
echo " » Eurooffice in Nextcloud aktivieren..."
echo ""
sudo -u www-data php /var/www/nextcloud/occ config:app:set onlyoffice DocumentServerUrl --value="$DOMAIN"
sudo -u www-data php /var/www/nextcloud/occ config:app:set eurooffice jwt_secret --value="$SECRET"
echo ""
# (c), c-rieger.de

Markieren Sie das Skript als ausführbar:

chmod +x eurooffice.sh

Haben Sie keine Microsoftschriftarten installiert, so entfernen Sie im Skript diese eine Zeile:

-v /usr/share/fonts/truetype:/usr/share/fonts/custom \

Führen Sie das Skript nun aus.

./eurooffice.sh

Anpassungen am Webserver (nginx und TLS-Zertifikate)

Erweitern Sie nun den Webserver nginx um die neue Domain sowie um die benötigten Zertifikate. Bearbeiten Sie dafür zuerst die bestehende (http.conf) und die neu anzulegende (euo.conf) vHost-Dateien:

nano /etc/nginx/conf.d/http.conf

Passen Sie die Domänen an Ihre verwendeten Namen an:

upstream php-handler {
  server unix:/run/php/php8.5-fpm.sock;
  }
map $arg_v $asset_immutable {
    "" "";
    default "immutable";
}
  server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name ihrecloud.ihredomain.de euo.ihredomain.de;
    root /var/www;
    location ^~ /.well-known/acme-challenge {
      default_type text/plain;
      root /var/www/letsencrypt;
      }
    location / {
      return 301 https://$host$request_uri;
      }
   }

Erstellen Sie nun die Eurooffice-vHost-Datei und passen erneut die Domäne an:

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  http2 on;
  server_name euo.ihredomain.de;
  ssl_certificate /etc/letsencrypt/rsa-certs/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/rsa-certs/privkey.pem;
  ssl_certificate /etc/letsencrypt/ecc-certs/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/ecc-certs/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/ecc-certs/chain.pem;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
  ssl_session_timeout 1d;
  ssl_session_cache shared:SSL:50m;
  ssl_session_tickets off;
  ssl_protocols TLSv1.3 TLSv1.2;
  ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384';
  # ssl_ecdh_curve X448:secp521r1:secp384r1;
  ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;
  ssl_prefer_server_ciphers on;
  client_max_body_size 1G;
  client_body_timeout 86400s;
  client_body_buffer_size 512k;
  fastcgi_buffers 64 4K;
  gzip on;
  gzip_vary on;
  gzip_comp_level 4;
  gzip_min_length 256;
  gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
  gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
  add_header Strict-Transport-Security            "max-age=15768000; includeSubDomains; preload;" always;
  add_header Permissions-Policy                   "interest-cohort=()";
  add_header Referrer-Policy                      "no-referrer"   always;
  add_header X-Content-Type-Options               "nosniff"       always;
  add_header X-Download-Options                   "noopen"        always;
  #add_header X-Frame-Options                      "SAMEORIGIN"    always;
  add_header X-Permitted-Cross-Domain-Policies    "none"          always;
  add_header X-Robots-Tag                         "noindex, nofollow" always;
  add_header X-XSS-Protection                     "1; mode=block" always;
  location / {
	  proxy_pass http://127.0.0.1:8888;
     	  proxy_redirect off;
	  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 $server_name;
	  proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Starten Sie den Webserver neu

systemctl restart nginx.service 

und erweitern die Zertifikate:

su - acmeuser

Passen Sie die Domänen an und führen beide Befehle aus:

acme.sh --issue -d ihrecloud.ihredomain.de -d euo.ihredomain.de --server letsencrypt --keylength 4096 -w /var/www/letsencrypt --key-file /etc/letsencrypt/rsa-certs/privkey.pem --ca-file /etc/letsencrypt/rsa-certs/chain.pem --cert-file /etc/letsencrypt/rsa-certs/cert.pem --fullchain-file /etc/letsencrypt/rsa-certs/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
acme.sh --issue -d ihrecloud.ihredomain.de -d euo.ihredomain.de --server letsencrypt --keylength ec-384 -w /var/www/letsencrypt --key-file /etc/letsencrypt/ecc-certs/privkey.pem --ca-file /etc/letsencrypt/ecc-certs/chain.pem --cert-file /etc/letsencrypt/ecc-certs/cert.pem --fullchain-file /etc/letsencrypt/ecc-certs/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
exit

Ab sofort können Sie Officedokumente in Ihrer Nesxtcloud erstellen, öffnen und bearbeiten. Sowohl lokal in LibreOffice, als auch online im Browser

bzw. an Ihren mobilen Geräten.


Viel Spaß mit Ihrem Eurooffice in Ihrer Nextcloud. Über Ihre Unterstützung würden wir uns sehr freuen – vorab vielen und herzlichen Dank dafür.

Unterstützung mit WERO