Hallo Andreas,

ich würde dir sowohl bei der Nextcloud im speziellen, als auch allgemein von Docker abraten. Ich habe grundsätzlich nichts gegen Container, wenn sie vernünftig gebaut sind, aber die Konstellation ist kein guter Start.

Die Nextcloud funktioniert im Container schlechter als standalone. Updates fordern mehr (manuelle) Nacharbeit, als einfach nur den Container zu aktualisieren. Wenn ein Plugin da drin nicht funktioniert ist die Fehlersuche komplizierter. All-in-one hab ich nie richtig zum laufen gebracht.

Docker (der Daemon) ist eine Zumutung, vollkommem irrationales Verhalten im Netzwerkbereich und da er sich bei iptables vordrängelt, bohrt er große Löcher in die Firewall. Mit nftables kann docker nichts anfangen.

Ansonsten würde ich da immer einen nginx als Proxy davor setzen, der sich um https kümmert, sonst ist der Port 443 für den einen Container verbraucht.

Ich setze als Alternative für Docker auf Podman. Hier kannst du die Container auch im User-Mode starten und hast damit auch weniger Sicherheitsprobleme, da Docker die Container immer als root startet.

Bei mir läuft homeassistant auf einem Pi4 als Container mit podman und einem nginx-Proxy direkt auf dem Pi. Und dazu noch der certbot für die SSL-Zertifikate.

Gruß Rico


Am 05.11.25 um 23:14 schrieb Andreas Oettel:
Hallo zusammen,


Ich benötige mal Eure Hilfe. Ich scheitere gerade am Grundverständnis, wo mein Problem liegt.


Ich habe einen Raspi 5.
Der hängt an einem Telekomrouter und ist über einen DynDNS-Provider (Selfhost.de) ansprechbar.


Auf dem Raspi habe ich Docker drauf installiert. (Ich habe 0 Erfahrung damit und möchte mich damit beschäftigen.)
Erstes Spielobjekt ist Nextcloud. (Ist für mich auch neu.)
Dazu habe ich mir von "hub.docker.com"  "nextcloud/all-in-one" runtergeladen.


Nächster Schritt war die zur Verfügung gestellte Installationsanleitung abzuarbeiten: https://nextcloud.com/blog/how-to-install-the-nextcloud-all-in-one-on- linux/
Die Konfigurationsseite habe ich zuerst von Intern aufgerufen
https://127.0.0.1:8080

Beim Punkt 7 der Anleitung - Angabe der Domaine - war die Erfolgsstory auch schon beendet.

Wenn ich im Feld für die Domaine den Namen, über den der Rechner erreichbar ist, nenne wir ihn mal zum Beispiel raspi5.selfhost.eu, eintrage, kommt die Meldung das die Seite nicht erreichbar ist:

The domain is not reachable on Port 443 from within this container. Have you opened port 443/tcp in your router/firewall? If yes is the problem most likely that the router or firewall forbids local access to your domain. You can work around that by setting up a local DNS-server.


Ok! Das hängt mit dem Telekomrouter zusammen, dachte ich mir. Der bekommt es sicherlich nicht hin, Anfragen, die von intern kommen, sauber raus und dann wieder hinein zu routen. In der Datei /etc/hosts habe ich deshalb die interne IP vom Raspi eingetragen:
192.168.2.128     raspi5.selfhost.eu

(Im Telekomrouter gibt es eine Weiterleitung auf den Port 443 und Port 3478, wie in der Anleitung beschrieben)

Das hilft aber nicht. Die Fehlermeldung bleibt.

Ebenso hilft es nicht die IP's der Dockernetzwerke anzugeben (172.18.0.1; 172.17.0.1; 172.18.0.3).


---- Die IP vom Docker ist laut ifconfig ----

br-ae134de8761d: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255
         inet6 fe80::58a0:89ff:fe51:5669  prefixlen 64  scopeid 0x20<link>
         ...

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
         inet6 fe80::6458:deff:feea:4a47  prefixlen 64  scopeid 0x20<link>
         ...

---- Die Ausgabe zu "iptables-nft -L -n -v" ----

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target                         prot opt in     out  source              destination  5677  648K DOCKER-USER          0    --      *      *  0.0.0.0/0 0.0.0.0/0  5677  648K DOCKER-FORWARD  0    --      *      *       0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source  destination

