Ich schreibe hier einfach mal meine Configs rein für Nextcloud-Docker, wie ich es nutze. Vielleicht hilft es ja^^:
compose.yml
Code:
---
services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
container_name: nextcloud
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- ./config:/config
- ./data:/data
ports:
- <Eigene IP>:443:443
restart: unless-stopped
depends_on:
- db
- appapi-harp
- collabora
db:
image: postgres:18
restart: unless-stopped
# set shared memory limit when using docker compose
shm_size: 512mb
environment:
POSTGRES_PASSWORD: <PW1>
POSTGRES_USER: nextcloud
POSTGRES_DB: nextcloud
PGDATA: /var/lib/postgresql/18/docker
TZ: Europe/Berlin
PGTZ: Europe/Berlin
volumes:
- ./db:/var/lib/postgresql
appapi-harp:
environment:
- HP_SHARED_KEY=<PW2>
- NC_INSTANCE_URL=https://cloud.example.de
- HP_TRUSTED_PROXY_IPS=<IP ProxyServer ODER IP-Netz/Netz>
- HP_EXAPPS_ADDRESS=<Eigene IP>:8780
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./certs:/certs
container_name: appapi-harp
hostname: appapi-harp
restart: unless-stopped
network_mode: host
image: ghcr.io/nextcloud/nextcloud-appapi-harp:release
depends_on:
- db
collabora:
image: collabora/code:latest
container_name: collabora
ports:
- '<Eigene IP>:9980:9980'
environment:
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:net.proto=IPv4
- domain=office.example.de
- username=<username>
- password=<PW3>
restart: unless-stopped
depends_on:
- db
- appapi-harp
Alles zwischen < und > mit eigenen Werten ersetzen. Ich nutze auch Collabora Office, dafür braucht man eine zweite Domäne (ich habe einfach "cloud.example.de" und "office.example.de" benutzt; natürlich ebenfalls entsprechend anpassen).
Optional:
Für PUID und PGID kann man auch eigene sog. Service-Nutzer generieren. Habe ich gemacht mit:
groupadd -r docker_nx
Systemgruppe "docker_nx" erstellen.
useradd -r -s /bin/false -M -d /dev/null -g docker_nx docker_nx
User "docker_nx" erstellen; Systemnutzer (d.h. UID unter 1000, wird idR. nicht bei Anmeldedialogen gezeigt), kein Homeverzeichnis erstellen, Homeverzeichnis ist /dev/null, keine Shell (/bin/false).
usermod -L docker_nx
Benutzer zusätzlich "locken" (sperren).
Jetzt kann man sich mit
id docker_nx die
uid und die
gid anzeigen lassen; diese Werte kann man für PUID und PGID verwenden.
---
Bezüglich App-API HARP muss ich gestehen, ich weiß nicht mehr ob da noch mehr nötig war. Ich glaube nicht, ich konnte das mit meinem ReverseProxy erschlagen.
---
Für den Zugriff übers Internet nutze ich Caddy als ReverseProxy, der auf einer anderen Kiste läuft. Das Ding holt sich standardmäßig Lets Encrypt-Zertifikate, ohne dass man was dafür tun muss.
Meine /etc/caddy/Caddyfile sieht so aus:
Code:
cloud.example.de {
redir /.well-known/carddav /remote.php/dav 301
redir /.well-known/caldav /remote.php/dav 301
redir /.well-known/webfinger /index.php/.well-known/webfinger 301
redir /.well-known/nodeinfo /index.php/.well-known/nodeinfo 301
header {
Strict-Transport-Security "max-age=15552000;"
}
reverse_proxy /exapps/* <IP von Nextcloud>:8780
reverse_proxy https://<IP von Nextcloud>:443 {
transport http {
tls
tls_insecure_skip_verify
}
}
}
office.example.de {
@denied {
path /browser/dist/admin/admin.html
}
respond @denied 403
reverse_proxy <IP von Nextcloud>:9980
}
NACHDEM man mit der Installation von Nextcloud durch ist (sprich: "cloud.example.de" aufrufen und den Installationsschritten folgen), muss man noch den sog. HA-API konfigurieren, wähernd man mit Admin-Rechten auf der Nextcloud-Seite ist:
EDIT:
https://decatec.de/home-server/nextcloud-mit-externen-apps-erweitern-appapi-mit-harp/
Auf der Seite wird gezeigt wie man HA-API auf andere Weise installiert (für uns eher irrelevant), allerdings wird auch mit Screenshots gezeigt, wie man die Bereitschaft testet.
Wie wichtig die HA-API ist? Momentan kann man die, glaube ich, zur Not auch einfach vollständig ignorieren, allerdings planen die Nextcloud-Macher wohl mittel- und langfristig, dass HA-API mal zur Pflicht wird, weil künftig AddOns und Apps von Nextcloud die Schnittstelle nutzen sollen... Wollt ich der Vollständigkeit halber erwähnt haben^^.
---
Office ist leicht zu konfigurieren: "Verwenden Sie Ihren eigenen Server" auswählen und die URL "https://office.example.de" eingeben. Kann sein, dass man vorher die entsprechende App in der Nextcloud-Weboberfläche installieren muss (das weiß ich nicht mehr).
Tipp: Man kann seine Nextcloud-Instanz über
https://scan.nextcloud.com kostenlos scannen lassen um zu testen, wie gut die eigene Nextcloud-Instanz abgesichert ist.
EDIT:
TLDR; man kann da (leider) einiges an Zeit investieren. Ich hab mir die Config so aus verschiedensten Suchergebnissen zusammengesucht und teilweise (HA-API) auch ChatGPT befragt. Ich bin sehr froh dass ich die Config mittlerweile so fertig habe - die funktioniert bei mir einwandfrei und läuft so bei mir seit gut drei Monaten mittlerweile. Aller Aufwand zum Trotz ist es halt schon nice, u.a. ein eigenes, selbstgehostetes Office-Paket im Browser zu haben^^.
Updates sind da, einmal eingerichtet, schnell abgefrühstückt mit zwei Befehlen:
docker compose pull
docker compose up -d
Wie man meinem Beitrag aber möglicherweise anmerkt: Ich fühle mich in der Kommandozeile wohl und habe kein Problem, z.B. auch mal ein
docker compose down -t 30 auszuführen und dann mittels
tar-Befehl einfach das komplette Verzeichnis wegzusichern. Ich brauche keine Nextcloud-AIO, das Ding war bei meinen Versuchen leider immer etwas instabil...