[Gelöst] Nextcloud hinter Cloudflare "Interner Serverfehler"

Guten Morgen zusammen :slight_smile:

Ich möchte gerne meine Nextcloud Instanz über einen Cloudflare Tunnel verfügbar machen.

Setup

Die Nextcloud selber liegt auf einer UCS 5 Instanz sub.domain-lan.tld, welch selbige als VM über proxmox 7 läuft.

Der Tunnel zur Clouldflare wird mit einem separaten Container gehalten.

In LAN ist die Nextcloud erreichbar und läuft wie gewünscht.

Problem

Die Anbindung über den Tunnel funktioniert, insoweit dass die Fehlermeldung kam, dass die Seite nicht zu den vertrauenswürdigen zählt und daher geblockt wird.

Zu dem Thema gibt es ja etliche Beiträge im Netz. Also habe ich per univention-app shell nextcloud mich in die Dockerinstanz gesetzt und in der config.php zu den trusted_domainsdie IP-Adresse des Tunnel-Containers eingetragen (222), sowie die FQDN der Cloudflare Domain (couldflare-domain.tld).

<?php
$CONFIG = array (
  'passwordsalt' => '******',
  'secret' => '*****',
  'trusted_domains' =>
  array (
    0 => 'sub.domain-lan.tld',
    1 => 'xxx.xxx.xxx.111',
    2 => 'xxx.xxx.xxx.222',
    3 => 'cloudflare-domain.tld',
  ),
  'datadirectory' => '/var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data',
  'dbtype' => 'pgsql',
  'version' => '24.0.7.1',
  'overwrite.cli.url' => 'https://sub.domain-lan.tld/nextcloud',
  'dbname' => 'nextcloud',
  'dbhost' => '172.17.42.1:5432',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => '*****',
  'installed' => true,
  'instanceid' => '******',
  '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',
  'trusted_proxies' =>
  array (
    0 => '172.17.42.1',
  ),
  'one-click-instance' => true,
  'one-click-instance.user-limit' => 500,
  'one-click-instance.link' => 'https://nextcloud.com/univention/',
);

//  Den E-Mail Abschnitt habe ich hier rausgenommen, da wahrscheinlich nicht relevant


Abschließend die Nextcloud Instanz mit univention-app restart nextcloud neu gestartet (Auch wenn das eigentlich nicht nötig sein sollte, da die php Datei beim Laden der Seite verarbeitet wird?)

Jetzt kommt eine neue Fehlermeldung, welche einen “Internen Serverfehler” beklagt und die IP-Adresse des Cloudflare-Containers angibt. Dazu wird ein Hash(?) angegeben, unter dem ich etwas finden können sollte.

In der Docker-Instanz finde ich in der /var/log/apache2/error.log nur den Fehler Cannot serve directory /var/www/html: No matching DirectoryIndex (none) found, and server-generated directory index forbidden by Options directive,
Ich vermute, dass dies ein anderes Thema zu sein scheint, da die LAN Instanz ohne Fehler läuft. Aber der Vollständigkeit halber gebe ich es lieber hier mit an.

Fragen

  • Wo finde ich das Server-Protokoll, in dem “Hash” die Fehlermeldung steht?
  • Was habe ich falsch gemacht?

Für Rat- und Nackenschläge wäre ich dankbar. :pray:

Nachtrag

Dank des Beitrags im Univention Forum habe ich den Logeintrag gefunden:

Der liegt auf dem UCS Host unter
/var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data/nextcloud.log

Beim refresh der Seite auf der Cloudflare Domain kommt ein entsprechender Eintrag:

{
  "reqId": "K2nDXV199F5tr4yaUZUJ",
  "level": 3,
  "time": "2023-03-30T09:09:48+00:00",
  "remoteAddr": "xxx.xxx.xxx.111",
  "user": "--",
  "app": "index",
  "method": "GET",
  "url": "/login",
  "message": "The requested uri(/login) cannot be processed by the script '/nextcloud/index.php')",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
  "version": "24.0.7.1",
  "exception": {
    "Exception": "Exception",
    "Message": "The requested uri(/login) cannot be processed by the script '/nextcloud/index.php')",
    "Code": 0,
    "Trace": [
      {
        "file": "/var/www/html/lib/base.php",
        "line": 968,
        "function": "getRawPathInfo",
        "class": "OC\\AppFramework\\Http\\Request",
        "type": "->"
      },
      {
        "file": "/var/www/html/index.php",
        "line": 36,
        "function": "handleRequest",
        "class": "OC",
        "type": "::"
      }
    ],
    "File": "/var/www/html/lib/private/AppFramework/Http/Request.php",
    "Line": 760,
    "CustomMessage": "--"
  }
}

In der Cloudflare Einstellung für den Tunnel habe ich den Port xxx.xxx.xxx.111:40000 gesetzt, weil sonst das Univention-Portal geladen wurde. Eventuell ist hier der Fehler begraben?

Gelöst

Dank des Logeintrags bin ich dem Fehler auf die Spur gekommen:

Anscheinend erwartet der Router den Linkaufbau dominan.tld/nextcloud/.

Da ich den Tunnel auf das Rootverzeichnis zeigen ließ, passte die URI nicht überein.

Lösung

Die Tunnelkonfiguration auf Cloudflare wird als Pfad nextcloud gesetzt.

grafik

Fertig :partying_face:

So einfach kann das Leben sein :slight_smile: