Nextcloud Installation mit NFS-Mount (HowTo)

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Dieser Artikel beschreibt die Installation von Nextcloud, sowie das Einbinden eines externen Speichermediums in Nextcloud für die Speicherung der Daten. Für die Konfiguration wird zusätzlich zu Nextcloud noch MariaDB, Apache sowie PHP benötigt. Falls Sie eines der Pakete bereits installiert haben, können Sie den jeweiligen Schritt überspringen. Dieser Artikel zeigt die Installation des Webservers ohne SSL Verschlüsselung.

Die Vorteile, welche sich daraus ergeben, sind je nach Einsatzzweck verschieden:

  • Bessere und einfachere Skalierung
  • Weniger Speicherplatz im Host benötigt
  • Datensicherheit

Voraussetzungen

Für die beste Performance und Stabilität sind folgende Voraussetzungen empfohlen:

  • Ubuntu 24.04 LTS
    • 4 vCPUs
    • 4096 MB RAM
    • 15 GiB Speicher
  • MariaDB 10.11 oder 11.4
  • Apache 2.4 mit mod_php
  • PHP 8.2 oder latest

Der externe Speicher ist in unserem Beispiel ein NFS Share mit 50 GiB.

Installation benötigter Pakete

Die Installation beginnt mit MariaDB und PHP, wenn Sie dies schon eingerichtet haben können Sie mit der Nextcloud Installation beginnen.

MariaDB

Zu Beginn muss das MariaDB-Paket heruntergeladen und installiert werden:

root@sm-Nextcloud-Wiki-02:~# apt update && apt upgrade -y && apt install mariadb-server -y

Bei einer neuen MariaDB-Installation ist der nächste Schritt die Ausführung des mitgelieferten Konfigurations-Script:

root@sm-Nextcloud-Wiki-02:~# sudo mysql_secure_installation

Dies führt Sie durch eine Reihe von Eingabeaufforderungen, in denen Sie, falls gewünscht, einige Änderungen an den Sicherheitsoptionen Ihrer MariaDB-Installation vornehmen können.

Im ersten Schritt wird ein Root-Passwort abgefragt, da per Default keins konfiguriert ist, drücken Sie ENTER, um "none" anzugeben.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, you'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):


Nachfolgend wird gefragt, ob Sie zur Unix-Socket-Authentifizierung wechseln wollen. Unter Ubuntu ist das Root-Konto für MariaDB eng mit der automatischen Systemwartung verknüpft, so dass Sie die konfigurierten Authentifizierungsmethoden für dieses Konto nicht ändern sollten. Geben Sie "n" ein und drücken Sie dann ENTER.

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n


Bei der nächsten Eingabeaufforderung werden Sie gefragt, ob Sie ein Root-Passwort für die Datenbank einrichten möchten. Falls dies nicht gewünscht ist, geben Sie "n" ein und drücken Sie dann ENTER.

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] n

Apache 2.4

Installieren Sie Apache mit nachfolgenden Befehl:

root@sm-Nextcloud-Wiki-02:~# apt install apache2

In UFW gibt es insgesamt drei vordefinierte Profile für Apache:

  • Apache: Dieses Profil öffnet nur Port 80 (unverschlüsselter Webverkehr)
  • Apache Full: Dieses Profil öffnet sowohl Port 80 (unverschlüsselter Webverkehr) sowie Port 443 (TLS/SSL-verschlüsselter Verkehr)
  • Apache Secure: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Datenverkehr)

Es wird empfohlen, das restriktivste Profil zu aktivieren. Da in diesem Leitfaden noch kein SSL für den Server konfiguriert wurde, wird auf "Apache" zurückgegriffen.

root@sm-Nextcloud-Wiki-02:~# ufw allow 'Apache'

Anschließend kann die Konfiguration wie folgt überprüft werden:

root@sm-Nextcloud-Wiki-02:~# ufw status
Status: active

To                         Action       From
--                         ------       ----
Apache                     ALLOW        Anywhere                  
Apache (v6)                ALLOW        Anywhere (v6)

Zusätzlich wird wie folgt der Status des Webservers überprüft:

root@sm-Nextcloud-Wiki-02:~# systemctl status apache2
* apache2.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
    Active: active (running) since Wed 2024-07-31 07:22:08 UTC; 10min ago
    Docs: https://httpd.apache.org/docs/2.4/
