Nextcloud Installation mit NFS-Mount (HowTo)
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.
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
-
Setzen Sie das Installationsverzeichnis auf "." um Nextcloud in den zuvor erstellten Verzeichnis (/var/www/nextcloud) zu installieren.
-
Anschließend kann ein Admin-Account mit [Benutzername] und [Passwort] erstellt werden.
-
Hier setzten Sie den Pfad Ihres Mounts oder NFS-Share, den wir zuvor erstellt haben.
-
Wenn Sie das Verzeichnis gesetzt haben können Sie jetzt die Datenbank hinzufügen. Und auf [Installieren] klicken.
-
Nach der erfolgreichen Installation werden Sie auf das Dashboard weitergeleitet.
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. |

