99 lines
4.3 KiB
Markdown
99 lines
4.3 KiB
Markdown
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.
|