Main PID: 5400 (apache2)
    Tasks: 55 (limit: 154127)
    Memory: 5.5M (peak: 6.2M)
        CPU: 92ms
    CGroup: /system.slice/apache2.service
            |-5400 /usr/sbin/apache2 -k start
            |-5402 /usr/sbin/apache2 -k start
            `-5403 /usr/sbin/apache2 -k start

Jul 31 07:22:08 sm-Nextcloud-Wiki-02 systemd[1]: Starting apache2.service - The Apache HTTP Server...
Jul 31 07:22:08 sm-Nextcloud-Wiki-02 systemd[1]: Started apache2.service - The Apache HTTP Server.

Nun können Sie sich via Web auf http://your.server.ip/ verbinden.

Hypertext Preprocessor

PHP (Hypertext Preprocessor) ist eine weit verbreitete Open-Source-Skriptsprache, die sich besonders gut für die Webentwicklung eignet und in HTML eingebettet werden kann. Mit der Veröffentlichung von PHP 8.3 erhalten Entwickler Zugang zu neuen Funktionen, Leistungsverbesserungen und Fehlerkorrekturen, die Ihre Webanwendungen erheblich verbessern können.

Installation

Mit den nachfolgenden Befehlen installieren Sie PHP und alle dafür benötigten Pakete:

root@sm-Nextcloud-Wiki-02:~# apt install curl gpg gnupg2 software-properties-common ca-certificates apt-transport-https lsb-release -y
root@sm-Nextcloud-Wiki-02:~# apt install php -y

Nach erfolgreicher Installation können Sie die PHP-Version mit folgendem Befehl überprüfen.

root@sm-Nextcloud-Wiki-02:~# php --version
PHP 8.3.9 (cli) (built: Jul  5 2024 12:04:09) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies
with Zend OPcache v8.3.9, Copyright (c), by Zend Technologies

Zusätzliche Extensions

Für die Nutzung von PHP in Bezug auf Nextcloud, werden noch weitere Extensions benötigt. Diese werden wie folgt installiert:

root@sm-Nextcloud-Wiki-02:~# apt install -y php-{cli,mysql,zip,gd,mbstring,curl,xml,bcmath,common,common,xml,intl,smbclient,gmp,memcached,imagick}

Konfiguration grundlegender Pakete

MariaDB - Benutzer und DB Erstellung

Nach der erfolgreichen Konfiguration muss nun eine Datenbank und dessen Benutzer für Nextcloud erstellt werden.

Melden Sie sich hierzu in MariaDB an:

root@sm-Nextcloud-Wiki-02:~# mysql

Nun muss eine Datenbank erstellt werden. In diesem Beispiel mit dem Namen: nextclouddb

MariaDB> create database nextclouddb;

Danach muss ein Benutzer erstellt werden. In diesem Beispiel wird der Nutzer nextcloud mit allen Rechten für nextclouddb erstellt.

MariaDB> grant all privileges on nextclouddb.* TO 'nextcloud'@'%' identified by 'Password';

Nachdem die MariaDB-Grant-Tabelle geändert wurde, führen Sie den folgenden Befehl aus, um die Änderungen zu übernehmen. Und verlassen Sie anschließend die MariaDB-Kommandozeile.

MariaDB> flush privileges;
MariaDB> exit;

Webserver

Hierzu wird zu Beginn die Konfigurationsdatei nextcloud.conf in /etc/apache2/sites-available erstellt.

root@sm-Nextcloud-Wiki-02:~# nano /etc/apache2/sites-available/nextcloud.conf

Folgend gibt es zwei Möglichkeiten den Webserver zu konfigurieren:


1. Verzeichnis-basierende Installation (z.B.: example.com/nextcloud)

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
    Satisfy Any

<IfModule mod_dav.c>
    Dav off
</IfModule>
</Directory>

2. Virtual Host Installation (Subdomain z.B.: cloud.example.com)

Hinweis: Wenn Sie zuvor Apache Full oder Apache Secure ausgewählt haben, müssen die Ports dementsprechend angepasst werden!

<VirtualHost *:80>
    DocumentRoot /var/www/nextcloud/
    ServerName  cloud.example.com

<Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
    Satisfy Any

    <IfModule mod_dav.c>
    Dav off
    </IfModule>
</Directory>
</VirtualHost>

Nachdem die Konfiguration angepasst wurde, können Sie diese aktivieren und Apache anschließend neustarten:

root@sm-Nextcloud-Wiki-02:~# a2ensite nextcloud.conf
root@sm-Nextcloud-Wiki-02:~# a2enmod rewrite headers env dir mime

root@sm-Nextcloud-Wiki-02:~# service apache2 restart

Nextcloud

Zu Beginn muss ein externes Laufwerk oder ein NFS-Share für Nextlcoud eingerichtet werden. Wenn Sie bereits ein Laufwerk oder ein NAS gemounted haben, können Sie den Schritt "Mounten des NFS-Shares" überspringen.

Mounten des NFS-Shares

Installation von nfs-common:

root@sm-Nextcloud-Wiki-02:~# apt install nfs-common -y

Mit den nachfolgenden Befehlen wir dein Verzeichnis erstellt, welches anschließend gemounted wird:

root@sm-Nextcloud-Wiki-02:~# mkdir -p /mnt/nfs/tns
root@sm-Nextcloud-Wiki-02:~# mount your.host.ip:your/share/ /mnt/nfs/tns

Für die Installation von Nextcloud muss ein zusätzliches Verzeichnis angelegt werden.

root@sm-Nextcloud-Wiki-02:~# mkdir /mnt/nfs/tns/nextcloud

Das setzten der Rechte für das erstelle Verzeichnis kann nur vom NFS Host erfolgen. Die Umsetzung dessen ist je nach NFS Host verschieden.

Hierbei hilft Ihnen die Dokumentation des jeweiligen Tools, z.B. NFS-Server, TrueNAS, FreeNAS, Synology, OpenMediaVault und vieles mehr.

Installation von Nextcloud

Verzeichnis für die Webdaten erstellen:

root@sm-Nextcloud-Wiki-02:~# mkdir /var/www/nextcloud

Herunterladen des Web-Installers und Setzen der Rechte:

root@sm-Nextcloud-Wiki-02:~# cd /var/www/nextcloud
root@sm-Nextcloud-Wiki-02:~# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
root@sm-Nextcloud-Wiki-02:~# chown -R www-data:www-data /var/www/nextcloud

Nun kann im Browser der Setup-Wizard aufgerufen werden: http://your.server.ip/nextcloud/setup-nextcloud.php

Nach erfolgreicher Installation muss noch einen Cron-Job für den Background-Worker gesetzt werden. Öffnen Sie dazu folgende Datei und fügen Sie diese Zeile ein:

root@sm-Nextcloud-Wiki-02:~# crontab -u www-data -e

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php


Überprüfung:

root@sm-Nextcloud-Wiki-02:~# crontab -u www-data -l
[snip]
*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

Zusätzliche Konfigurationen

Pretty URLs

Pretty URLs entfernt den index.php-Teil in allen Nextcloud-URLs, z. B. bei Sharing-Links wie https://example.org/nextcloud/index.php/s/Sv1b7krAUqmF8QQ, wodurch die URLs kürzer und übersichtlicher werden.

Dafür müssen in folgender Datei zwei Variablen gesetzt werden:

root@sm-Nextcloud-Wiki-02:~# nano /var/www/nextcloud/config/config.php

'overwrite.cli.url' => 'https://example.org/nextcloud',
'htaccess.RewriteBase' => '/nextcloud',

Folgend muss die Konfigurationsdatei .htaccess geupdatet werden.

root@sm-Nextcloud-Wiki-02:~# sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess

Nun sollte in der URL index.php nicht mehr angezeigt werden.

SSL (Self-Signed)

Der unter Ubuntu installierte Apache-Webserver hat bereits ein selbst ausgestelltes Zertifikat. Sie müssen nur noch das SSL-Modul und die Standard-Site aktivieren.

Öffnen Sie ein Terminal und führen Sie dies aus:

root@sm-Nextcloud-Wiki-02:~# a2enmod ssl
root@sm-Nextcloud-Wiki-02:~# a2ensite default-ssl
root@sm-Nextcloud-Wiki-02:~# service apache2 reload

Nun ist Ihr Nextcloud-Server erfolgreich eingerichtet und Sie mit der Speicherung der Daten beginnen.


Autor: Samuel Müller

Samuel Müller ist seit 2024 im Product Management Team bei der Thomas-Krenn tätig. Dabei beschäftigt sich Herr Müller mit Proxmox VE, Proxmox Mail Gateway und Proxmox Datacenter Manager und unter anderem mit dem Thomas-Krenn-Wiki.

Das könnte Sie auch interessieren

Nextcloud Appcenter
Nextcloud User Interface (UI) - Überblick
Open Source Release Termine 2024