Beschreibung des Problems
Ich betreibe eine lokale Nextcloud-Instanz, bei der ein Problem mit der Anzeige und den Umleitungen auftritt. Beim Zugriff auf die Nextcloud-Seite werden hĂ€ufig Fehler wie âDie Netzwerkverbindung wurde unterbrochenâ oder âZu viele Umleitungenâ angezeigt. Teilweise bleibt die Seite bei einem braunen Hintergrund stehen, und in der Browserkonsole tauchen Fehler wie âFailed to load resourceâ und âReferenceError: Canât find variableâ auf.
Zudem gibt es Probleme mit der HTTPS-Umleitung. Sobald overwriteprotocol
in der config.php
auf https
gesetzt wird, treten Umleitungsfehler auf. Ohne diese Einstellung funktioniert die Verbindung ĂŒber HTTP. Die Domain meineDomain.myfritz.net
wird automatisch auf HTTPS umgeleitet, jedoch erscheint nur ein einfarbiger Hintergrund mit dem NC-Logo, ohne dass das Anmeldefenster oder weitere Inhalte geladen werden. Ăber HTTP kann ich mich immerhin ĂŒber die lokale IP-Adresse oder die öffentliche IP mit zugehörigem Port anmelden.
Die Domain meineDomain.myfritz.net
ist erreichbar, und die SSL-Zertifikate wurden korrekt eingerichtet und ĂŒberprĂŒft (mit Certbot). Trotzdem tritt das Problem weiterhin auf.
Ich habe bereits die Konfigurationen von Nginx (als Reverse Proxy) und Apache (innerhalb von Docker Desktop) ĂŒberprĂŒft und mehrfach angepasst. Leider konnte ich den Fehler bislang nicht beheben.
Da ich absoluter AnfĂ€nger auf diesem Gebiet bin, hoffe ich, dass die bereitgestellten Informationen vollstĂ€ndig sind. Falls weitere Details benötigt werden, stelle ich diese gerne zur VerfĂŒgung.
Systemkonfiguration
Hardware
- GerÀt: Mac Mini (2018)
- Prozessor: Intel Core i5-8500B
- RAM: 16 GB
Software
- Betriebssystem: macOS 15.2
- Docker Desktop: Version (aktuellste)
- Nextcloud Version: Latest (Stand Dezember 2024)
- PHP Version: 8.2.x
- Datenbank: SQLite
- Webserver: Apache innerhalb von Docker
- Reverse Proxy: Nginx auf dem Host-System
Netzwerk
- Internes LAN:
192.168.178.75:7777
- FritzBox Domain:
meineDomain.myfritz.net
(Port 80/443 wird auf den Mac Mini weitergeleitet)
Fehlermeldungen im Detail
- Browser (Safari/Chrome):
- âDie Netzwerkverbindung wurde unterbrochenâ
- âZu viele Umleitungenâ
- Einfarbige Seite mit NC-Logo, ohne weitere Inhalte.
- Browser-Konsole:
- âFailed to load resource: Die Netzwerkverbindung wurde unterbrochenâ
- âReferenceError: Canât find variable: OCâ
- âReferenceError: Canât find variable: OCAâ
- curl:
- Beim Zugriff ĂŒber HTTPS zeigt
curl
korrekte Umleitungen und Zertifikate, aber die Seite lÀdt nicht vollstÀndig.
- Logfiles:
- Nginx: Keine auffÀlligen Fehler, Umleitungen scheinen korrekt zu sein.
- Apache: Zeigt gelegentlich
401 Unauthorized
, ansonsten keine kritischen Hinweise.
Schritte zur Fehlerbehebung bisher
- SSL-Zertifikate ĂŒberprĂŒft und erneuert:
- Zertifikate mit Certbot erstellt und geprĂŒft.
- Nginx- und Apache-Konfiguration angepasst:
- Mehrfach ĂŒberarbeitet, um HTTPS-Umleitungen und Reverse-Proxy korrekt einzurichten.
- Browser-Cache geleert und Cookies gelöscht.
- Docker-Container neu gestartet und ĂŒberprĂŒft:
- Alle relevanten Dienste laufen korrekt.
- Verbindungen mit
curl
undopenssl
getestet:
- SSL-Verbindungen scheinen korrekt zu funktionieren.
Fragen
- Was könnte die Ursache fĂŒr die fehlerhafte Anzeige der Nextcloud-Seite sein? welche ja nur ĂŒber
meineDomain.myfritz.net
auftritt - Gibt es bekannte Probleme oder besondere Anforderungen bei der Verwendung von
overwriteprotocol
in derconfig.php
? - Welche weiteren Debugging-Schritte könnte ich unternehmen, um die Ursache fĂŒr die fehlerhaften Umleitungen und Anzeigen zu finden?
- Ist die Kombination von Nginx (als Reverse Proxy) und Apache (innerhalb von Docker) korrekt, oder gibt es alternative KonfigurationsvorschlÀge?
Vielen Dank im Voraus fĂŒr die Hilfe!
Anhang:
Config.php
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'upgrade.disable-web' => true,
'instanceid' => 'ocwvrlcwihbx',
'passwordsalt' => 'yxyxyxyxyxyxyxyxyx',
'secret' => 'yxyxyxyxyxyxyxyxyxyxyxyxyxyx',
'trusted_domains' =>
array (
0 => 'localhost:7777',
1 => '192.168.178.75',
2 => '192.168.178.74',
3 => 'meineDomain.myfritz.net',
4 => 'PuplicIP' ,
),
'trusted_proxies' =>
array (
0 => '127.0.0.1',
1 => '::1',
2 => '172.17.0.1',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'sqlite3',
'version' => '30.0.3.2',
'overwrite.cli.url' => 'https://meineDomain.myfritz.net',
'overwriteprotocol' => 'https',
'installed' => true,
'maintenance_window_start' => '02:00',
'maintenance' => false,
);
000-default.conf (Apache im Docker)
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName meineDomain.myfritz.net
<Directory /var/www/html/>
AllowOverride All
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# HTTP auf HTTPS Weiterleitung
server {
listen 80;
server_name meineDomain.myfritz.net;
return 301 https://$host$request_uri;
}
# HTTPS Server
server {
listen 443 ssl;
http2 on;
server_name meineDomain.myfritz.net;
ssl_certificate /etc/letsencrypt/live/meineDomain.net-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meineDomain.myfritz.net-0001/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://localhost:7777;
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 https;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_set_header X-Content-Type-Options nosniff;
proxy_set_header Referrer-Policy no-referrer;
proxy_set_header X-Forwarded-Host $host;
client_body_timeout 3600;
send_timeout 3600;
proxy_read_timeout 3600;
proxy_connect_timeout 3600;
add_header Cache-Control "no-store, no-cache, must-revalidate" always;
add_header Pragma "no-cache" always;
add_header Expires 0;
}
# Fehlerseiten
error_page 403 /custom_403.html;
error_page 404 /custom_404.html;
location = /custom_403.html {
root /var/www/html;
}
location = /custom_404.html {
root /var/www/html;
}
}
}
Fehlermeldungen Nextcloud/settings/admin/overview
Unsicherer Zugriff auf die Website ĂŒber HTTP. Es wird dringend empfohlen, Ihren Server so einzurichten, dass HTTPS erforderlich ist. Ohne HTTPS funktionieren einige wichtige Webfunktionen wie "Kopieren in die Zwischenablage" oder "Service Worker" nicht! Weitere Informationen finden Sie in der Dokumentation â.
Die Konfiguration des Reverse-Proxy-Headers ist falsch oder Sie greifen ĂŒber einen vertrauenswĂŒrdigen Proxy auf Nextcloud zu. Andernfalls stellt dies ein Sicherheitsproblem dar und kann es einem Angreifer ermöglichen, seine IP-Adresse so zu fĂ€lschen, dass sie fĂŒr Nextcloud sichtbar ist. Weitere Informationen finden Sie in der Dokumentation â.
Einige Header sind in Ihrer Instanz nicht richtig eingestellt - Der `Strict-Transport-Security`-HTTP-Header ist nicht gesetzt (er sollte mindestens `15552000` Sekunden betragen). FĂŒr erhöhte Sicherheit wird empfohlen, HSTS zu aktivieren. Weitere Informationen finden Sie in der Dokumentation â.