Stand 20.11.2024 - wie folgt gelöst und funktionsfähig
Umgebung
Ein Hetzner Mietserver mit Debian und ProxMox VE, alle Anfragen TCP und UDP werden auf auf die OPNsense VM umgeroutet.
Dieses leitet die Ports 80, 443 und 8443 (Dav) auf den Nginx reverseProxy um.
Dieser nimmt Anfragen auf der Domain orange.abcde.com an (80 wird dabei auf 443 umgeleitet) und leitet sie weiter an den webAppXyz01.xyz.ucs weiter.
Dort nimmt dann die Nextcloud an.
Beteiligte Systeme
- Hetzner Mietserver mit Debian, ProxMox VE, fester IPv4 und IPv6
- OPNsense VM :: intern 10.200.0.86/16
- pdcXyz.xyz.ucs VM :: primärer UCS Domänen Controller :: 10.200.0.21/16
- webAppXyz01.xyz.ucs VM :: UCS Replica Web Applikationsserver :: 10.200.0.17/16
- Nextcloud (UCS Docker Container)
- OnlyOffice Doc Server (UCS Docker Container)
- reverseProxyXyz.xyz.ucs Debian VM :: Nginx reverse Proxy :: 10.200.0.11/16
Ansprache von Aussen
Lösung
In der UMC
- Installiere die OnlyOffice App in der UCS Domäne auf dem webAppXyz01.xyz.ucs.
Im DNS auf dem PDC
- Lege auf dem PDC im DNS eine neue Forward Lookup Zone “orange.abcde.com” an und verweise diese auf die IPv4 und ggf. die IPv6 des reverseProxy’s > 10.200.0.11
Auf dem reverse Proxy
- Lege die Nginx Konfiguration $ vi /etc/nginx/sites-available/orange.abcde.com mit dem folgenden Inhalt an:
server {
if ($host = orange.abcde.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name orange.abcde.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name orange.abcde.com;
client_max_body_size 999M;
# Server SSL
ssl_certificate /etc/letsencrypt/live/orange.abcde.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/orange.abcde.com/privkey.pem; # managed by Certbot
# Einstellungen für Mutual SSL (Auth mit Client Zertifikat)
# ---
# Globale Einstellungen
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
fastcgi_hide_header X-Powered-By;
proxy_read_timeout 180;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_pass_header Authorization;
proxy_buffering off;
proxy_set_header Connection "Keep-Alive";
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-Proto $scheme;
proxy_set_header Accept-Encoding "";
more_set_input_headers 'Authorization: $http_authorization';
more_set_headers -s 401 'WWW-Authenticate: Basic realm="orange.abcde.com"';
location / {
proxy_pass https://webAppXyz01.xyz.ucs/;
proxy_redirect https://webAppXyz01.xyz.ucs/ https://orange.abcde.com/;
}
rewrite ^/$ /nextcloud/ last;
location = /.well-known/carddav {
return 301 $scheme://$host/nextcloud/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/nextcloud/remote.php/dav;
}
location /.well-known/acme-challenge {
}
location = /.well-known/webfinger {
return 301 $scheme://$host/nextcloud/index.php/.well-known/webfinger;
}
location = /.well-known/nodeinfo {
return 301 $scheme://$host/nextcloud/index.php/.well-known/nodeinfo;
}
# redirect server error pages to the static page
error_page 403 /error403.html;
location = /error403.html {
root /var/www/error;
}
}
Die Konfiguration muss verknüpft sein…
$ ln -s /etc/nginx/sites-available/orange.abcde.com /etc/nginx/sites-enabled/
$ service nginx restart
In der Nextcloud
- Navigiere in der Nextcloud als Administrator in die App Übersicht und aktiviere dort die App ONLYOFFICE
- Navigiere in der Nextcloud als Administrator in die Verwaltungs-Einstellungen, Register ONLYOFFICE und setze dort die folgenden Parameter:
- Die Adresse von ONLYOFFICE Docs :: https://orange.abcde.com/onlyoffice-documentserver/
- Geheimer Schlüssel :: (z.B.) Uevd6TFAZA37WxLUGJg6eBds83Ga8wG4
- Authorization-Header :: leer lassen
- Die Adresse von ONLYOFFICE Docs für interne Anforderungen vom Server :: https://orange.abcde.com/onlyoffice-documentserver/
- Serveradresse für interne Anforderungen vom ONLYOFFICE Docs :: https://orange.abcde.com/nextcloud/
- Speichere die Einstellungen > Es kommt zu einem Fehler
Auf dem Web Applikationsserver
Nun muss im Docker Container des OnlyOffice Document Servers die Prüfung des Sicherheitstoken auf true gesetzt und der Geheime Schlüssel hinterlegt werden.
Diese Einstellung wird jedoch mit jedem Neustart des Containers, also auch mit jedem Reboot des Servers selbst zurück gesetzt.
Da wir keine Möglichkeit gefunden haben dies zu umgehen, haben wir uns mit einem Script beholfen und dieses im crontab hinterlegt.
$ mkdir /root/nc_oo
$ touch nc_oo/change_secret_and_token.sh
$ chmod 700 nc_oo/change_secret_and_token.sh
$ vi nc_oo/change_secret_and_token.sh
#!/bin/bash
cd /root/nc_oo/
CONTAINER_NAME=$(docker ps -a | grep -i 'onlyoffice' | awk '{print $1}')
DATEIPFADE=$(find /var/lib/docker/overlay2 -type f -name 'local.json')
DATEIPFAD_ANZAHL=$(find /var/lib/docker/overlay2 -type f -name 'local.json' | wc -w)
for ((i=1;i<=$DATEIPFAD_ANZAHL;i++))
do
DATEI=$(echo $DATEIPFADE | cut -d ' ' -f$i)
cp $DATEI /root/nc_oo
sed -i "s/\"string\": \".*\"/\"string\": \"Uevd6TFAZA37WxLUGJg6eBds83Ga8wG4\"/g" local.json
sed -i "s/\"inbox\": false/\"inbox\": true/g" local.json
sed -i "s/\"outbox\": false/\"outbox\": true/g" local.json
sed -i "s/\"browser\": false/\"browser\": true/g" local.json
cp -f local.json $DATEI
rm local.json
done
sleep 5
# Starten Sie den Dienst im Container neu
docker exec $CONTAINER_NAME supervisorctl restart all
exit 0
$ vi /etc/crontab
...
@reboot root sleep 90 && /root/nc_oo/change_secret_and_token.sh
$ reboot
Nach dem Neustart des Servers kann die Konfiguration von OnlyOffice in den Nextcloud Verwaltungs-Einstellungen erneut gespeichert werden, diesmal sollte die Speicherung jedoch mit einer Vollzugmeldung gelingen.
Somit sollte OnlyOffice innerhalb der Nextcloud nun funktionieren.
Sprich, nach einem Reboot des Servers wird das “Korrektur Script” automatisch ausgeführt, bei einem reinen OnlyOffice Docker Container Neustart hingegen müsst Ihr das Script manuell laufen lassen, um OnlyOffice in der Nextcloud wieder lauffähig zu machen.
Bei Fragen meldet Euch einfach…