Traefik Rev-Proxy Konfig für Nextcloud

Mickey Mouse

Admiral
Registriert
Aug. 2006
Beiträge
9.997
ich bin sogar zu blöd im Nextcloud Forum zu posten, irgendwie komme ich mit deren Philosophie gar nicht klar und finde meinen eigenen Post nicht, daher versuche ich es hier (nochmal)...

im Prinzip steht die Frage schon oben im Titel.

da ich Nextcloud "native" nicht vernünftig zum Laufen bekommen habe (es läuft natürlich, macht aber Fehler, ist unerträglich langsam und insgesamt wenig Vertrauen erweckend), habe ich mir nebenbei noch einen Container Stapel gebaut, basierend aus: Nextcloud, MySQL, Redis, dem cron Modul und Traefik als reverse proxy, der auch gleich ssl/letsencrypt abdeckt.

abgesehen davon, dass quasi alle Probleme der "normalen" Installation (Fehler im Log und vor allem die grottenschlechte Performance) auch mit dem "fertigen" Container auftauchen, habe ich noch neue.

ich habe "nur" einen normalen DSL Zugang ohne feste IP und nutze myfritz für DynDNS. Außerdem bekomme ich meiner 7490 nicht abgewöhnt auf Port 443 zu lauschen. Auch wenn ich ihr HTTPS Interface auf z.B. 1443 stelle, kann ich sie unter 1443 UND 443 erreichen.
ich komme also über https://xxxxyyyyzzzz.myfritz.net:2443 auf meine Nextcloud. Die Fritzbox leitet das an Port 443 von meinem "Server" auf dem der Traefik Container das routing übernimmt (das gilt auch für port 80). Damit kann sich Traefik Zertifikate ausstellen lassen und wie gesagt, der Zugriff auf die "normalen" Funktionen von Nextcloud funktionieren auch alle soweit (wenn es nicht so laaaaaaaangsaaaaaaaam wäre...).

die Probleme werden mir von Nextcloud selber beim Check in den Einstellungen aufgelistet:
Es gibt einige Warnungen bei Deiner Systemkonfiguration. Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder Du greifst auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu finde sich in der Dokumentation. Der HTTP-Header "Strict-Transport-Security" ist nicht auf mindestens 15552000 Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den Sicherheitshinweisen erläutert ist. Dein Web-Server ist nicht richtig eingerichtet um "/.well-known/caldav" aufzulösen. Weitere Informationen findest Du in der Dokumentation. Dein Web-Server ist nicht richtig eingerichtet um "/.well-known/carddav" aufzulösen. Weitere Informationen findest Du in der Dokumentation.

die Dokumentation hilft mir nicht wirklich weiter. Die ist (wie leider bei Nextcloud üblich) in dem Stil gehalten: nimm' Ubuntu, tippe dies und klicke auf OK, dann geht es. Es gibt eigentlich nie eine Erklärung, was das bewirken soll, manchmal steht da ja sogar: tippe apt-get xyz ein und alles wird gut...
nun kenne ich mich mit Reverse Proxys so in etwa gar nicht aus. Ich habe zwar die native Installation sowohl mit dem Apache als auch nginx "irgendwie" zum Laufen gebracht (inkl. SSL), aber hier bei Traefik bin ich raus. Die Basis Einstellung ist ja Idiotensicher aber weiter komme ich nicht.

ich weiß nicht, ob auch die Probleme mit "Talk" damit zusammen hängen. Ich bekomme kein Bild auf den anderen Rechner, immer das eigene Bild. Auf dem anderen Rechner erscheint zwar ein Kamera Symbol wenn sie aktiviert wird aber eben kein Bild.
Ton wiederum läuft, ich kann mit zwei Rechnern eine Rückkopplung produzieren. D.h. doch aber eigentlich auch, dass das HTTP und Proxy Geraffel funktionieren müsste, der Ton nimmt doch keinen anderen Weg als Video?!?
 
Sicher, dass selbst hosten das Richtige für dich ist? Nicht böse gemeint, aber das liest sich wie eine (angehende) offene Scheunentüre.

