Go to file
2024-03-23 23:38:50 +01:00
defaults Fix typo 2023-10-25 20:47:55 +02:00
files/fail2ban Nextcloud: Configure PHP cli via role 2023-10-23 07:51:09 +02:00
handlers Fixes 2023-10-25 18:35:43 +02:00
meta Update Nextcloud role to include Hiddenservice tasks 2023-05-21 23:01:31 +02:00
tasks lowercase database_type 2024-03-23 23:10:01 +01:00
templates Increase opcache 2024-03-23 23:38:50 +01:00
.gitignore Add gitignore 2023-10-25 17:44:11 +02:00
README.md lowercase database_type 2024-03-23 23:10:01 +01:00

Nextcloud

Diese Rolle installiert Nextcloud. Sie umfasst:

  • Einrichtung der Datenbank
  • Installation und Ersteinrichtung von Nextcloud
  • Anlegen eines Zertifikates + Konfigurarion des Reverse Proxies
  • Anlegen eines PHP-FPM-Master-Prozesses mit socket activation

Verfügbare Variablen

Zur Konfiguration von Nextcloud stehen zwei Dictionaries zur Verfügung. Unter groups_vars/all/nextcloud.yaml befinden sich im Dictionary default_occ_config die Default-Einstellungen für alle Instanzen.

Zur individuellen Konfiguration können weitere Variablen in den host_vars unter nextcloud_instaces als Dictionary occ_config angegeben werden. Beide Dictionaries werden beim Ausführen des Playbooks gemergt.

Die Struktur der Dictonaries muss dabei zwingend der Nextcloud-Syntax folgen. Diese lässt sich auf eine bestenden Instanz mit occ ausgeben:

occ config:list --private

Beispiel-Konfiguration:

default_occ_config:
  system:
    default_language: de
    default_locale: de_DE

nextcloud_instances:
  - name: coop.systemausfall.org
    user: nextcloud
    database: nextcloud
    database_type: PostgreSQL
    hiddenservice: true
    occ_config:
      apps:
        core:
          backgroundjobs_mode: cron
      system:
        mail_from: noreply
        mail_domain: systemausfall.org

Ausführen der Rolle

Vorbereitungen

Nextcloud lässt sich per Kommandozeile mittels occ recht umfangreich konfigurieren und steuern. Wichtig ist, dass die PHP-Variable apc.enable_cli: 1 gesetzt ist. Dies übernimmt die Rolle senselab.php passieren, wenn in den ensprechenden host_vars des Nextcloud-Servers folgendes gesetzt ist:

php_cli_config:
  apc.enable_cli: 1
  memory_limit: 512M
  ...

Neue Nextcloud-Instanz anlegen

  • Trage die Informationen zur neuen Instanz in die entsprechende host_vars-Datei unter nextcloud_instances ein:
    Variable Wert Beschreibung
    name string Domain-Name der Instanz
    alias string Array mit weiteren Domain-Alias-Namen für diese Instanz
    user string Name eines anzulegenden Systemnutzers, der den PHP-FPM-Prozess ausführt
    database string Name der anzulegenden Datenbank
    database_type string mariadb oder postgresql
    hiddenservice bol Richtet für die Instanz einen Onion Service ein
  • Lege in den host_vars den Webserver-Typ fest:
    Variable Wert Beschreibung
    nextcloud_webserver string Apache oder Nginx
  • Starte anschließend das Playbook:
    ansible-playbook playbooks/nextcloud.yml
    
  • Bei der Erstinstallation einer Nextcloud-Instanz gibt die Rolle anschließend die Anmeldeinformationen für den Admin-Zugang aus.

Tasks einzeln ausführen

Tasks können auch einzeln ausgeführt werden. Der Tasks configuration sollte immer mit hiddenservice ausgeführt werden (Reihenfolge ist wichtig):

ansible-playbook playbooks/nextcloud.yml --tags configuration,hiddenservice

Aktualisierung des Cores/ von Apps

Mit dem Skript nextcloud-updater können alle Nextcloud-Instanzen und die installierten Apps gleichzeitig aktualisiert werden.

Hinweise

Serverseitige Verschlüsselung

  • Bei der serverseitigen Verschlüsselung wird der Schlüssel im Klartext auf dem Server gespeichert. Sofern die Daten also nicht auf einem externen Speicher liegen, bringt dies keinen Sicherheitsgewinn.
  • In unseren Tests führte die serverseitige Verschlüsselung teilweise zu Problemen bei der Entschlüsselung.
  • Per occ lässt sich die Verschlüsselung wieder deaktivieren und alle Daten können in einem Schritt entschlüsselt werden.
    • Möglicherweise liegen dann immer noch Daten verschlüsselt vor (Dazu gibt es diverse Fehlerberichte). Mit dem PHP-Skript von Syseleven können die Daten entschlüsselt werden.