Nextcloud ========= Diese Rolle installiert [Nextcloud](https://nextcloud.com). 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](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#config-commands) ausgeben: ```Shell occ config:list --private ``` Beispiel-Konfiguration: ```YAML 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](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#file-operations-label) 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: ```YAML 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: ```Shell 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): ```Shell 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](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html?highlight=occ+encryption#encryption-label) 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](https://github.com/syseleven/nextcloud-tools/blob/master/rescue/decrypt-all-files.php) können die Daten entschlüsselt werden.