Unraid x Nextcloud x Onlyoffice
Dieser Eintrag beschreibt den Vorgang einer Nextcloud Installation auf Unraid und die anschließende Anbindung an eine Selbstgehostete Onlyoffice Instanz. Zusätzlich wird eine MariaDB Datenbank angelgt und die Zugriffzeiten mit Redis optimiert. Onlyoffice wurde dabei gewählt um eine bessere Kompatibilität mit der O365 Suite von Microsoft gewährleisten zu können.
Ziel soll es sein eine flüssige Installation anbieten zu können welche ebenfalls im Nextcloud Security Scan eine Wertung von A+ erreicht.
Spoiler:
Vorbereitung
- Abgeschlossene Unraid Installation und Ersteinrichtung
- Alle Installation können direkt aus dem Unraid Community Store heruntergeladen werden
- Erstellung eines Custom Netzwerks "nextcloud" dieses kann über die Unraid Shell mit dem Befehl:
erstellt werden.docker network create nextcloud
Erstellung der Datenbank
Grundlage eine Nextcloud Installation stellt eine Datenbank da. Hier werden alle Daten und Porgramm-Einstellungen abgespeichert. Diese Datenbank muss bei der Ersteinrichtung der Nextcloud angebeben werden, weshalb eine vorherige Einrichtung lohnenswert ist.
Als Datenbank würde sich für eine MariaDB, MySQL Datenbank entschieden. Diese ist besonderes einfach einzurichten, zufärllässig und kann einfach gebackuped werden. Als Installations-Image nutzen wir das mariadb des linuxserver's Repository Networks. Diese erhalten regelmäßig Updates und haben sich bereits in der Vergangenheit als Stabil und zuverlässig herausgestellt.
Installiert wurde das Ganze mit folgenden Einstellungen:
Wichtig dabei ist, dass die Kennworter nicht verloren gehen und der Appdata Pfad angepasst wird. Hier empfiehlt es sich die Datenbank entweder auf dem Unraid Cache oder auf SSDs zu legen umd die Zugriffzeiten zuminimieren und somit die Leistung der Nextcloud stark zu steigern. Zusätzlich muss bei Netzwerktyp, das zuvor erstellte Netzwerk "nextcloud" ausgwählt werden.
Der MYSQL_USER, MYSQL_PASSWORD sind später für Nextcloud wichtig und werden des Weiteren auch für die Backups benötigt. Sind alle Einstellungen angepasst kann die Installation gestartet werden. Anschließend sollte die Datenbank unter "Docker" erscheinen.
Redis Installation
Bei Redis handelt es sich um eine In-Memory-Datenbank mit einer einfachen Schlüssel-Werte-Datenstruktur, was es zu einer No-SQL-Datenbank macht. In unserem Fall fungiert Redis dabei als Cache, zwischen der MySQL-Datenbank und der eigentlichen Nextcloud Installation. Genutzt wird hier das Offizielle Image.
Redis kann dabei ebenfalls aus dem AppStore installiert werden. Hier wurden folgenden Einstellungen getroffen:
Auch hier ist nicht zu vergessen, dass als Netzwerktyp, das zuvor erstellte Netzwerk "nextcloud" ausgwählt wird. Die Installation ist anschließend ebenfalls unter Docker aufzufinden:
Nextcloud Installation
Jetzt wo wir alle nötigen Voirbereitungen getroffen haben, kann zur tatsächlichen Nextcloud Installation übergegangen werden, Hier wird sich wie zuvor auch am internenen Unraid Store bedient. Als Image wurde folgender gewählt:
Hier werden bei der Installation folgende Informationen mitgegeben;
Der Nextcloud Administration Account und die Datenbank werden beim ersten aufrufen der Webseite angelegt / hinterlegt. Nach der Installation sollte die App ebenfalls unter Docker auftauchen:
Die Weboberfläche ist anschließend über http://[Server-IP]:8666 erreichbar.
Ganz oben kann hier der Administratoren Account mit Passwort angelegt werden. Um die Datenbank zu verbinden muss auf "Speicher & Datenbank" geklickt werden. Anschließend kann auf "MySQL/MariaDB" gewechselt werden und hier die Daten für den Datenbankzugriff hinterlegt werden. Wichtig ist hier, dass nicht der root User der Datenbank hinterlegt werden muss sondern der normale nexctloud_db_user mit zugehörigen Passwort verwendet werden kann.
Der Port kann dabei aus der Docker-Ansicht entnommen werden:
Wechselt man kurz nach der Anmeldung in die Verwaltungseinstellungen der Nextcloud, tauchen zunächst einmal einige Fehler und Warnungen auf. Ziel ist es alle Fehler zu beheben. Das wichtigste Mittel ist hierbei die config.php der Nextcloud Installation. Hier werden alle wichtigen Einstellungen eingetragen. Diese kann unter /mnt/user/appdata/nextcloud/apps gefunden und bearbeitet werden. Im folgenden folgt die angepasste .php mit allen nötigen Änderungen
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'upgrade.disable-web' => true,
'instanceid' => 'och24yrhp7tx',
'passwordsalt' => 'NXieKl9vsdfsdteQZKhk6Wc745345sIxmIoLeynDkh',
'secret' => 'DbOSndjHFi0vnEJb2aB34534Zh8dAztCafgdfgZfsl/9f674hfdh56qJbi4cR9PYd2',
'trusted_domains' =>
array (
0 => 'cloud.deinedomain.com', //Domäne unter der die Nextcloud erreichbar sein soll. Gegen den "HTTPS"-Error
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '29.0.4.1',
'overwrite.cli.url' => 'https://cloud.deinedomain.com', //Domäne unter der die Nextcloud erreichbar sein soll. Gegen den "HTTPS"-Error
'overwriteprotocol' => 'https', //Gegen den "HTTPS"-Error -> Umleitung der HTTP Anfragen an HTTPS
'dbname' => 'nextcloud_db',
'dbhost' => 'nextcloud_db',
'dbport' => '8666',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud_db_user',
'dbpassword' => 'TestPasswort',
'installed' => true,
'maintenance_window_start' => 1,
'default_phone_region' => 'DE', //Einstellung der Telefonregion gegen den Ländercode Fehler
'mail_smtpmode' => 'smtp', //Hinterlegung der SMTP Information für Mailservice
'mail_smtpsecure' => 'ssl',
'mail_sendmailmode' => 'smtp',
'mail_domain' => 'deinedomain.de',
'mail_from_address' => 'service',
'mail_smtphost' => 'smtp.deinmailserver.de',
'mail_smtpport' => '465',
'mail_smtpauth' => 1,
'mail_smtpname' => '[email protected]',
'mail_smtppassword' => 'A3LdXPDLyD23428o56wTYN5VvaDTR%xTV4356Q4234U7p%GKuBJ',
'default_language' => 'de', //Standardsprache
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'nextcloud_redis', //redis Informationen gegen den "Memecache"-Fehler
'port' => 6379,
'timeout' => 0.0,
'password' => '',
),
'defaultapp' => '',
'activity_expire_days' => 1,
);
Wichtig sei hier gesagt das in unserem Fall ein Cloudflare Tunnel auf den Unraid Server aktiv ist. Durch einen einfachen Tunneleintrag und der Erstellung einer Sub-Domain kann hier die Domäne einfach zugeteilt werden. Alternativ wäre die auch mit dem NGINX proxy Manger möglich. Nach einem Neustart des Nextcloud Containers sollte die Fehlermeldungen nicht mehr da sein:
Die SMTP Einstellungen können ebennfalls direkt über die Verwaltungeinstellungen der Nextcloud angepasst werden. Das SMTP Passwort muss hier angelegt werden da es von Nextcloud gesaltet wird und somit nicht im Klartext in die config.php eingetragen werden kann. Die Einstellungen befinden sich dabei unter den Grundeinstellungen:
Hierrüber kann auch eine Test-Mail abgesendet werden.
Onlyoffice Installation & Anbindung
Als Texteditor wurde sich bereits im vorhinein für Onlyoffice entschieden. Diese wurde vor allem aus Kompatibilitätsgründen getroffen. Um Onlyoffice auf der Nextcloud anbinden zu können muss auf dem Unraid Server zunächst einmal ein Onlyoffice Image installiert werden. Als Image wurde folgendes gewählt:
In den Einstellungen wurden folgenden Änderungen getroffen:
Der Secret Key muss anschließend bei den Onlyoffice Nextcloud Einstellungen hinterlegt werden. Damit der nextcloud Server nun mit dem Onlyoffice Server kommunizieren kann muss im Nextcloud Appstore Onlyoffice Installiert werden.
Nach der Installation hat man in den Verwaltunsgeinstellungen Zugriff auf die Onlyoffice Einstellungen. Hier wird die IP eingetragen un der Secret Key. Damit die IP aber zunächst mit https angeben werden kann muss zunächst ein Zertifkat erstellt werden und in das Onlyoffice Verzeichnis abgelegt werden.