Zum Inhalt

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_body mit max_size 16G), gibt die Adresse der Besucher zusätzlich als X-Real-IP weiter und reicht Antworten ungepuffert durch (flush_interval -1). In der Nextcloud sorgen OVERWRITEHOST und OVERWRITEPROTOCOL: https dafür, dass sie Links mit der öffentlichen Adresse und https erzeugt; APACHE_MAX_SIZE und PHP_UPLOAD_LIMIT passen zur Grenze von 16 GB.
  • Für Befehle in der Nextcloud gibt es auf werner die Kurzbefehle nextcloud-shell und nextcloud-occ (siehe Statische Konfiguration). Die Installation reparieren lässt sich mit nextcloud-occ maintenance:repair --include-expensive.
  • nextcloud.garage-lab.de ist nicht diese Nextcloud, sondern zeigt auf eine Nextcloud beim Webhoster (Eintrag in desec/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.

Weiterlesen