Nextcloud

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

Nextcloud-Installationen gewinnen neben den Clouddiensten iCloud, OneDrive, GoogleDrive, ... mehr und mehr an Bedeutung. Hier schraenke ich mich bewuszt auf "Netzerreichbare-Dateispeicher" ein. Das Thema: "Warum muss mein Wischroboter, oder meine Solaranlage mit der Cloud des Herstellers verbunden sein?" grenze ich hier aus.

Im Folgenden wird Nextcloud auch als NC abgekuerzt.

Installation

Eigentlich habe ich diese Seite nur angefangen weil ich die Testinstallation erfoglreich hinter mir habe, aber die Installation auf dem Hauptserver noch ein wenig in der Zukunft liegt und ich befuerchte, dass ich bis dahin vieles vergessen habe.

Ich habe mich fuer das Docker-Image Nextcloud-AIO entschieden.

https://nextcloud.com/install/#instructions-server

Die kleine Huerde, die es dabei zu ueberwinden galt, lag daran, dass man zwar wenig bis gar keinen Aufwand mit der Installation von NextCLoud hat, aber der Docker verstanden werden wollte.

Falls noch nicht geschehen: 
zypper in docker
systemctl enable docker 
systemctl start docker
systemctl status docker

Docker hat fuer mich den Vorteil gegenueber der nativen Installation von Nextcloud, dass es keine Anpassung an meinem Testsystem erfordert und mit nur einem Befehl vollstaendig loeschbar ist. An dem Punkt bin ich jetzt. Mit den folgenden Befehlen kann ich in wenigen Minuten NC auf dem Hauptserver installieren.

Nachdem der obige Befehl ausgefuehrt wurde, laedt docker alle benoetigten Dateien herunter und starten den Container.

tester:~ # docker run --sig-proxy=false --name nextcloud-aio-mastercontainer --restart always --publish 8088:8080 --publish 8443:8443 --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config --volume /var/run/docker.sock:/var/run/docker.sock:ro nextcloud/all-in-one:latest
Lorem ipsum sample
Unable to find image 'nextcloud/all-in-one:latest' locally
latest: Pulling from nextcloud/all-in-one
025c56f98b67: Pull complete 
db4ab4019a6f: Pull complete 
19c3d46c565a: Pull complete 
7d52c3b9728a: Pull complete 
075f56345cf3: Pull complete 
84f1e4bf8884: Pull complete 
33c195cea794: Pull complete 
23c53708753b: Pull complete 
3bba2691b9ce: Pull complete 
ffec2fbde892: Pull complete 
28e5d9f2c72e: Pull complete 
af4d79f95c00: Pull complete 
c765960147ec: Pull complete 
433c435dc998: Pull complete 
931eecc0b557: Pull complete 
4f4fb700ef54: Pull complete 
4f65455d2aab: Pull complete 
0130ba195030: Pull complete 
2922efda53b6: Pull complete 
79c11337b270: Pull complete 
929b6b06c4eb: Pull complete 
84e7dad5be4e: Pull complete 
a81a7c8ece79: Pull complete 
0be6f4d4a36a: Pull complete 
b902568d1ad9: Pull complete 
5a6fa0684320: Pull complete 
222cf15fcfdc: Pull complete 
e6ff8c512816: Pull complete 
7124e0ee7d8f: Pull complete 
3e87e0850127: Pull complete 
52ee1408a8bf: Pull complete 
42ae8e3a3495: Pull complete 
0d7aa4344984: Pull complete 
f6dbf83c02f7: Pull complete 
abaafdc65d9b: Pull complete 
9647a4d41fb1: Pull complete 
Digest: sha256:d175f6968398e8d83e4d8298b30e54bcc7fe3cba0f89643b3aeb3d8f88865dbb
Status: Downloaded newer image for nextcloud/all-in-one:latest
Trying to fix docker.sock permissions internally...
Creating docker group internally with id 460
WARNING: No swap limit support
Initial startup of Nextcloud All In One complete!
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!                                                                                                                                                                                                         
E.g. https://internal.ip.of.this.server:8080                                                                                                                                                                                                                                                    