Kannst du bitte Mal auflisten, welche Container du aufgesetzt hast, damit man weiß, welche Pakete im Einsatz sind?

Edit: Und auf welcher Plattform laufen die Container? (Betriebssystem)
 
  • Gefällt mir
Reaktionen: Zerstoerer
Voltago schrieb:
Sicher, dass selbst hosten das Richtige für dich ist? Nicht böse gemeint, aber das liest sich wie eine (angehende) offene Scheunentüre.
bitte werde konkreter!

Kannst du bitte Mal auflisten, welche Container du aufgesetzt hast, damit man weiß, welche Pakete im Einsatz sind?
hatte ich eigentlich schon grob umrissen...
von jemanden der sich auskennt, hätte ich jetzt vielleicht die Frage erwartet, ob es Traefik 1.x, 2.x oder eine 2.xRC Version ist, das hatte ich vergessen zu schreiben, ich nehme Traefik v2.1

image: traefik:v2.1
image: mariadb
image: redis:alpine
FROM nextcloud:apache

was hilft das jetzt?

Edit: Und auf welcher Plattform laufen die Container? (Betriebssystem)
ok, auch hier verstehe ich nicht so ganz welchen Einfluss das OS da hat, wenn es "prinzipiell" ja funktioniert, aber du wirst dich da besser auskennen als ich.
der Docker Stack läuft aktuell auf:
P9D-1:~> cat /etc/os-release NAME="openSUSE Tumbleweed" # VERSION="20200303" ID="opensuse-tumbleweed" ID_LIKE="opensuse suse" VERSION_ID="20200303" PRETTY_NAME="openSUSE Tumbleweed" ANSI_COLOR="0;32" CPE_NAME="cpe:/o:opensuse:tumbleweed:20200303" BUG_REPORT_URL="https://bugs.opensuse.org" HOME_URL="https://www.opensuse.org/" LOGO="distributor-logo"
 
Teile und herrsche, sprich löse ein Problem nach dem anderen und nicht alle gleichzeitig.

1. Fritzbox/myfritz: Zum einen nutzt du offenbar myfritz als dyndns Anbieter und zum anderen hast du vermutlich in der Fritzbox den Haken gesetzt, dass er über letsencrypt Zertifikate beziehen soll. Ich würde letzteres deaktivieren und zusätzlich die Fritzbox nicht von außen erreichbar machen. In dem Fall sollten dann auch die Ports 80 & 443 nicht mehr "belegt" sein und für Portweiterleitungen nutzbar.
2. Traefik muss je nach verwendeter Methode über Port 80 oder 443 erreichbar sein. Das ist kein Problem von Traefik sondern liegt in der Art und Weise wie letsencrypt arbeitet, siehe Doku: https://docs.traefik.io/https/acme/ Die dritte Option per DNS Challenge scheidet bei dyndns-Adressen in der Regel aus.
3. Für carddav und caldav benötigst du weitere Regeln in Traefik, auf die Schnelle das hier gefunden: https://github.com/nextcloud/server/issues/11850#issuecomment-443419867
4. Für die fehlerhaften reverse proxy Header siehe u.a. hier: https://github.com/nextcloud/docker/issues/800. Du musst afaik mindestens die trusted proxies in der config.php von Nextcloud korrekt setzen.
5. HSTS mit Traefik: Die Doku ist da leider ziemlich mau was das angeht, ich hab da das gefunden: https://calvin.me/hsts-with-traefik/

Edit: Zu den Punkten 1 & 2: Fritzbox zielt halt auf die breite Masse der Anwender(!) ab, die eben nicht Serverdienste betreiben. Wenn du also nicht auf die Funktionalität von 1 verzichten kannst, wird 2 schwer umzusetzen sein. Einzige mir spontan einfallende Möglichkeit wäre dass du heraus findest, dass AVM die TLS-Challenge verwendet für das Zertifikat der Fritzbox. Dann könntest du Port 80 an Traefik weiterleiten, dort die http-Challenge verwenden und deine Nextcloud unter einem nicht verwendeten Port wie z.B. 1443 erreichbar machen. Musst dann halt bei jeder App und im Browser immer den Port 1443 angeben.

