Skip to main content

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.

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:
     
    docker network create nextcloud
    erstellt werden.

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.

image.png

Installiert wurde das Ganze mit folgenden Einstellungen:

image.png

image.png

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.

image.png

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.

image.png

Redis kann dabei ebenfalls aus dem AppStore installiert werden. Hier wurden folgenden Einstellungen getroffen:

image.png

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:

image.png

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:

image.png

Hier werden bei der Installation folgende Informationen mitgegeben;

image.png

image.png

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:

image.png

Die Weboberfläche ist anschließend über http://[Server-IP]:8666 erreichbar.

image.png

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.

image.png

Der Port kann dabei aus der Docker-Ansicht entnommen werden:

image.png

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:

image.png

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:

image.png

Hierrüber kann auch eine Test-Mail abgesendet werden.

image.png

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:

image.png

In den Einstellungen wurden folgenden Änderungen getroffen:

image.png

image.png

Der Secret Key muss anschließend bei den Onlyoffice Nextcloud Einstellungen hinterlegt werden. Damit der Nextcloud Container nun mit dem Onlyoffice Container kommunizieren kann, muss im Nextcloud Appstore, Onlyoffice Installiert werden.

image.png

Nach der Installation hat man in den Verwaltunsgeinstellungen Zugriff auf die Onlyoffice Einstellungen. Hier wird die IP und der Secret Key eingetragen. 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.

image.png

Das Zertifikat kann dabei direkt in der Unraid Shell erstellt werden und in den Onlyoffice Container abgelegt werden. Dazu wird zunächsteinmal die Container ID des Onlyoffice Containers benötigt. Diese kann per

docker ps

abgerufen werden. Für uns wichtig ist dabei die ID vor dem Container Namen,

image.png

Anschließend kann das Zertifkat erstellt und in dem Container abgelegt werden, Hierfür sind folgende Befehle notwendig:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout onlyoffice.key -out onlyoffice.crt

docker cp onlyoffice.crt a5d9408d6270:/var/www/onlyoffice/Data/certs/onlyoffice.crt
docker cp onlyoffice.key a5d9408d6270:/var/www/onlyoffice/Data/certs/onlyoffice.key

docker exec -it a5d9408d6270 chmod 600 /var/www/onlyoffice/Data/certs/onlyoffice.key
docker exec -it a5d9408d6270 chmod 644 /var/www/onlyoffice/Data/certs/onlyoffice.crt

Nachdem anschließend der Onlyofffice Container neugestartet wird und die Daten in den Verwaltungseinstellungen hinterlegt werden ist die Nutzung von Onlyoffice möglich. In den Verwaltunsgeinstellungen können anschließend weitere Änderungen vorgenommen werden.

image.png

Office Dokumente können nun in der Nextcloud direkt erstellt, geöffnet, bearbeitet oder freigegeben werden.

image.png

Die Bearbeitung erfolgt direkt im Nextcloud Fenster:

image.png

Hat man alle Änderungen vorgenommen, die config.php gemäß dem Beispiel angepasst erhält man nun beim Testen auf https://scan.nextcloud.com/ ein A+ Rating. Viel Spaß beim Nutzen deiner Nextcloud :)

image.png