Bekomme Nextcloud mit SSL nicht in meinem OMV7 Docker korrekt installiert/konfiguriert

Hallo zusammen,

ich habe das Forum gründlich durchsucht, doch die Beiträge, die ich gefunden habe, haben leider entweder deutlich hinter meinem Problem begonnen (ich kam also nicht so weit) oder sind anders von der Ursache. Ich hoffe, Ihr könnt mir helfen, denn nach 2 Monaten (ja, ich versuche es seit Ende Dezember) schaffe ich es nicht, mein Nextcloud so zum laufen zu bekommen, wie ich es möchte.

Einfach gesagt, ich möchte “nur” ein Nextcloud auf meinem Raspberry Pi 5 (in OMV7 bzw. dessen Docker) installiert bekommen. Der Raspi betreibt wiederum mittels eines 4-fach Raid Controllers einen Raid5 Verbund mit 4 SSDs. Gleich zum Verständnis: OMV läuft, die SSDs werden erkannt, OMV Extras sind installiert. Ordner sind angelegt. Jetzt kommt glaube ich eine Yaml mit Nextcloud drauf und ich wäre (mehr oder weniger) fertig, richtig?

Klingt für Euch einfach? Gut, hier sind meine genauen Anforderungen:

  • Der Ordner in dem sämtliche Dateien abgelegt werden sollen, soll logischerweise auf dem Raid 5 liegen (Nennen wir den Ordner der Einfachheit halber Elumpant, er hat folgende Adresse: /srv/dev-disk-by-uuid-37a85f30-b4aa-4fbd-8b0f-21bc218fcd4d/Elumpant/).

  • Ich möchte Außerdem MariaDB als Datenbank verwenden (ist glaub ich auch nicht ungewöhnlich)

  • Ich möchte eine SSL Verbindung, keine ungesicherte http Verbindung auf meinen Raspi, wenn ich von außen zugreife.

  • Soweit ich weiß, nutzt man ein MacVLAN dazu? Dann wäre die Adresse meines Raspberries im Heimnetz 192.168.178.54 und die gewünschte Adresse des MacVLANs bzw. der Nextcloud 192.168.178.205

  • Ich habe eine DuckDNS Weiterleitung eingerichtet (Nennen wir sie einfach Elumpant.duckdns.org, Token ist natürlich auch vorhanden.)

  • Mein Heimnetz wird von einer Fritzbox der 65er Serie beherrscht (192.168.178.1). Daran angeschlossen ist ein piHole mit Standardkonfiguration (nur falls das eine Rolle für die Portfreigabe spielt oder ähnliches. Dieser hört auf die IP 192.168.178.34)

  • Bei der Portfreigabe für 80 und 443 in der Fritzbox werde ich schon unsicher: Muss ich den Raspi (192.168.178.54) dafür nehmen oder das MacVLAN/Nextcloud (192.168.178.205). Gleich zum Verständnis: Wenn jemand über HTTP von unterwegs zugreift, soll er automatisch auf den HTTPS Port umgeleitet werden.

  • irgendwo habe ich dann auch noch versucht, mit Certbot Zertifikate zu erstellen.

  • Bis zu dem folgenden Punkt kam ich nie, vermutlich ist er am leichtesten einzurichten: Später sollen sich meine Mobilgeräte über die Nextcloud App automatisch mit meinem Raspi synchronisieren. Also wenn ich beispielsweise ein Foto auf Bali schieße, soll das sobald ich wieder im Hotel-WLAN bin automatisch auf meinen Raspi synchronisiert werden. Zusätzlich soll dieser übergeordnete Nextcloud Ordner im Heimnetz verfügbar sein.

  • Ich bin nicht sehr gut mit dem Terminal (schon eher ein ziemlicher Noob), hier ein Beispiel, wie ich meine Yaml (mit viel googeln und/oder ChatGPT) gestaltet habe (Passwörter und meine eigentliche duckdns Adresse habe ich aus Datenschutzgründen durch Platzhalter ersetzt):

services:
  db:
    image: mariadb:10.6
    container_name: nextcloud-mariadb
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    restart: always
    volumes:
      - /srv/dev-disk-by-uuid-37a85f30-b4aa-4fbd-8b0f-21bc218fcd4d/Elumpant/nextcloud-db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=nextcloud_db_root_password
      - MYSQL_PASSWORD=nextcloud_db_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    networks:
      - nextcloud_network

  app:
    image: nextcloud:latest
    container_name: nextcloud-app
    restart: always
    depends_on:
      - db
    volumes:
      - /srv/dev-disk-by-uuid-37a85f30-b4aa-4fbd-8b0f-21bc218fcd4d/Elumpant/nextcloud:/var/www/html
    environment:
      - MYSQL_ROOT_PASSWORD=nextcloud_db_root_password
      - MYSQL_PASSWORD=nextcloud_db_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=secure_admin_password
      - NEXTCLOUD_TRUSTED_DOMAINS=192.168.178.54 elumpant.duckdns.org
      - OVERWRITEPROTOCOL=https
    networks:
      nextcloud_network:
      nextcloud_macvlan:
        ipv4_address: 192.168.178.205

  proxy:
    image: nginx:alpine
    container_name: nextcloud-proxy
    restart: always
    ports:
      - 8080:80
      - 8443:443
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./ssl:/etc/nginx/ssl
      - /srv/dev-disk-by-uuid-37a85f30-b4aa-4fbd-8b0f-21bc218fcd4d/Elumpant/nextcloud:/var/www/html
    depends_on:
      - app
    networks:
      - nextcloud_network