Chain DOCKER (2 references)
 pkts bytes   target     prot opt in                         out            source               destination     4   240     ACCEPT     6    --  !br-ae134de8761d br-ae134de8761d 0.0.0.0/0            172.18.0.3           tcp dpt:443     0     0       ACCEPT     6    --  !br-ae134de8761d br-ae134de8761d 0.0.0.0/0            172.18.0.2           tcp dpt:8443     8   424     ACCEPT     6    --  !br-ae134de8761d br-ae134de8761d 0.0.0.0/0            172.18.0.2           tcp dpt:8080     5   252     ACCEPT     6    --  !br-ae134de8761d br-ae134de8761d 0.0.0.0/0            172.18.0.2           tcp dpt:80     0     0       ACCEPT     6    --  !docker0 docker0  0.0.0.0/0 172.17.0.2           tcp dpt:9443     0     0       ACCEPT     6    --  !docker0 docker0  0.0.0.0/0 172.17.0.2           tcp dpt:8000     0     0       DROP       0    --  !docker0 docker0  0.0.0.0/0 0.0.0.0/0     0     0       DROP       0    --  !br-ae134de8761d br-ae134de8761d 0.0.0.0/0            0.0.0.0/0

Chain DOCKER-BRIDGE (1 references)
  pkts bytes target     prot opt in     out  source  destination
     0     0     DOCKER     0    --  *      docker0   0.0.0.0/0   0.0.0.0/0
  605 32556 DOCKER     0    --  *      br-ae134de8761d  0.0.0.0/0 0.0.0.0/0

Chain DOCKER-CT (1 references)
  pkts bytes target     prot opt in     out  source  destination
   77 26152 ACCEPT     0    --  *      docker0 0.0.0.0/0 0.0.0.0/0       ctstate RELATED,ESTABLISHED  2137  309K ACCEPT     0    --  *      br-ae134de8761d  0.0.0.0/0 0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain DOCKER-FORWARD (1 references)
 pkts bytes target                                         prot opt  in                     out     source  destination  5677  648K DOCKER-CT                              0    --   *     *       0.0.0.0/0            0.0.0.0/0  3463  313K DOCKER-ISOLATION-STAGE-1  0    --          *   *  0.0.0.0/0            0.0.0.0/0  3463  313K DOCKER-BRIDGE                      0    --          *             *       0.0.0.0/0            0.0.0.0/0    83 11761 ACCEPT                                     0    -- docker0                *       0.0.0.0/0 0.0.0.0/0  2775  269K ACCEPT                                     0    -- br- ae134de8761d *       0.0.0.0/0            0.0.0.0/0

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target                                     prot opt in                out                     source      destination    83 11761 DOCKER-ISOLATION-STAGE-2  0    --  docker0      !docker0             0.0.0.0/0            0.0.0.0/0  2775  269K DOCKER-ISOLATION-STAGE-2  0    --  br-ae134de8761d !br- ae134de8761d  0.0.0.0/0            0.0.0.0/0

Chain DOCKER-ISOLATION-STAGE-2 (2 references)
  pkts bytes target     prot opt   in     out        source  destination
    0     0 DROP           0    --      *      br-ae134de8761d 0.0.0.0/0            0.0.0.0/0     0     0 DROP           0    --      *      docker0 0.0.0.0/0     0.0.0.0/0

Chain DOCKER-USER (1 references)
  pkts bytes target     prot opt in     out     source  destination

---- Ende ----


Habt Ihr eine Idee warum der Port 443 aus dem Container heraus als nicht erreichbar gilt?

Hat das manchmal mit dem Zertifikat zu tun? Kann es sein, dass die oben geschriebene Fehlermeldung eigentlich in die Irre führt, der Port offen ist, aber das Zertifikat die Kommunikation verhindert?

Wenn ich von außerhalb auf raspi5.selfhost.eu zugreife, kommt ein ERR_SSL_Protocol_ERR.

Wenn ich von intern auf raspi5.selfhost.eu zugreife kommt SSL_ERROR_RX_RECORD_TOO_LONG


Viele Grüße

Andreas





Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Antwort per Email an