Nextcloud¶
Was es tut¶
Die Nextcloud ist die Dateiablage des Vereins: Mitglieder, Arbeitsgruppen und Werkstätten legen dort Dokumente ab, teilen sie und bearbeiten sie gemeinsam im Browser. Dazu gehören Office-Dokumente (über Collabora), eine Volltextsuche und Vorschaubilder.
Wo es liegt¶
| Adresse | https://cloud.garage-lab.de |
| Host | werner |
| Stack-Datei | syslet/werner/stack-nextcloud-aio.cue |
| Begleitmaterial | apps/nextcloud/ |
| Upstream | Nextcloud All-in-One, Admin-Handbuch |
Verwaltet über¶
Beides.
Container, Anmeldung über Authentik, Mailversand und einige Grundeinstellungen stehen in der Stack-Datei.
Die Grundeinstellungen setzt ein Skript, das bei jedem Start im Container nextcloud-aio-nextcloud läuft und occ-Befehle ausführt (siehe configFiles in der Stack-Datei).
Apps, Freigaben und alle übrigen Einstellungen werden in der Admin-Oberfläche der Nextcloud gepflegt.
Aufbau¶
Wir nutzen die Images von Nextcloud All-in-One (AIO), aber ohne dessen Master-Container: Jeder Teil läuft als eigener Container, den syslet einrichtet.
flowchart LR
caddy["Caddy"]
subgraph stack ["Netzwerk nextcloud (intern)"]
apache["apache"]
nc["nextcloud"]
push["notify-push"]
office["collabora"]
search["fulltextsearch"]
img["imaginary"]
db["database"]
cache["valkey"]
end
caddy -->|cloud.garage-lab.de| apache
apache --> nc & push & office
nc --> db & cache & search & img
- apache nimmt die Anfragen von Caddy entgegen und verteilt sie.
- nextcloud ist die eigentliche App; die Dateien der Nutzerinnen und Nutzer liegen im Volume
nextcloud-aio-nextcloud-data. - notify-push benachrichtigt die Desktop- und Handy-Apps sofort über Änderungen.
- collabora ist das Office im Browser.
- fulltextsearch durchsucht den Inhalt der Dateien, imaginary erzeugt Vorschaubilder.
- database (Postgres) und valkey (Zwischenspeicher) gehören zur App; dazu kommt ein Exporter für das Monitoring.
Alle Container heißen mit vollem Namen nextcloud-aio-<teil>.
Die Vorlagen aus dem Handbuch von AIO, an denen sich die Stack-Datei orientiert, liegen in apps/nextcloud/aio-sample.cfg und aio-sample.yml; sie werden nicht ausgerollt.
Login / SSO¶
Angemeldet wird über Authentik per OIDC, mit der Nextcloud-App user_oidc (application_nextcloud.tf).
Neue Mitglieder kommen automatisch in die Gruppe „Nextcloud Access“.
Die Nextcloud übernimmt Gruppen aus Authentik: Die App-Gruppen für die Nextcloud, etwa „Vorstand“, die Arbeitsgruppen und die Werkstätten, kommen über den Claim groups als Gruppen in der Nextcloud an (siehe Gruppenmodell in Authentik).
Auch der Speicherplatz je Person kommt aus Authentik, aus dem Gruppen-Attribut nextcloud_quota.
Für den Notfall kann sich der lokale Admin ohne Authentik anmelden, unter https://cloud.garage-lab.de/login?direct=1&user=admin.
Backup¶
Gesichert werden ein Dump der Datenbank und das ganze Volume mit den Dateien.
Damit Dateien und Datenbank zusammenpassen, schaltet system-backup die Nextcloud für die Zeit des Dumps in den Wartungsmodus (siehe Backup).
Nach einem Restore müssen Dateien und Datenbank vom selben Lauf stammen.
Updates¶
Alle Images von AIO tragen denselben Tag, ein Datum; er steht in image: nextcloudaio: tag: oben in der Stack-Datei und gilt für alle Container zugleich.
Was sich ändert, steht in den Releases von Nextcloud All-in-One; vor jedem Update lesen (siehe Image-Version anheben).
Besonderheiten / bekannte Probleme¶
- Hinter Caddy (siehe Ingress mit Caddy): Der Ingress-Eintrag erlaubt Uploads bis 16 GB (
request_bodymitmax_size 16G), gibt die Adresse der Besucher zusätzlich alsX-Real-IPweiter und reicht Antworten ungepuffert durch (flush_interval -1). In der Nextcloud sorgenOVERWRITEHOSTundOVERWRITEPROTOCOL: httpsdafür, dass sie Links mit der öffentlichen Adresse undhttpserzeugt;APACHE_MAX_SIZEundPHP_UPLOAD_LIMITpassen zur Grenze von 16 GB. - Für Befehle in der Nextcloud gibt es auf werner die Kurzbefehle
nextcloud-shellundnextcloud-occ(siehe Statische Konfiguration). Die Installation reparieren lässt sich mitnextcloud-occ maintenance:repair --include-expensive. nextcloud.garage-lab.deist nicht diese Nextcloud, sondern zeigt auf eine Nextcloud beim Webhoster (Eintrag indesec/desec_garage_lab_de.cue).- Die PHP-Einstellungen sind gegenüber AIO angepasst, damit viele gleichzeitige Anfragen die Nextcloud nicht lahmlegen (Kommentar in der Stack-Datei).
- Konten per SCIM aus Authentik zu übertragen, ist geplant; bisher legt die Nextcloud ein Konto beim ersten Login an.
Entscheidungen¶
Wir nutzen die Images von AIO, aber nicht dessen Master-Container. Der Master-Container von AIO richtet die übrigen Container selbst ein und braucht dafür Zugriff auf Podman. Damit stünde der Aufbau nicht im Repo, und syslet könnte ihn nicht verwalten. Die Images von AIO sind dagegen fertig aufeinander abgestimmt.