networks:
  nextcloud_network:
    driver: bridge
  nextcloud_macvlan:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.178.0/24
          gateway: 192.168.178.1
          ip_range: 192.168.178.205/32

Was schief ging? Also ich habe in den letzten 2,5 Monaten (!!!) alle möglichen Variationen der Yaml versucht. Einmal hatte ich es sogar fast geschafft - nur konnte ich in diesem Fall nur über das Internet auf meine Nextcloud kommen, wenn ich dies über den Browser (nicht die App) versucht habe und die Seite neu geladen habe. Irgendein Problem mit der Portweiterleitung.

Andere Fehler waren: “Too many redirections”, “Server unavailable”, kurz gesagt, entweder gab es meistens ein Problem mit der Portweiterleitung und wenn das nicht war, war der Server gar nicht zu erreichen. Ich habe angefangen, die Fehler mit ChatGPT zu besprechen, doch dieser hatte 100 Vorschläge, aber keinen der funktionert hat.

Sorry, das war ziemlich viel Text. Nun ganz einfach meine Fragen:

  1. Denke ich zu kompliziert? Gibt es evtl eine Nextcloud-Standardkonfiguration, bei der ohnehin SSL läuft? Eigentlich sind meine Wünsche doch gar nicht so exotisch, oder?

  2. Kann mir jemand helfen, meine Nextcloud Yaml zu gestalten? Es wäre großartig, wenn Ihr mir eine posten könntet, bei der ich nur noch meine Festplattenadresse angeben muss, die Passwörter und die DuckDNS Adresse einfüge und ein funktionierendes Nextcloud habe.

Schon einmal vielen Dank für Eure Unterstützung!

Jo

Hallo @Dynalon, willkommen in den Foren der Anwender-Gemeinschaft von Nextcloud! :handshake:

Ich habe deutlich Respekt für dein Durchhaltevermögen - 2.5 Monate sind schon lange Zeit. Das Hosting einer komplexen Applikation wie Nextcloud braucht eine Menge Hintergrundwissen - ich würde empfehlen du schaust 101: Self-hosting information for beginners an und lernst die notwendigen Grundlagen.

Weiter kommt es darauf an ob du es einfach nur “schnell und unkompliziert” haben möchtest oder eher Lernen möchtest und bereit mist extra Runden zu drehen und die Zusammenhänge im Detail zu verstehen. Im ersten Fall schaue bitte Nextcloud AiO an - schlüsselfertig und einfach aber wenig(-er) anpassbar. Wenn du alle Stellschrauben kontrollieren möchtest: docker-compose-setup-with-notify-push-2024 - das braucht aber einen extra Reverse Proxy… oder auch Nextcloud docker compose setup with Caddy (2024)

1 Like

Hallo wwe,

ehrlich gesagt war/ist mein Durchhaltevermögen notgedrungen: Ich benötige demnächst (in spätestens einem halben bis ganzen Jahr) eine neue Datenspeicherlösung, da meine alte Symology langsam voll ist und ich diese dem hohen Alter wegen nicht weiter ausbauen und ich auch nicht wieder für zig 100 Euro eine neue kaufen möchte (zumal dann natürlich noch die Festplatten dazu müssen).
Der Wunsch war ziemlich naheliegend: Sie soll kleiner sein von den Maßen als die alte Diskstation, deutlich weniger Strom verbrauchen, 24/7 online/eingeschaltet sein (Meine Diskstation wird nur bei Bedarf hochgefahren und ist im Schnitt 165 Std. pro Woche aus) und nicht wieder so verdammt teuer wie die Synology. Also habe ich 4 große SSDs, ein Raspberry und die PCI Erweiterungskarte gekauft. War dann doch ganz schön teuer, auch wenn die SSDs den Großteil der Kosten ausgemacht haben und daher eh unvermeidbar waren, wenn man nicht wieder HDDs will.
Und jetzt die ganze teure Hardware in der Ecke versauern lassen um für nochmehr Geld eine Diskstation zu kaufen? Nein, auf keinen Fall! Also hab ich es versucht. Und wieder und wieder…

Schon einmal Danke für Deine Antwort. Ich bin leider nicht talentiert, was alles im Zusammenhang mit der Befehlszeile angeht, aber bisher habe ich es doch irgendwie immer hinbekommen (mit Google, Youtube & Co), so dass hier nun Octoprint meine Drucker steuert, FHEM das Haus kontrolliert und eine Phoniebox für das Entertainment sorgt. Doch jetzt weiß ich zumindest, warum das mit Nextcloud nicht auf Anhieb geklappt hat. Ich war tatsächlich so naiv zu glauben, dass ich eigentlich nur die korrekten Einstellungen brauche und das ganze nach einem Wochenende (aus dem dann zwei, drei, zig Feierabende und noch mehr Wochenenden wurden) zum Laufen bekomme.