If your server has port 80 and 8443 open and you point a domain to your server, you can get a valid certificate automatically by opening the Nextcloud AIO Interface via:                                                                                                                       
https://your-domain-that-points-to-this-server.tld:8443                                                                                                                                                                                                                                         
{"level":"info","ts":1671299083.1788526,"msg":"using provided configuration","config_file":"/Caddyfile","config_adapter":""}
{"level":"warn","ts":1671299083.1834624,"msg":"Caddyfile input is not formatted; run the 'caddy fmt' command to fix inconsistencies","adapter":"caddyfile","file":"/Caddyfile","line":2}
{"level":"info","ts":1671299083.1863241,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"warn","ts":1671299083.1877985,"logger":"http","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server","server_name":"srv0","http_port":80}
{"level":"warn","ts":1671299083.1891508,"logger":"http","msg":"automatic HTTP->HTTPS redirects are disabled","server_name":"srv1"}
{"level":"info","ts":1671299083.1883948,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc000030f50"}
{"level":"warn","ts":1671299083.1908963,"logger":"tls","msg":"YOUR SERVER MAY BE VULNERABLE TO ABUSE: on-demand TLS is enabled, but no protections are in place","docs":"https://caddyserver.com/docs/automatic-https#on-demand-tls"}
{"level":"info","ts":1671299083.192293,"logger":"http","msg":"enabling HTTP/3 listener","addr":":8443"}
{"level":"info","ts":1671299083.1925411,"msg":"failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details."}
{"level":"info","ts":1671299083.1927714,"logger":"http.log","msg":"server running","name":"srv1","protocols":["h1","h2","h3"]}
{"level":"info","ts":1671299083.1928852,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"error","ts":1671299083.1930034,"msg":"unable to create folder for config autosave","dir":"/root/.config/caddy","error":"mkdir /root/.config: permission denied"}
{"level":"info","ts":1671299083.19303,"msg":"serving initial configuration"}
{"level":"info","ts":1671299083.1931806,"logger":"tls","msg":"cleaning storage unit","description":"FileStorage:/mnt/docker-aio-config/caddy/"}
{"level":"info","ts":1671299083.1932275,"logger":"tls","msg":"finished cleaning storage units"}
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Dec 17 17:44:43.258243 2022] [ssl:warn] [pid 104] AH01906: 172.17.0.2:8080:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sat Dec 17 17:44:43.258800 2022] [ssl:warn] [pid 104] AH01909: 172.17.0.2:8080:0 server certificate does NOT include an ID which matches the server name
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Dec 17 17:44:43.324935 2022] [ssl:warn] [pid 104] AH01906: 172.17.0.2:8080:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sat Dec 17 17:44:43.326166 2022] [ssl:warn] [pid 104] AH01909: 172.17.0.2:8080:0 server certificate does NOT include an ID which matches the server name
[Sat Dec 17 17:44:43.334314 2022] [mpm_prefork:notice] [pid 104] AH00163: Apache/2.4.54 (Debian) PHP/8.0.26 OpenSSL/1.1.1n configured -- resuming normal operations
[Sat Dec 17 17:44:43.335508 2022] [core:notice] [pid 104] AH00094: Command line: 'apache2 -D FOREGROUND'
 tester:~ # docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED        STATUS                  PORTS                                                                                          NAMES
c6f94528939a   nextcloud/aio-domaincheck:latest   "/start.sh"              15 hours ago   Up 15 hours (healthy)   0.0.0.0:443->443/tcp, :::443->443/tcp                                                          nextcloud-aio-domaincheck
76e362ee7aef   nextcloud/all-in-one:latest        "start.sh /usr/bin/s…"   16 hours ago   Up 16 hours (healthy)   80/tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp, 0.0.0.0:8088->8080/tcp, :::8088->8080/tcp   nextcloud-aio-mastercontainer

Nextcloud benoetigt drei (offene) Ports 443, 8443 und 8080. 443 ist nicht veraenderbar. An diesem Port checkt NC den Domainnamen des Servers. Dies koennte bei DynDNS angebunden Server u.U. Probleme bereiten. Da ich es nicht ausprobieren werde, bin fuer Kommentare Ergaenzungen, Erfahrungen #See RFC dankbar. Ich nutze einen Domainnamen, den ich per DNS Record A ueber eine API anpasse und der per LetsEncrypt oder ProviderSSL verschluesselte Verbindungen erlaubt.

