defaults | ||
files/fail2ban | ||
handlers | ||
meta | ||
tasks | ||
templates | ||
.gitignore | ||
README.md |
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 unternextcloud_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
oderPostgreSQL
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
oderNginx
- 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.