Die ultimative Anleitung zur Installation von Nextcloud auf AlmaLinux: Schritt-für-Schritt-Anleitung
Nextcloud ist eine kostenlose und quelloffene Software, mit der du Filehosting-Dienste wie Dropbox, Google Drive oder Mega.nz erstellen kannst. Sie wurde von dem ursprünglichen Owncloud-Entwickler Frank Karlitschek entwickelt. Im Jahr 2016 hat er das Owncloud-Projekt geforkt und ein neues Projekt namens „Nextcloud“ gegründet.
Zu diesem Zeitpunkt wuchs das Nextcloud-Projekt schnell und wurde zu mehr als einer Filehosting-Software. Durch die Unterstützung zahlreicher Plugins ist Nextcloud zu einer solchen Collaboration-Software geworden. Du kannst Plugins für Projektmanagement, Videokonferenzen, kollaborative Bearbeitung, Notizen, E-Mail-Client usw. installieren.
In dieser Anleitung erfährst du, wie du Nextcloud auf AlmaLinux 9 installierst. Du wirst Nextcloud auf einem neuen/generischen AlmaLinux-Server installieren. Diese Anleitung beinhaltet auch die Installation von Paketen wie dem Webserver httpd, dem Datenbankserver MariaDB und PHP. Am Ende dieser Anleitung wirst du die Nextcloud auch mit Firewalld, SELinux und SSL/TLS-Zertifikaten von Letsencrypt sichern.
Nachfolgend findest du einige Paketanforderungen für die Installation von Nextcloud:
Voraussetzungen
Für diese Anleitung benötigst du die folgenden Voraussetzungen:
- Einen Linux-Server mit AlmaLinux 9 – In diesem Beispiel wird ein Server mit dem Hostnamen„alma-nextcloud“ und der IP-Adresse„192.168.5.25“ verwendet.
- Administrativer Benutzer oder Nicht-Root-Benutzer mit sudo/root-Rechten.
- Firewalld läuft und ist aktiviert.
- SELinux läuft im erzwingenden Modus.
- Ein Domänenname, der auf eine Server-IP-Adresse zeigt – In diesem Beispiel wird die Domäne„nextcloud.hwdomain.io“ verwendet.
Jetzt können wir mit der Installation beginnen.
Installation des httpd Webservers
Um Nextcloud zum Laufen zu bringen, kannst du Apache/httpd oder Nginx verwenden. In diesem Abschnitt installierst du den httpd-Webserver, der für den Betrieb von Nextcloud verwendet wird. Unter AlmaLinux ist das httpd-Paket standardmäßig verfügbar, du kannst es über den DNF-Paketmanager installieren.
Führe den folgenden Befehl aus, um den httpd-Webserver zu installieren.
sudo dnf install httpd
Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.
Sobald der httpd-Webserver installiert ist, starte und aktiviere den httpd mit dem folgenden Befehl.
sudo systemctl start httpd sudo systemctl enable httpd
Überprüfe nun den httpd-Webserver, um sicherzustellen, dass der Dienst läuft.
sudo systemctl status httpd
Du solltest eine Ausgabe wie diese erhalten – Der httpd-Webserver ist aktiviert und wird beim Systemstart automatisch gestartet. Und der Status des httpd-Webservers ist running.
Als Nächstes musst du HTTP und HTTPS auf der Firewalld öffnen, indem du den folgenden Befehl ausführst.
sudo firewall-cmd --add-service={http,https} --permanent sudo firewall-cmd --reload
Die Ausgabe„success“ bestätigt, dass der Vorgang erfolgreich ist.
Überprüfe nun die Liste der Dienste auf der Firewall mit dem folgenden Befehl.
sudo firewall-cmd --list-services
Du solltest sehen, dass sowohl HTTP- als auch HTTPS-Dienste zur Firewalld hinzugefügt wurden.
Wenn die Firewalld konfiguriert ist, öffne deinen Webbrowser und rufe die IP-Adresse des Servers auf (z. B.: http://192.168.5.25/). Du solltest die Standardseite index.html des httpd-Webservers sehen.
Installieren und Konfigurieren von PHP 8.1
Nachdem du den httpd-Webserver installiert und die Firewalld konfiguriert hast, ist es an der Zeit, die PHP-Pakete zu installieren. In diesem Abschnitt wird beschrieben, wie du PHP 8.1 unter AlmaLinux 9 über das REMI-Repository installierst.
Führe zunächst den folgenden Befehl aus, um das EPEL-Repository zu deinem System hinzuzufügen. Um PHP-Pakete aus dem REMI-Repository zu installieren, musst du zuerst das EPEL-Repository hinzufügen.
sudo dnf install epel-release
Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst dann ENTER.
Als Nächstes führst du den folgenden Befehl aus, um das REMI-Repository für das RHEL 9-System zu installieren.
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER, um fortzufahren.
Nachdem du das REMI-Repository hinzugefügt hast, führe den folgenden Befehl aus, um die aktuelle PHP-Repository-Konfiguration zurückzusetzen. Aktiviere dann das Repository-Modul für„php:remi-8.1„.
sudo dnf module reset php -y sudo dnf module enable php:remi-8.1 -y
Die erwartete Ausgabe sieht wie folgt aus:
Führe nun den folgenden dnf-Befehl aus, um PHP 8.1-Pakete über das REMI-Repository zu installieren. Mit dem folgenden Befehl werden auch einige PHP-Erweiterungen installiert, die für Nextcloud benötigt werden, darunter PHP-FPM.
sudo dnf install php php-ctype php-curl php-gd php-iconv php-json php-libxml php-mbstring php-openssl php-posix php-session php-xml php-zip php-zlib php-pdo php-mysqlnd php-intl php-bcmath php-gmp php-imagick php-apcu
Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER.
Nachdem PHP installiert ist, nimmst du einige Änderungen an der Konfigurationsdatei„php.ini“ vor und richtest die PHP OPCache-Erweiterung für Nextcloud ein.
Öffne die Datei„/etc/php.ini“ mit dem folgenden Befehl des nano-Editors.
sudo nano /etc/php.ini
Ändere einige Standardoptionen wie die folgenden Zeilen. Passe außerdem die Größe von‚memory_limit‚ an den verfügbaren Speicherplatz auf deinem Server und die Optionen‚date.timezone‚ an den Standort deines Servers an.
file_uploads = On allow_url_fopen = On memory_limit = 512M upload_max_filesize = 500M post_max_size = 600M max_execution_time = 300 display_errors = Off date.timezone = Europe/Amsterdam
Speichere die Datei und schließe den Editor, wenn du fertig bist.
Öffne nun die PHP OPCache-Konfigurationsdatei„/etc/php.d/10-opcache.ini“ mit dem nano-Editor.
sudo nano /etc/php.d/10-opcache.ini
Füge die folgenden Zeilen in die Datei ein, um den PHP OPCache für Nextcloud zu aktivieren und einzustellen.
opcache.enable = 1 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 10000 opcache.memory_consumption = 128 opcache.save_comments = 1 opcache.revalidate_freq = 1
Speichere die Datei und schließe den Editor, wenn du fertig bist.
Als Nächstes führst du den folgenden Befehl aus, um den httpd-Webserver und den PHP-FPM-Dienst neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart httpd sudo systemctl restart php-fpm
Jetzt, wo du PHP konfiguriert hast, ist es an der Zeit, deine PHP-Installation zu überprüfen, indem du die Datei„test.php“ erstellst, die dir detaillierte Informationen über deine PHP-Installation liefert.
Führe den folgenden Befehl aus, um eine neue Datei„/var/www/test.php“ zu erstellen.
echo "<?php phpinfo(); ?>" > /var/www/test.php
Öffne deinen Webbrowser und rufe die IP-Adresse deines Servers gefolgt von dem Dateipfad„test.php“ auf (z.B. : http://192.168.5.25/test.php).
Die folgende Seite sollte angezeigt werden, wenn die Installation erfolgreich war:
Installation von MariaDB 10.6
Nextcloud unterstützt standardmäßig mehrere RDBMS (Relational Database Management Systems) wie MySQL/MariaDB, PostgreSQL, Oracle (Enterprise Version) und SQLite. In diesem Abschnitt wirst du MariaDB Server 10.6 aus dem offiziellen MariaDB Repository installieren.
Füge zunächst das offizielle MariaDB-Repository hinzu, indem du eine neue Repository-Konfigurationsdatei„MariaDB.repo“ im Verzeichnis„/etc/yum.repos.d/“ mit dem folgenden nano-Editor erstellst.
sudo nano /etc/yum.repos.d/MariaDB.repo
Füge die folgenden Zeilen in die Datei ein.
# MariaDB 10.6 RedHatEnterpriseLinux repository list # https://mariadb.org/download/ [mariadb] name = MariaDB # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. # baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch baseurl = https://mirror.23m.com/mariadb/yum/10.6/rhel/$releasever/$basearch # gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgkey=https://mirror.23m.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1
Speichere die Datei und beende den Editor.
Überprüfe die Liste der verfügbaren Repositories mit dem folgenden Befehl.
sudo dnf repolist
Sobald das MariaDB-Repository hinzugefügt ist, installierst du die MariaDB-Server- und Client-Pakete mit dem folgenden dnf-Befehl.
sudo dnf install MariaDB-server MariaDB-client
Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst dann ENTER, um fortzufahren.
Sobald MariaDB installiert ist, führe den folgenden Befehl aus, um den MariaDB-Server zu starten und zu aktivieren.
sudo systemctl start mariadb sudo systemctl enable mariadb
Führe dann den folgenden Befehl aus, um sicherzustellen, dass der MariaDB-Dienst läuft und aktiviert ist.
sudo systemctl status mariadb
Die folgende Ausgabe sollte angezeigt werden, wenn der MariaDB-Dienst läuft.
Schließlich kannst du auch die MariaDB-Version überprüfen, indem du den folgenden Befehl ausführst.
sudo mariadb --version
Wenn du diesem Leitfaden folgst, siehst du, dass der MariaDB Server 10.6 installiert ist.
MariaDB Server absichern
Nachdem du den MariaDB Server installiert hast, ist es nun an der Zeit, den MariaDB Einsatz zu sichern. In diesem Abschnitt wird die grundlegende Verwendung des Dienstprogramms„mariadb-secure-installation“ zur Sicherung der MariaDB-Installation beschrieben.
Mit dem Dienstprogramm„mariadb-secure-installation“ richtest du das MariaDB-Root-Passwort ein, deaktivierst die Fernanmeldung für den Root-Benutzer und entfernst den anonymen Standardbenutzer und den Datenbanktest aus deinem Einsatz.
Führe den folgenden Befehl aus, um deine MariaDB-Installation zu sichern.
sudo mariadb-secure-installation
Du wirst mit den folgenden MariaDB-Konfigurationen gefragt:
- Wenn du nach einem Passwort gefragt wirst, drücke ENTER, um fortzufahren. Die Standard-MariaDB-Installation enthält kein Passwort für den Root-Benutzer.
- Wenn du aufgefordert wirst, die Authentifizierungsmethode auf„unix_socket“ umzustellen, drücke„n“ für„Nein„.
- Erstelle nun ein neues MariaDB Root-Passwort, wenn du dazu aufgefordert wirst. Gib„Y“ ein, gib dann ein neues Passwort ein und wiederhole es.
- Wenn du gefragt wirst, ob du die Fernanmeldung für den MariaDB-Root-Benutzer deaktivieren willst, gibst du„Y“ ein.
- Lösche nun den anonymen Standardbenutzer von deinem MariaDB-Server. Gib„Y“ für„Ja“ ein.
- Gib erneut „Y“ ein, um die Standarddatenbank„test“ aus deinem Einsatz zu löschen.
- Gib abschließend erneut„Y“ ein, um die Tabellenberechtigungen neu zu laden und die Änderungen zu übernehmen.
MariaDB-Datenbank und Benutzer für Nextcloud anlegen
Nachdem du die MariaDB-Bereitstellung gesichert hast, erstellen wir nun eine neue MariaDB-Datenbank und einen Benutzer, die Nextcloud verwenden wird.
Zu Beginn meldest du dich mit dem unten stehenden Befehl als Root-Benutzer in der MariaDB-Shell an. Wenn du zur Eingabe des Passworts aufgefordert wirst, gibst du dein MariaDB-Root-Passwort ein.
sudo mariadb -u root -p
Als nächstes erstellst du eine neue Datenbank„nextcloud_db“ und den Benutzer„nextuser@localhost„, indem du die folgenden Abfragen ausführst. Achte darauf, dass du das Passwort in der folgenden Abfrage mit deinem Passwort änderst.
CREATE DATABASE netxcloud_db; CREATE USER nextuser@localhost IDENTIFIED BY 'StrongPassword'; GRANT ALL PRIVILEGES ON netxcloud_db.* TO nextuser@localhost; FLUSH PRIVILEGES;
Sobald die Datenbank und der Benutzer erstellt sind, führe die folgende Abfrage aus, um sicherzustellen, dass die Datenbank„nextcloud_db“ erstellt wird.
SHOW DATABASES;
Führe dann die folgende Abfrage aus, um sicherzustellen, dass der MariaDB-Benutzer„nextuser@localhost“ auf die Datenbank„nextcloud_db“ zugreifen kann.
SHOW GRANTS FOR nextuser@localhost;
Herunterladen des Nextcloud-Quellcodes
Wenn du die bisherigen Anweisungen befolgt hast, solltest du jetzt den LAMP-Stack (Linux, Apache/httpd, MariaDB und PHP) auf deinem AlmaLinux-Server installiert haben. Als Nächstes lädst du den Nextcloud-Quellcode herunter und richtest dann die richtige SELinux-Kennzeichnung für den Nextcloud-Quellcode ein.
Führe zunächst den folgenden dnf-Befehl aus, um die Dienstprogramme unzip, wget und SELinux troubleshoot zu installieren.
sudo dnf install unzip wget setroubleshoot-server setools-console -y
Wechsle nun in das Verzeichnis „/var/www/“ und lade die neueste Version des Nextcloud-Quellcodes mit dem unten stehenden wget-Befehl herunter. Sobald der Download abgeschlossen ist, siehst du die Datei „latest.zip„.
cd /var/www/ wget -q https://download.nextcloud.com/server/releases/latest.zip
Führe den folgenden Befehl aus, um die Datei „latest.zip“ zu entpacken. Der Nextcloud-Quellcode sollte nun im Verzeichnis „/var/www/nextcloud“ verfügbar sein.
sudo unzip latest.zip
Führe nun den folgenden Befehl aus, um den Eigentümer des Verzeichnisses „/var/www/nextcloud“ auf den Benutzer„apache2“ zu ändern. Dadurch kann der Webserver httpd auf den Nextcloud-Quellcode zugreifen.
sudo chown -R apache:apache /var/www/nextcloud
SELinux konfigurieren
Nachdem wir den Nextcloud-Quellcode heruntergeladen haben, müssen wir im nächsten Schritt SELinux-Richtlinien und Kennzeichnungen für Nextcloud einrichten.
Beginnen wir damit, den folgenden Befehl auszuführen, um die Kennzeichnung für den Nextcloud-Quellcode und die Verzeichnisse einzurichten.
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?' sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?' sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?' sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess' sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini' sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
sudo restorecon -Rv ‚/var/www/nextcloud/‘
Als Nächstes führst du den folgenden Befehl aus, um dem Webserver httpd, der Datenbank und dem Memcache zu erlauben, sich mit dem Netzwerk zu verbinden (dies ermöglicht die gemeinsame Nutzung von Server zu Server).
sudo setsebool -P httpd_can_network_connect_db on sudo setsebool -P httpd_can_network_connect on sudo setsebool -P httpd_can_network_memcache on sudo setsebool -P mysql_connect_http on
Damit hast du den Nextcloud-Quellcode heruntergeladen, dem httpd-Webserver den Zugriff auf den Nextcloud-Quellcode erlaubt und die SELinux-Richtlinien für Nextcloud konfiguriert. Als Nächstes wirst du einen virtuellen httpd-Host für Nextcloud einrichten.
Während der Installation trat die Fehlermeldung auf, dass PHP-FPM sich nicht mit dem MySQL/MariaDB-Socket verbinden kann, was SELinux blockiert. Nachfolgend die benutzerdefinierte Richtlinie, die aus der Datei„audit.log“ erstellt wurde.
Erstelle die Datei„my-phpfpm.te“ mit deinem bevorzugten Editor und füge die folgenden Zeilen in die Datei ein.
module my-phpfpm 1.0;
require {
type unconfined_service_t;
type httpd_sys_content_t;
type httpd_t;
class dir write;
class unix_stream_socket connectto;
}
#============= httpd_t ==============
#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;
allow httpd_t unconfined_service_t:unix_stream_socket connectto;
Führe nun den folgenden Befehl aus, um die Datei„my-phpfpm.te“ in das Richtlinienmodul„my-phpfpm.mod“ zu konvertieren.
sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te
Sobald die Policy-Modul-Datei„my-phpfpm.mod“ erstellt ist, führe den folgenden Befehl aus, um das SELinux-Policy-Modul zu„my-phpfpm.pp“ zu kompilieren
sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod
Abschließend kannst du das kompilierte SELinux-Richtlinienmodul„my-phpfpm.pp“ anwenden, indem du den folgenden Befehl ausführst.
sudo semodule -i my-phpfpm.pp
Virtuellen httpd-Host für Nextcloud konfigurieren
Im folgenden Abschnitt wirst du einen neuen virtuellen httpd-Host für Nextcloud erstellen. Bevor du weitermachst, musst du sicherstellen, dass ein Domainname auf die IP-Adresse des Servers zeigt.
Führe den folgenden nano-Befehl aus, um eine neue Konfiguration des virtuellen Hosts „/etc/httpd/conf.d/nextcloud.conf“ zu erstellen.
sudo nano /etc/httpd/conf.d/nextcloud.conf
Füge die folgenden Zeilen in die Datei ein und achte darauf, dass du den Domänennamen in der folgenden Konfiguration des virtuellen Hosts änderst.
<VirtualHost *:80> DocumentRoot /var/www/nextcloud/ ServerName nexcloud.hwdomain.io
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
Speichere die Datei und beende dann den Editor.
Als Nächstes führst du den folgenden Befehl aus, um den httpd-Webserver zu überprüfen und sicherzustellen, dass du die richtigen Konfigurationen hast. Die Ausgabe „Syntax OK“ bestätigt, dass du den httpd korrekt konfiguriert hast.
sudo apachectl configtest
Führe nun den folgenden Befehl aus, um den httpd-Webserver neu zu starten und die neue Konfiguration des virtuellen Hosts anzuwenden.
sudo systemctl restart httpd
Gehe schließlich zurück zu deinem Webbrowser und rufe den Domainnamen deiner Nextcloud-Installation auf (z.B.: http://nexcloud.hwdomain.io/). Die folgende Seite bestätigt, dass du den virtuellen httpd-Host für Nextcloud erfolgreich konfiguriert hast.
Du hast nun erfolgreich erreicht, dass Nextcloud mit dem LAMP Stack auf AlmaLinux läuft. Um den Prozess fortzusetzen, wirst du Nextcloud mit SSL/TLS-Zertifikaten über Letsencrypt sichern.
Sichern von Nextcloud mit SSL/TLS Letsencrypt
Dieser Abschnitt beschreibt, wie du Nextcloud mit SSL/TLS von Letsencrypt sicherst. Du installierst das Tool Certbot, richtest den httpd mod_ssl ein und aktivierst ihn, dann generierst du mit Certbot ein SSL/TLS-Zertifikat von Letsencrypt.
Um zu beginnen, führe den folgenden Befehl aus, um Certbot und sein Plugin für den Apache/httpd-Webserver sowie das mod_ssl-Paket zu installieren.
sudo dnf install certbot python3-certbot-apache mod_ssl
Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER, um fortzufahren.
Wenn mod_ssl installiert ist, musst du SSL-Zertifikate für localhost generieren, sonst wird der httpd einen Fehler haben.
Gib den folgenden Befehl ein, um selbstsignierte SSL/TLS-Zertifikate für localhost zu erzeugen.
openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt
Zuletzt führst du den folgenden Befehl aus, um neue SSL/TLS-Zertifikate von Letsencrypt zu erzeugen. Achte darauf, dass du den Domänennamen und die E-Mail-Adresse in dem folgenden Befehl änderst.
sudo certbot --apache --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email alice@hwdomain.io -d nextcloud.hwdomain.io
Sobald der Certbot-Prozess abgeschlossen ist, sollte die Konfiguration des virtuellen Nextcloud-Hosts„/etc/httpd/conf.d/nextcloud.conf“ automatisch so geändert werden, dass SSL/TLS aktiviert ist und die automatische Umleitung von HTTP zu HTTPS ebenfalls aktiviert ist.
Installation von Nextcloud über den Web-Installer
Öffne deinen Webbrowser und rufe den Domainnamen deiner Nextcloud-Installation auf (z.B.: https://nexcloud.hwdomain.io/). Wenn die Installation erfolgreich war, solltest du die Nextcloud-Installationsseite wie im folgenden Screenshot sehen:
Gib den neuen Admin-Benutzer und das Passwort für deine Nextcloud ein. Klicke dann auf die Datenbank MySQL/MariaDB und gib den Namen, den Benutzer und das Passwort der MariaDB-Datenbank ein. Klicke auf Installieren, um die Installation durchzuführen.
Wenn die Nextcloud-Installation erfolgreich war, solltest du auf das Nextcloud-Dashboard weitergeleitet werden, wie im folgenden Screenshot zu sehen:
Klicke nun auf das Dateimanager-Menü oben links und du solltest den Nextcloud-Dateimanager sehen, mit dem du Dateien auf Nextcloud hochladen, erstellen oder löschen kannst.
Fazit
Wenn du die in dieser Anleitung beschriebenen Schritte befolgst, hast du Nextcloud erfolgreich auf AlmaLinux 9 mit LAMP Stack installiert. Außerdem hast du Nextcloud mit Firewalld, SELinux und SSL/TLS-Zertifikaten von Letsencrypt abgesichert.
Um Nextcloud auf die nächste Stufe zu heben, könntest du auch Memory Caching mit memcached einrichten, Nextcloud mit fail2ban gegen Brute-Force-Angriffe absichern und Dateisperren mit Redis einrichten.