Collabora Einbindung über externe URL nicht mehr möglich nach upgrade auf (UCS) Nextcloud 22.x

Liebe Community,

nach dem Upgradesprung von Nextcloud 21.0.9-0 auf Nextcloud 22.2.7-0 funktioniert Collabora nicht mehr. Genauer gesagt, können wir aus den Nextcloud Einstellungen nicht mehr die externe URL (orange-dev.beispielurl.de) erreichen. Sobald der interne FQDN eingetragen wird, funktioniert Collabora wieder (solange wir die VPN aufrecht erhalten, ohne VPN funktioniert es dann natürlich nicht mehr, da die interne Adresse bzw. der FQDN dann nicht mehr erreichbar ist).

You can also help us in english if you want to

Unser Aufbau

  1. Ein root Mietserver mit Proxmox VE 7 (alle Ports → OPNsense)
    2.1 OPNsense Firewall (TCP 80, 443 → reverseProxy)
    2.2 Debian 11 reverseProxy mit NGINX und certbot (Domain orange-dev.beispielurl.dewebAppBei01.beispiel.ucs [10.220.0.17])
    2.3 pdcBei.beispiel.ucs (Primärer UCS Domänen Controller)
    2.4 webAppBei01.beispiel.ucs (UCS Applikations Server mit Nextcloud und Collabora Docker Container)

In der folgenden Konstellation funktioniert es nocht

  • Nextcloud 21.0.9-0
  • Collabora 21.11.2.4
  • Collabora Nextcloud App 4.2.7
  • UCS 5.0-1 errata 524 (auf allen UCS Systemen)
$ univention-app list nextcloud
nextcloud
  Name: Nextcloud Hub
  Versions:
    20.0.9-0
    20.0.10-0
    21.0.3-0
    21.0.4-0
    21.0.5-0
    21.0.7-0
    21.0.9-0
      Installed: webAppBei01.beispiel.ucs
    22.2.7-0
    23.0.4-0
    23.0.5-0
	
$ univention-app list collabora
collabora
  Name: Collabora Online Development Edition
  Versions:
    6.4.10.5
    6.4.10.10
    21.11.2.4
      Installed: webAppBei01.beispiel.ucs

Nextcloud > Einstellungen > Übersicht
21-0-9-0_Uebersicht

Nextcloud > Einstellungen > Collabora Online
21-0-9-0_Einstellungen_Collabora

Nextcloud > Ein Testdokument
21-0-9-0_Testdokument

Unsere reverseProxy Nginx Konfiguration
server {

    if ($host = orange-dev.beispielurl.de) {

        return 301 https://$host$request_uri;

    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name orange-dev.beispielurl.de;
    return 301 https://$host$request_uri;
}

server {

    listen 443 ssl;
    listen [::]:443 ssl;
    server_name orange-dev.beispielurl.de;
    client_max_body_size 999M;

    # Server SSL
    ssl_certificate /etc/letsencrypt/live/orange-dev.beispielurl.de/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/orange-dev.beispielurl.de/privkey.pem; # managed by Certbot

    # 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-dev.beispielurl.de"';


    location / {

        proxy_pass          https://10.220.0.17/;
        proxy_redirect      https://10.220.0.17 https://orange-dev.beispielurl.de;
    }


    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;
    }


    # static files
    location ^~ /browser {
        proxy_pass https://10.220.0.17:9980;
        proxy_set_header Host $http_host;
    }


    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass https://10.220.0.17:9980;
        proxy_set_header Host $http_host;
    }


    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass https://10.220.0.17:9980;
        proxy_set_header Host $http_host;
    }

	
    # main websocket
    location ~ ^/cool/(.*)/ws$ {
        proxy_pass https://10.220.0.17: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://10.220.0.17:9980;
        proxy_set_header Host $http_host;
    }


    # Admin Console websocket
    location ^~ /cool/adminws {
        proxy_pass https://10.220.0.17:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }


    # redirect server error pages to the static page
    error_page 403 /error403.html;
    location = /error403.html {
        root /var/www/error;
    }

}

Wie geschrieben, bis hierher funktioniert alles blendent.


In der folgenden Konstellation funktioniert es dann nicht mehr

  • Nextcloud 22.2.7-0 (gleiches Verhalten in den Versionen 23.0.4-0 und 23.0.5-0)
  • Collabora 21.11.2.4
  • Collabora Nextcloud App 4.2.7 (im Falle von 23.0.4-0 und 23.0.5-0 liegt dann die App Version 5.0.5 vor, ebenso testeten wir die App Version 5.0.4)
  • UCS 5.0-1 errata 524 (auf allen UCS Systemen)

Inhalt der /var/www/html/config/config.php des Nextcloud Docker Containers

<?php
$CONFIG = array (
  'passwordsalt' => '..%passwordsalt%..',
  'secret' => '..%secret%..',
  'trusted_domains' =>
  array (
    0 => 'webAppBei01.beispiel.ucs',
    1 => '10.220.0.17',
    2 => 'orange-dev.beispielurl.de',
  ),
  'datadirectory' => '/var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data',
  'dbtype' => 'pgsql',
  'version' => '22.2.7.1',
  'overwrite.cli.url' => 'https://orange-dev.beispielurl.de/nextcloud',
  'dbname' => 'nextcloud',
  'dbhost' => '172.17.42.1:5432',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => '..%dbpassword%..',
  'installed' => true,
  'instanceid' => 'ocx6tslabhwg',
  'updatechecker' => false,
  'upgrade.disable-web' => true,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\APCu',
  'overwriteprotocol' => 'https',
  'overwritewbroot' => '/nextcloud',
  'htaccess.RewriteBase' => '/nextcloud',
  'ldapProviderFactory' => 'OCA\\User_LDAP\\LDAPProviderFactory',
  'default_phone_region' => 'DE',
  'skeletondirectory' => '',
  'trusted_proxies' =>
  array (
    0 => '172.17.42.1',
  ),
  'maintenance' => false,
  'loglevel' => 2,
);

Nextcloud > Einstellungen > Übersicht
22-2-7-0_Uebersicht

Nextcloud > Einstellungen > Collabora Online
22-2-7-0_Einstellungen_Collabora

Nextcloud > Ein Testdokument
22-2-7-0_Testdokument


Es scheint so, als ob eine neue Einstellung bzw. evtl. ein neuer Wert z.B. in der config.php fehlen würde, welcher einen externen Host zulassen würde.

Hat irgend jemand von Euch evtl. das gleiche Problem bzw. hat jemand von Euch eine Löung zur Hand?

Vielen Dank bereits für Eure Unterstützung,
Viele Grüße aus dem Rheinland,
Migo

Mahlzeit zusammen,
wir haben den Fehler gefunden und das Problem ist somit behoben.

In der reverseProxy Konfiguration muss der folgende Zeilenumbruch entfernt werden…


# Fehlerhafte Syntax

...
# Globale Einstellungen
    add_header Strict-Transport-Security "max-age=15768000;
    includeSubDomains; preload;";
    fastcgi_hide_header X-Powered-By;
...


# Korrekte Syntax

...
# Globale Einstellungen
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    fastcgi_hide_header X-Powered-By;
...

Nun funktioniert wieder alles… nach über vier Wochen.

Schöne Grüße aus dem Rheinland,
Migo

Mastodon