Da für mich definitiv nur eine relativ einfache Lösung in Frage kommt, bin ich gerade an der Nextcloud AOI. Diese läuft tatsächlich - bis auf die Portweiterleitung. Irgendwie scheint hier etwas nicht zu funktionieren:

  1. Es sieht so aus, als ob das Open Media Vault, in dem mein Nextcloud als Dockercontainer läuft schon den Port 443 nutzt, weswegen ich versuche mit Nextcloud auf 8443 oder 9443 umzusteigen. Doch obwohl all diese Ports in meiner Fritzbox (natürlich mit der korrekten IP) freigegeben sind, komme ich über meinen DuckDNS Link nicht auf die Nextcloud (nur über die Netzwerkinterne IP, aber eben auch nicht über besagte https Ports, sondern nur http) Momentane Meldung bei Browserzugriff: " Die Website ist nicht erreichbar. Die Antwort von **** hat zu lange gedauert."
  2. Nextcloud auch immer wieder meldet, dass meine Domain Einrichtung nicht läuft. (Z.B.: “Diese Website kann keine sichere Verbindung bereitstellen. ***** hat eine ungültige Antwort gesendet.”)

Das Frustrierende ist, soweit ich das sehe, komme ich mit Nextcloud AOI fast genau da hin wo ich will, nur dieser eine Schritt klappt nicht. Bin jetzt auch schon wieder 6 oder 7 Abende dran und habe Nextcloud AOI schon 4 oder 5 mal neu installiert und immer wieder Anpassungen dabei versucht. Ich kann den Fehler leider nicht wirklich gut beschreiben, außer dem, was ich schon mitgeteilt habe. Aber vielleicht kommt Dir das ja trotzdem bekannt vor und Du hast eine Idee…?

Viele Grüße

Ach ja: Abschnitt 101 bin ich natürlich durchgegangen. Ich bin bei weitem kein Profi, aber theoretisch sollten meine Kenntnisse für das meiste (und mit etwas Googeln auch für den Rest) ausreichen.

Das Thema ist eigentlich nicht soo schwierig und ich vermute es wird etwas ganz blödes sein. Wie immer gilt hier systematisch Troubleshooting zu betreiben - gedanken machen welche Systeme wie laufen… und dann Schritt für Schritt die Systeme mit ihren logs anschauen:

  1. welche IP wird im DNS aufgelöst (intern und extern)
  2. komme ich damit auf meinen Router
  3. welche IP/Port ist als Forwarding konfiguriert
  4. gibt’s einen Reverse Proxy oder nicht…
  5. Firewall etc…

Häufig sind es die Basics die Probleme machen bzw extern anders sein können als intern. bei AiO (und allgemein Letsencrypt) müssen bestimmte Voraussetzungen erfüllt werden damit LE das System erreichen kann und das Zertifikat ausstellt. AiO ist normalerweise einfach zu konfigurieren, ich kann mir aber vorstellen dass omv zusätzlich Komplexität reinbrigt. Hier ist wichtig zu verstehen dass bei AiO unterschiedliche Ports und Interfaces zum Einsatz kommen je nachdem ob man das management Interface, Nextcloud UI oder der LE ACME challenge macht. Ich kann dir leider mit OMV nicht weiter helfen aber ich denke eines der beiden Zeichnungen sollte passen und beim Suchen weiter helfen.

AIO in home network behind reverse proxy

flowchart LR

  internet-->fritz.box
   fritz.box(router);
   subgraph intLAN[home network]
                        fritz.box-- port-forward<br>tcp/80<br>tcp/443 -->RP;
			RP[reverse proxy<br>https:\//your-nc-domain.com] 
			subgraph docker
				master[mastercontainer<br><br>https\://internal.ip.address.of.server:8080:<br>AIO-interface with self-signed cert];
				NC[APACHE_PORT<br>:11000];
				TALK[TALK_PORT<br>tcp/3478<br>udp/3478];
			end
			management[user]-- local -->master
		end
		RP--http-->NC
		fritz.box--port forward<br>tcp/3478<br>udp/3478-->TALK

AIO in home network without reverse proxy

flowchart LR
  internet-->fritz.box
   fritz.box(router);
   subgraph intLAN[home network]
   fritz.box--port-forward<br>tcp/3478<br>udp/3478-->TALK
   fritz.box-- port-forward<br>tcp/443<br>udp/443 -->NC;

			subgraph docker
				master[mastercontainer<br><br>https\://internal.ip.address.of.server:8080:<br>AIO-interface with self-signed cert];
				NC[APACHE_PORT<br>https\://your-nc-domain.com:443];
				TALK[TALK_PORT<br>:tcp/3478<br>:udp/3478];
			end
      user--local-->master
		end