# Nextcloud für Privatanwender _Kontrolle über die Clouddaten wiedererlangen_
Jan Grosser@TroLUG, 2025-05-08
(Testweise in
reveal-md
erstellt)
--- ## Inhalt * Was ist Nextcloud? * Warum Nextcloud nutzen? * Meine Use Cases * Möglichkeiten des Deployments * Nextcloud auf dem eigenen Server * Hardware * Software * Nextcloud Konfiguration * Backup * `occ` Befehl --- ## Was ist Nextcloud? --- * Skalierbare
Groupware
(Dateien, Kontakte, Kalender, Chat, Webconferencing, ...) * Server-SW basiert auf `php` mit Web-Oberfläche * Clients für div. Desktop- und Mobil-OS verfügbar * FOSS: AGPLv2/3 * Entwickelt durch Nextcloud GmbH * Modular erweiterbar, auch durch Dritt-Anbieter * KI Assistenten * Integrationen mit Outlook, Sharepoint, Teams, ... * 2016 als Fork aus ownCloud hervorgegangen ---  ---  ---  ---  --- ## Warum Nextcloud nutzen? --- *
Pro:
* Hohe Kontrolle über die Verwendung der eigenen Daten * Modular auf den [individuellen Bedarf anpassbar](https://apps.nextcloud.com/) *
Contra:
* Aufwand für Einrichtung und laufende Pflege * Ggf. Aufwand bei Migration der Daten von anderen Diensten --- ## Meine Use Cases --- * Zentrale Ablage wichtiger Dokumente * Gemeinsamer Speicher für Bilder und Videos * Automatischer Upload von Bildern vom Mobilgerät (NC Android App) * Geteilte Kalender + Sync mit Mobilgeräten (CalDav) * Geteilte Kontakte + Sync mit Mobilgeräten (CardDAV) * Geteilte Listen (Einkaufen, Packlisten, Ideen, ...) * Bookmark-Synchronisierung (floccus Android App + Browser Extension) * Feedreader (NC News) * Persönliches Wiki (NC Collectives) --- ## Möglichkeiten für das Deployment --- | Variante | Vorteile | Nachteile | | -------------|------|------| | As-A-Service/Managed | keine eigene HW; autom. Updates | Funktionalität teilw. eingeschränkt | | Gemieteter Root-Server | keine lokale Hardware; volle Flexibilität beim SW-Stack | Pflegeaufwand für SW; kann echt teuer werden | | Vor Ort Server | Volle Flexibiliät bei HW + SW | Pflegeaufwand für HW + SW | --- ## Nextcloud auf dem eigenen Server --- ### Faktoren für die HW-Auswahl * Daten- und Zugriffsmenge * Anforderungen an Zuverlässigkeit und Verfügbarkeit * Budget für Anschaffung + Betrieb --- ### Rasperry Pi & Co? * SBC prinzipiell ok ab 4 GB RAM und USB 3.0 * Spezielle Distro: https://docs.nextcloudpi.com/ * Empfehlenswert: * Externe HDD über USB 3.0 oder SATA * Powered USB Hub * Single Board Computer teilweise teuer --- ### Alternativen zu Single Board Computer ---  ---  --- ### Thinclients oder NUCs * Häufig mit x86-64 Architektur * Günstig gebraucht zu bekommen * Teilweise energiesparend und passiv gekühlt * Teilweise können mehrere Platten via SATA/M.2 angeschlossen werden --- ### Generelle HW Empfehlungen * RAM wichtiger als CPU * Gigabit-Ethernet anstelle WiFi --- ### Software Architektur ---
--- ### Installations-Anleitungen * [Offizielle Nextcloud Installationsanleitung](https://docs.nextcloud.com/server/latest/admin_manual/installation/index.html) * [Beispiel-Installation unter Ubuntu GNU/Linux](https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html#next-steps) --- ### Ein paar Hinweise aus eigener Erfahrung --- ### Betriebssystem * Virtualisierung nutzen (z.B. VM oder LC in Proxmox) * Vor Änderungen/Upgrades Backup der VM/des LC machen * Bei Problemen kann das Backup sehr einfach zurückgesichert werden * Ressourcen (RAM, Cores, Speicher) können einfach angepasst werden, teilweise im laufenden Betrieb * Mein LC für NC hat 12GB für ausreichend Caching --- ### php * Einige wichtige Einstellungen in php sind erforderlich, bspw. in `/etc/php/8.4/apache2/php.ini`, insbesondere: * `output_buffering` deaktivieren * `memory_limit` erhöhen * `post_max_size` erhöhen * `upload_max_filesize` erhöhen --- ### Datenbank * Die Nutzung von NC ist datenbankintensiv * Unbedingt die Config der Datenbank anpasssen, bspw. in `/etc/mysql/mariadb.conf.d/50-server.cnf` * Siehe die [Config-Hinweise in der NC Doku](https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html) --- ### Memory Caching * Die NC Performance kann durch Caching von PHP Opcode deutlich verbessert werden * Dabei wird PHP als Bytecode im Speicher gehalten und muss nicht wiederholt geparsed und compiliert werden * Empfohlen wird dazu APCu * Siehe die [Config-Hinweise in der NC Doku](https://docs.nextcloud.com/server/19/admin_manual/configuration_server/caching_configuration.html#id1) --- ### Redis * NC sperrt (lock) Dateien, damit diese nicht durch gleichzeitige Zugriffe korrumpiert werden können. * Das erfolgt unabhängig davon, ob das Dateisystem ein Locking Feature hat oder nicht * Das Locking verhindern _nicht_, dass mehrere Nutzer eine Datei zur gleichen Zeit editieren * Std-mäßig wird die Datenbank (z.B. MariaDB) zum Management der Locks verwendet, was schnell ineffizient wird * Redis Caching Server ist die empfohlende Lösung, siehe [hier](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html) --- ### Nextcloud Konfiguration --- * `/var/www/html/nextcloud/config/config.php` * Beispiel: ``` 'oc8c0fd71e03', 'passwordsalt' => '515a13302a6b3950a9d0fdb970191a', 'trusted_domains' => array ( 0 => 'example.host' ), 'datadirectory' => '/var/www/nc-data', 'dbtype' => 'mysql', 'version' => '31.0.4.1', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbtableprefix' => 'oc_', 'dbuser' => 'nextcloud', 'dbpassword' => '1234', 'installed' => true, 'memcache.local' => '\\OC\\Memcache\\APCu', 'filelocking.enabled' => 'true', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => '/var/run/redis/redis-server.sock', 'port' => 0, 'timeout' => 0.0, ), ); ``` ---  --- ### Backup --- ### "Goldrand-Lösung" * Komplettes Backup der VM oder des LC * Im Fehlerfall ist NC super-schnell wieder hergestellt * Kann aber je nach Datenumfang eine Menge Speicherplatz belegen und Zeit dauern * Bei mir aktuell: * 9.9 GB für Betriebssystem (Ubuntu LC) * 248 GB für Daten, davon 71 GB gemeinsame Bilder --- ### Mein Vorgehen beim NC Backup * NC vor dem Backup _sperren_ (Maintenance Mode) * Folgende Daten via `restic` inkrementell sichern: * Dump der MariaDB Datenbank einschl. Datenbank `mysql` * Apache2 Verzeichnis, bspw. `/var/www/html/nextcloud` * NC Datenverzeichnis, bspw. `/var/nc-data` * OS Config, bspw. `/etc/apache2`, `/etc/php`, ... * NC nach Backup wieder _freigeben_ --- ### Der OCC Befehl --- * `occ` - ownCloud console * Kommandozeilen-IF für NC * Viele Server-Operationen durchführbar: * Upgrade, Wartung * Status-Informationen abrufen * Apps installieren, deinstallieren, konfigurieren * Benutzer verwalten * `occ` muss als Apache-Nutzer ausgeführt werden, bspw. `www-data`: ```bash sudo -u www-data php /var/www/html/nextcloud/occ [befehl] ``` --- * Beispiele: ```bash occ -V # NC Version occ status # NC Version + grundlegende Statusinfos occ status --output=json_pretty occ user:list occ app:list --output=json_pretty # Liste der Apps occ update:check occ maintenance:mode --on occ upgrade occ db:add-missing-indices # Ggf. nach Upgrade ``` * [Doku zum `occ` Befehl](https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html#) --- Danke!