Hinzu kommt dass du vermutlich Probleme haben wirst wenn du Nextcloud aus deinem LAN heraus mit dem FQDN ansprechen willst. Entweder müsstest du mit Kanonen auf Spatzen schießen und so etwas wie Split DNS umsetzen oder dir andere Basteleien einfallen lassen.
 
danke, aber soweit war ich auch schon...
zu:
1) ich "brauche" die FB im Netz, werde das aber mal testweise deaktivieren, eine Dauerlösung ist das aber nicht.
2) vielleicht hast du überlesen, dass ich das bereits "fast vollständig" mit traefik und letsencrypt am Laufen habe, natürlich über http-challenge, ich habe ja nur port 80 dafür zur Verfügung, aber das klappt und ist ja nicht das Problem
3) diese (oder ähnliche) Anleitungen habe ich auch schon gefunden. Die sind aber alle für traefik 1.x und da hat sich das Verhalten und die Syntax geändert. Hier ist halt wieder das Problem, dass in nahezu allen Fällen immer "nur" gesagt wird: tippe dies&das ein, das hat bei mir geholfen. Ich habe das Gefühl, niemand weiß eigentlich selber, was die Bedeutung seiner Beschwörungsformeln ist, die werden nur weiter gegeben. Wenn man eine klare Beschreibung ala: "hier wird dies gemacht damit das passiert" hätte, dann könnte man das vielleicht einfacher "übersetzen".
4) muss ich mir mal ansehen.

zum vorletzten Absatz: ja, genauso mache ich es jetzt ja, ist im Moment 2443.
allerdings war ich mal wieder zu naiv. Ich hatte lange Zeit DynDNS (also nicht allgemein, sonder DAS DynDNS). Die haben in der kostenlosen Version nicht mehrere Hosts/Namen oder gar SubDomains unterstützt und mit der Übernahme durch Oracle wurde das alles noch viel schlimmer.
Seitdem habe ich halt MyFritz genommen und bin gar nicht auf die Idee gekommen, dass es auch kostenlose Angebote mit mehreren hosts gibt. Ich habe mich heute mal bei einem registriert (mal gucken, wie sich das auf die Größe des Spam Folders auswirkt ;) ) und werde das mal testen. Da habe ich 5 Namen und kann mir jeweils einen für FHEM, NextCloud, NAS und remote access einrichten, da ich da eh über Guacamole gehe, reicht mir ein RA Zugang für alle Rechner aus.

beim letzten Absatz stehe ich auf dem Schlauch?!?
ich greife auf die Dienste auch lokal per FQDN zu, wo ist da das Problem?
 
Lokaler Client macht DNS-Request, bekommt deine öffentliche IP als Ergebnis, Anfrage geht zur Fritzbox bis zum WAN-Interface und macht da dann ne 180° Wende, afaik muss dafür der Rebind-Schutz der Fritzbox konfiguriert werden. Kann aber auch sein, dass sich das geändert hat inzwischen.

Traefik ist mir leider für mein kleines Setup ebenfalls zu komplex geworden und bin daher zu einer anderen Lösung migriert da ich einen Großteil der Funktionalität nicht benötige. Da muss ich zwar auch für Eigenheiten wie Nextcloud die Config anfassen aber das hält sich in Grenzen. Ich nutze dafür https://hub.docker.com/r/jwilder/nginx-proxy/
 
Würdest du mir deine docker-compose.yml von trafik zur Verfügung stellen?
Bin gerade auch am basteln und habe von Anfang an Probleme.
Deine docker-compose.yml würde mir helfen.

Traefik nutzt du in der neusten Version (V2?)
 
Wen genau meinst du hier im Thread? Den TE der noch mit Traefik 2 kämpft und daher keine saubere lauffähige Config hat oder mich der Traefik nicht verwendet?^^
 
Zurück
Oben