Wie installiere ich Nextcloud unter Debian 11
Nextcloud ist eine Open-Source-Software zur Erstellung von öffentlichen und privaten Dateispeichern. Sie ermöglicht es dir, selbst gehostete Dienste wie Dropbox, Google Drive oder Mega.nz zu erstellen. Ursprünglich wurde sie vom ursprünglichen Owncloud-Entwickler Frank Karlitschek entwickelt. Im Jahr 2016 forkt er das Owncloud-Projekt und erstellt ein neues Projekt mit dem Namen „Nextcloud“.
Zu dieser Zeit wuchs das Nextcloud-Projekt rasant und wurde zu mehr als nur einer Software zum Hosten von Dateien, sondern eher zu einer Plattform für die Synchronisierung von Dateien und die Zusammenarbeit von Inhalten. Mit einer Vielzahl von Plugins wird Nextcloud zu einer leistungsstarken Software für die Zusammenarbeit. Du kannst Plugins für Projektmanagement, Videokonferenzen, gemeinsame Bearbeitung, Notizen, E-Mail-Client usw. installieren.
In dieser Anleitung erfährst du, wie du Nextcloud auf dem neuesten Debian 11 Bullseye installierst. Du wirst Nextcloud unter dem LAMP-Stack (Linux, Apache2/httpd, MySQL/MariaDB und PHP) installieren.
Voraussetzungen
- Ein Debian 11 Server. Stelle sicher, dass alle Pakete auf die neueste Version aktualisiert sind.
- Ein Root-Benutzer oder ein Benutzer mit Root-Rechten. Dieser Benutzer wird für die Installation neuer Pakete und die Bearbeitung der Systemkonfigurationen verwendet.
Root und Update Repositories abrufen
Führe zunächst den folgenden Befehl aus, um die Root-Rechte zu erhalten.
1. Wenn du„sudo“ installiert hast, führe den folgenden sudo-Befehl aus.
sudo su
Gib nun das Passwort login für deinen Benutzer ein.
2. Wenn du das sudo-Paket nicht hast, führe den Befehl„su“ wie folgt aus
su
Gib jetzt dein Root-Passwort ein und drücke„Enter„.
3. Danach aktualisierst du alle Debian-Repositories mit dem Befehl apt (siehe unten).
apt update
Nun installierst Du einige Basis-Pakete, die wir im weiteren Verlauf benötigen:
apt-get install curl lsb-release
Installation des Apache Webservers
Nachdem du die Debian-Repositories aktualisiert hast, installierst du einen Apache-Webserver und aktivierst einige Apache-Module für Nextcloud.
1. Führe den folgenden apt-Befehl aus, um den Apache-Webserver zu installieren.
apt install apache2
Gib„y“ ein und drücke„Enter„, um die Installation fortzusetzen.
2. Wenn die Installation abgeschlossen ist, überprüfe den Apache-Dienst mit dem folgenden Befehl.
systemctl is-enabled apache2 systemctl status apache2
Du wirst die Ausgabe„enabled“ sehen, was bedeutet, dass der Apache-Dienst beim Systemstart automatisch gestartet wird. Und der aktuelle Status des Apache-Dienstes ist„active (running)„.
3. Als nächstes aktivierst du die Apache-Module ssl, rewrite und headers, indem du den Befehl a2enmod ausführst.
a2enmod ssl rewrite headers
Nachfolgend siehst du die Ausgabe, die du erhalten wirst.
4. Führe anschließend den folgenden Befehl aus, um den Apache-Dienst neu zu starten.
systemctl restart apache2
Die neuen Apache-Module werden angewendet. Überprüfe diese Module mit dem Befehl apachectl.
apachectl -M | egrep "ssl|rewrite|headers"
Du wirst eine ähnliche Ausgabe wie unten sehen.
Installieren und Konfigurieren von PHP
In dieser Anleitung wirst du Nextcloud mit der neuesten stabilen Version von PHP 8.0 einsetzen.
Standardmäßig stellt das Debian-Repository Pakete für PHP 8.0 bereit. Nextcloud benötigt jedoch einige zusätzliche PHP-Pakete, die von einem Drittanbieter-Repository installiert werden können. Und du wirst ein neues Repository zu deinem Debian-System hinzufügen.
1. Führe den unten stehenden Befehl aus, um ein PHP-Repository für das Debian-System hinzuzufügen.
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main"\ | sudo tee /etc/apt/sources.list.d/sury-php.list
Lade den GPG-Schlüssel in das Verzeichnis„/etc/apt/trusted.gpg.d“ herunter.
curl -o /etc/apt/trusted.gpg.d/sury-php8.gpg https://packages.sury.org/php/apt.gpg
Führe nun erneut den Befehl „apt update“ aus, um alle Repositories zu aktualisieren.
apt update
2. Installiere die PHP-Pakete und zusätzliche PHP-Module für Nextcloud mit dem unten stehenden apt-Befehl.
apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu
Führe danach den apt-Befehl erneut aus, um einige zusätzliche Pakete zu installieren.
apt install -y libmagickcore-dev
Die Pakete„libmagickcore-dev“ werden von php-imagick für die SVG-Bildverarbeitung auf Nextcloud benötigt.
3. Wenn die Installation aller Pakete abgeschlossen ist, wechsle das Arbeitsverzeichnis zu„/etc/php/8.0/apache2“ und bearbeite die Konfiguration„php.ini“ mit nano.
cd /etc/php/8.0/apache2/ nano php.ini
Für die grundlegende Nextcloud-Installation änderst du die Standardoptionen mit der folgenden Konfiguration.
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 output_buffering = Off
Dekommentiere die Option‚zend_extension=opcache‚, um die opcache-Erweiterung zu laden.
zend_extension=opcache
Gehe zum Abschnitt ‚[opcache]‘ und füge die folgende Konfiguration hinzu.
[opcache] ... .... ..... 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 Konfiguration, indem du die Taste„Strg+x“ drückst,„y“ eingibst und mit„Enter“ beendest.
4. Starte nun den Apache-Dienst neu, um die neuen Änderungen mit dem unten stehenden Befehl anzuwenden.
systemctl restart apache2
Installieren und Konfigurieren von MariaDB
In diesem Schritt installierst du den mariadb-Datenbankserver, sicherst den Einsatz von mariadb und erstellst eine neue Datenbank und einen neuen Benutzer für Nextcloud.
1. Um den mariadb-Datenbankserver zu installieren, führe den folgenden Befehl aus.
apt install mariadb-server mariadb-client
Gib„y“ ein, um die Installation der Mariadb-Pakete zu bestätigen.
2. Sobald die Installation abgeschlossen ist, überprüfe den mariadb-Dienst mit dem folgenden Befehl.
systemctl is-enabled mariadb systemctl status mariadb
Der mariadb-Dienst ist aktiv und läuft und wird beim Systemstart automatisch gestartet.
3. Als Nächstes musst du deinen Mariadb-Einsatz absichern, indem du das Root-Passwort für Mariadb einrichtest und einige Standardkonfigurationen entfernst. Dazu kannst du das Kommandozeilen-Tool „mysql_secure_installation“ verwenden, das in der Standard-Mariadb-Installation enthalten ist.
Führe den Befehl„mysql_secure_installation“ wie folgt aus.
mysql_secure_installation
Zu Beginn wirst du aufgefordert, das mariadb root Passwort einzugeben. Drücke einfach„Enter„, um fortzufahren.
Enter current password for root (enter for none): OK, successfully used password, moving on...
Gib„Y“ ein, um die„unix_socket„-Authentifizierung für den Benutzer„root“ zu aktivieren.
Switch to unix_socket authentication [Y/n] Y Enabled successfully! Reloading privilege tables.. ... Success!
Gib dein sicheres mariadb root-Passwort ein, wiederhole es und drücke„Enter„, um fortzufahren.
Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!
Gib nun„Y“ ein und drücke„Enter„, um den anonymen Standardbenutzer vom Mariadb-Server zu entfernen.
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Remove anonymous users? [Y/n] Y
… Success!
Danach deaktivierst du die Fernanmeldung für den Standardbenutzer„root„. Gib„Y“ ein und drücke„Enter„, um fortzufahren.
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
… Success!
Tippe erneut„Y“ ein, um die Standarddatenbank„test“ zu entfernen und drücke„Enter„.
By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it? [Y/n] Y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Tippe zum Schluss noch einmal„Y“ ein, um alle Tabellenrechte neu zu laden und eine neue Konfiguration anzuwenden.
Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
Reload privilege tables now? [Y/n] Y
… Success!
Jetzt ist der Vorgang abgeschlossen und du siehst die folgende Ausgabe.
Cleaning up...
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Datenbank und Benutzer für Nextcloud anlegen
1. Melde dich mit dem unten stehenden mysql-Befehl in der mariadb-Shell an.
mysql -u root -p
2. Führe nun die folgende mysql-Abfrage aus, um eine neue Datenbank„nextcloud_db“ zu erstellen.
CREATE DATABASE netxcloud_db;
3. Führe die folgende Abfrage aus, um einen neuen Datenbankbenutzer„nextclouduser“ zu erstellen. Ändere das„strongpassword“ mit deinem sicheren Passwort.
CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword';
4. Erlaube dem Benutzer„nextclouduser“ mit der folgenden Abfrage den Zugriff auf die„nextcloud_db“ und schreibe sie.
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost;
5. Lade nun alle Tabellenberechtigungen neu, um die neue Datenbankkonfiguration anzuwenden.
FLUSH PRIVILEGES;
Dann kannst du„quit“ eingeben und„Enter“ drücken, um die mariadb-Shell zu verlassen.
Nextcloud-Quellcode herunterladen
1. Wechsle das Arbeitsverzeichnis zu„/var/www“ und lade die neueste Version des Nextcloud-Quellcodes mit dem Befehl wget herunter.
cd /var/www/ curl -o nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-22.1.1.zip
2. Installiere nun das unzip-Paket mit dem folgenden Befehl.
apt install unzip
3. Als Nächstes entpackst du den Nextcloud-Quellcode„nextcloud.zip“ und erhältst ein neues Verzeichnis „nextcloud“, dann änderst du den Besitzer des Verzeichnisses„nextcloud“ in den Benutzer„www-data„.
unzip nextcloud-22.1.0.zip chown -R www-data:www-data nextcloud
Jetzt kannst du SSL Letsencrypt erzeugen und den virtuellen Apache-Host für Nextcloud konfigurieren.
SSL Letsencrypt generieren
In diesem Schritt installierst du das Tool certbot und generierst die SSL-Zertifikate für die Nextcloud-Installation. Du wirst SSL Letsencrypts mit dem webroot Plugin erzeugen.
1. Führe den folgenden Befehl aus, um das certbot-Tool zur Erstellung von SSL-Letsencrypt zu installieren.
apt install certbot
Gib„y“ ein und drücke„Enter„, um die Installation fortzusetzen.
2. Sobald die Installation abgeschlossen ist, erstelle mit den folgenden Befehlen ein neues Verzeichnis für die Letsencrypt-Autorisierung.
mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt
3. Wechsle als nächstes in das Arbeitsverzeichnis„/etc/apache2/conf-available/“ und erstelle mit nano eine neue Konfiguration„well-known.conf„.
cd /etc/apache2/conf-available/ nano well-known.conf
Kopiere die folgende Konfiguration und füge sie ein.
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" <Directory "/var/lib/letsencrypt/"> AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS </Directory>
Drücke„Strg+x“ und gib„y“ ein und drücke‚Enter‚, um die Konfiguration zu speichern und zu beenden.
Aktiviere nun die neue Konfiguration, indem du mit dem Befehl„ln“ einen Symlink von der Datei„well-known.conf“ in das Verzeichnis „conf-enabled“ erstellst.
ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/
4. Führe nun die folgenden Befehle aus, um die Apache-Konfiguration zu überprüfen und starte den Apache-Dienst neu.
apachectl configtest systemctl restart apache2
Wenn du keine Fehlermeldung erhältst, kannst du SSL Letsencrypt mit dem webroot Plugin erzeugen.
5. Bevor du SSL Letsencrypt generierst, musst du sicherstellen, dass dein Domainname in die IP-Adresse des Servers aufgelöst ist. Danach kannst du SSL Letsencrypt mit dem Webroot-Plugin erzeugen, indem du den unten stehenden Befehl certbot ausführst. Ändere auch die E-Mail-Adresse und den Domainnamen in deinen eigenen.
sudo certbot certonly --agree-tos --email user@email.com --webroot -w /var/lib/letsencrypt/ -d files.domain-name.io
Wenn der Vorgang abgeschlossen ist, sind deine SSL-Zertifikate im Verzeichnis„/etc/letsencrypt/live/files.domain-name.io/“ verfügbar.
Apache Virtual Host für Nextcloud einrichten
In diesem Schritt fügst du eine neue apache/httpd Virtual Host Konfiguration für Nextcloud hinzu.
1. Ändere das Arbeitsverzeichnis in„/etc/apache2/sites-available/“ und erstelle mit nano eine neue Konfiguration„nextcloud.conf„.
cd /etc/apache2/sites-available/ nano nextcloud.conf
Ändere den detaillierten Domainnamen und das SSL-Pfadverzeichnis in dein eigenes und füge die Konfiguration in die Datei„nextcloud.conf“ ein.
<VirtualHost *:80> ServerName files.domain-name.io ServerAlias www.files.domain-name.io # auto redirect HTTP to HTTPS Redirect permanent / https://files.domain-name.io/ </VirtualHost> <VirtualHost *:443> ServerName files.domain-name.io ServerAlias www.files.domain-name.io DocumentRoot /var/www/nextcloud/ Protocols h2 http/1.1 # auto redirect www to non-www <If "%{HTTP_HOST} == 'www.files.domain-name.io'"> Redirect permanent / https://files.domain-name.io/ </If> # log files ErrorLog /var/log/apache2/files.domain-name.io-error.log CustomLog /var/log/apache2/files.domain-name.io-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/files.domain-name.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/files.domain-name.io/privkey.pem # HSTS <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory> </VirtualHost>
Drücke „Strg+x“ und gib „Y“ ein, dann drücke„Enter„, um die Konfiguration zu speichern und zu beenden.
2. Aktiviere nun die Konfiguration des virtuellen Hosts„nextcloud.conf„, indem du den folgenden Befehl ausführst.
a2ensite nextcloud.conf
3. Überprüfe die neue Apache-Konfiguration und vergewissere dich, dass kein Fehler aufgetreten ist, dann starte den Apache-Dienst neu.
apachectl configtest systemctl restart apache2
Nextcloud-Installation
Wenn die Serverkonfiguration abgeschlossen ist, kannst du mit dem Webbrowser auf deine Nextcloud-Installation zugreifen.
1. Öffne deinen Webbrowser und gib die URL-Adresse deiner Nextcloud-Installation ein.
https://files.domain-name.io
Lege deinen ersten und deinen Admin-Benutzer für Nextcloud an. Das Datenverzeichnis ist für den Benutzer„www-data“ beschreibbar.
2. Scrolle die Seite nach unten und gib den Datenbanknamen, den Benutzer und das Passwort ein. Entferne das Häkchen bei der Option„Empfohlene Anwendungen installieren„, um die Installation zu beschleunigen. Klicke dann auf die Schaltfläche„Installation beenden„, um Nextcloud zu installieren.
3. Wenn die Installation erfolgreich war, siehst du das Nextcloud-Dashboard wie unten abgebildet.
4. Klicke auf das Benutzersymbol oben rechts und dann auf das Menü„Einstellungen„. Im Bereich„Verwaltung“ klickst du auf„Übersicht„.
- Im Abschnitt „Sicherheits- und Einrichtungswarnungen“ findest du einige Empfehlungen, die du je nach deiner Installationsumgebung befolgen musst.
- Im Abschnitt „Versionen“ siehst du den aktuellen Zweig deiner Nextcloud-Installation.
5. Klicke als Nächstes auf das Menü„System“ am unteren Rand des Abschnitts„Verwaltung„.
Dort siehst du Details zu deiner Umgebung, zur Systemauslastung, zum Speicherplatz, zum Speicherstatus, zum Netzwerkstatus usw.
6. Wie bereits erwähnt, ist die Nextcloud mehr als nur ein Dateisynchronisationsdienst. Durch die Unterstützung zusätzlicher Apps/Plugins ist sie zu einem Kollaborationswerkzeug geworden.
Klicke auf dem Profilsymbol oben rechts auf das Menü„Apps“ und du siehst den nextcloud-Apps-Store wie unten.
Wähle die Apps aus, die du installieren möchtest, und klicke dann auf die Schaltfläche„Herunterladen und aktivieren„, um neue Apps zu installieren.
7. Unten siehst du die Standardansicht des Nextcloud-Benutzer-Dashboards. Du kannst die Funktionalität deines Dashboards erweitern, indem du zusätzliche Plugins installierst.
Nextcloud-Performance-Tuning
Nach der Installation von Nextcloud kannst du einige weitere Schritte unternehmen, um die Leistung von Nextcloud zu erhöhen, indem du den lokalen Speicher-Cache aktivierst und einen Cronjob für Nextcloud selbst einrichtest.
1. Im oberen Abschnitt der PHP-Installation hast du bereits PHP für das Caching eingerichtet. Um das Caching auf Nextcloud zu aktivieren, bearbeite die Nextcloud-Konfiguration „config.php“.
Wechsle das Arbeitsverzeichnis zu„/var/www/nextcloud/config“ und bearbeite die Konfiguration„config.php“ mit dem Editor nano.
cd /var/www/nextcloud/config/ nano config.php
Füge die folgende Konfiguration innerhalb der„array ( .. );„-Klammer wie folgt ein
<?php $CONFIG = array ( .... # Additional configuration 'memcache.local' => '\OC\Memcache\APCu', );
Drücke jetzt die Taste„Strg+x“ und gib„y“ ein, dann drücke„Enter„, um die Konfiguration zu speichern und zu beenden.
2. Ein Nextcloud-System muss regelmäßig und ohne Zutun des Benutzers/Administrators einige Hintergrundaufgaben ausführen. Dazu kannst du den Cronjob für die Aufgabenplanung von Nextcloud verwenden.
Auf dem Debian-Linux-System läuft die Apache-Installation standardmäßig unter dem Benutzer„www-data„. Erstelle mit dem unten stehenden Befehl einen neuen Cronjob für den Benutzer„www-data„.
crontab -u www-data -e
Wenn du mehrere Editoren auf deinem System hast, wähle den Editor, den du am liebsten benutzt. Für diese Anleitung verwenden wir den nano-Editor.
Füge die folgende Konfiguration hinzu.
*/5 * * * * php -f /var/www/nextcloud/cron.php
Speichere die Konfiguration und beende sie.
Cronjob-Konfiguration, die du kennen musst:
- Diese Cronjob-Konfiguration ermöglicht es dem Benutzer„www-data„, das PHP-Skript„/var/www/nextcloud/cron.php“ alle 5 Minuten auszuführen.
Um die Cronjob-Konfiguration zu überprüfen, kannst du den folgenden Befehl ausführen.
crontab -u www-data -l
Wenn deine Konfiguration erfolgreich ist, bekommst du die Konfiguration oben als Ausgabe. Andernfalls erhältst du ein leeres Ergebnis.
Fazit
Herzlichen Glückwunsch! Du hast Nextcloud erfolgreich auf Debian 11 Bullseye installiert. Der Nextcloud-Server läuft unter dem LAMP-Stack mit aktiviertem SSL. Außerdem läuft deine Nextcloud-Installation mit aktiviertem Memory Caching und den PHP-Erweiterungen APC und opcache.