Der nextcloud/aio-domaincheck greift auf den (Apache-)Server zu und erwartet von dort eine Antwort. Es reicht aber wohl eine Pseudo-Installation. Das muss ich noch ausprobieren. Zum Einloggen in NC dient bei mir der Port 8088 der auf das Docker Image auf Port 8080 umgeleitet wird. Die eigentliche Kommunikation geschieht dann ueber Port 8443, den ich auf dem Default-Wert gelassen habe.

Zum Handling:

 tester:~ # docker images
REPOSITORY                  TAG       IMAGE ID       CREATED      SIZE
nextcloud/all-in-one        latest    30e3a63e0b77   9 days ago   688MB
nextcloud/aio-domaincheck   latest    601a14d195d4   9 days ago   13.2MB
tester:~ # docker stop nextcloud-aio-mastercontainer
tester:~ # docker start nextcloud-aio-mastercontainer

Docker startet/sucht den das Image im aktuellen Verzeichnis.

tester:~ # docker rm nextcloud-aio-mastercontainer
tester:~ # docker rmi nextcloud/all-in-one
tester:~ # docker container ls
 tester:~ # docker container stats
CONTAINER ID   NAME                        CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O       PIDS
c6f94528939a   nextcloud-aio-domaincheck   0.00%     2.219MiB / 3.584GiB   0.06%     84.8kB / 99.7kB   332kB / 4.1kB   2

Hier habe ich noch ein wenig rumprobiert, bis ich einen passenden freien Port (8888 oder 8080 oder 8081 ... ) gefunden hatte.

 tester:~ # ss -pean|grep 8888
u_str              LISTEN              0                    128                                                                    /var/run/docker/metrics.sock 173888885                                             * 0                        users:(("dockerd",pid=32231,fd=10)) <-> ino:173888886 dev:0/24 peers:          
u_str              ESTAB               0                    0                                                                                                 * 173888887                                             * 173889560                users:(("dockerd",pid=32231,fd=11)) <->                                        
u_str              ESTAB               0                    0                                                                                                 * 173888890                                             * 173888891                users:(("dockerd",pid=32231,fd=12)) <->                                        
u_str              ESTAB               0                    0                                                        /var/run/docker/containerd/containerd.sock 173889560                                             * 173888887                users:(("containerd",pid=32247,fd=12)) <-> ino:173889549 dev:0/24              
u_str              ESTAB               0                    0                                                                                                 * 173888866                                             * 173889550                users:(("dockerd",pid=32231,fd=9)) <->                                         
u_str              ESTAB               0                    0                                                        /var/run/docker/containerd/containerd.sock 173888891                                             * 173888890                users:(("containerd",pid=32247,fd=13)) <-> ino:173889549 dev:0/24              
u_str              ESTAB               0                    0                                                        /var/run/docker/containerd/containerd.sock 173889550                                             * 173888866                users:(("containerd",pid=32247,fd=11)) <-> ino:173889549 dev:0/24              
tcp                LISTEN              0                    128                                                                                         0.0.0.0:8888                                            0.0.0.0:*                        users:(("httpd-prefork",pid=19936,fd=4),("httpd-prefork",pid=19935,fd=4),("httpd-prefork",pid=19934,fd=4),("httpd-prefork",pid=19933,fd=4),("httpd-prefork",pid=19932,fd=4),("httpd-prefork",pid=19911,fd=4)) ino:184260340 sk:1d7 <->

Falls das Installationspassword mal verloren geht:

cat /var/lib/docker/volumes/nextcloud_aio_mastercontainer/_data/data/configuration.json | grep password

Links

https://www.techhut.tv/nextcloud-all-in-one-server-setup-guide/

https://help.nextcloud.com/t/nextcloud-aio-install-location-of-the-backup-archive/142893

Request for Comments


Kommentar hinzufügen
TippvomTibb freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, registriere dich bitte oder melde dich an.