Installation und Konfiguration der Nextcloud unter Debian 12

Wer sich mit dem Thema Self-Hosting auseinander setzt kommt früher oder später auf das Thema Nextcloud. Und wenn du einen vServer mit genügend freiem Speicherplatz hast, kannst du dir ja einen Cloud Server aufsetzen. Wenn du wissen willst wie, hier folgt jetzt die Anleitung.

Apache2 Webserver Installation

Zuerst installieren wir einen Webserver, ohne diesen bekommen wir nix im Browser angezeigt.
Mit dem folgenden Command wird Apache2 auf deinem Server installiert:

sudo apt install apache2

UFW installieren

Ohne eine Firewall geht es nicht. Die bekannteste Firewall ist IPTables. Aber diese ist in der Konfiguration ziemlich schwierig. Daher nutzen wir für unseren Server UFW.
Also gleich mal installieren:

sudo apt install ufw

Nun müssen wir die Firewall “UFW” noch konfigurieren.
Die Firewall blockiert per Anfangseinstellung alle Ports, d.h. das erst einmal kein Dienst von Außen aufgerufen werden kann. Aber wir brauchen ein paar offene Ports, damit wir unserer Server nutzen können. Da fällt mir gleich der erste ein, der SSH Port, sonst kannst du dich nicht an der Konsole anmelden. Also stellst du diesen eine. Diesen Port solltest du von 22 auf einen Wunschport ändern im Kapitel “Konfiguration SSH”. Bei mir nehme ich jetzt Port 10240 diesen habe ich in der SSH-Konfigurtion so gesetzt. Dazu mehr findest du in dem Beitrag Absicherung eines Debian Server.

sudo ufw allow 10240/tcp 

Dann öffnen wir gleich mal noch die Ports HTTP und HTTPS diese werden in der Regel benötigt. Wenn du keinen Webserver betreiben möchtest, kannst du diesen Schritt überspringen.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Jetzt hast du die ersten Ports geöffnet aber müssen noch die Firewall einschalten. Daher ist es wichtig das du den richtigen SSH Port angegeben haben, sonst sperrst du dich selbst aus dem System aus.
Firewall einschalten:

sudo ufw enable 

Diese Info musst du mit einem “y” bestätigen.
Es kommt noch die Meldung: “Firewall is active and enabled on system startup”
Im Anschluss ist nun auch die Firewall aktiv. Und sollte einige Angriffe abhalten. Wenn du einen neuen Dienst installierst, musst du dann in Zukunft die dazugehörigen Ports öffnen.

Installation PHP 8.2

Über diesen Befehl wird PHP 8.2 installiert und dazu noch einige Plugins welche für die reibungslose Funktion von Nextcloud benötigt werden.

sudo 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 libmagickcore-dev php-redis php-memcached

Jetzt kannst du direkt nach der Installation checken, ob auch das Richtige installiert wurde

php --version

Nun musst du noch die Konfigurationsdatei für Nextcloud anpassen. Alles Stück für Stück.
Mit dem nächsten Befehl kannst du die Config Datei öffnen.
Da diese Datei sehr lang ist und das stressig wird die einzelnen Werte zu suchen, kannst du die Suchfunktion von nano nutzen. Wenn du im Editor bist kannst du einfach [Strg]+[W] drücken dann erscheint eine Suchleiste. Gib einfach deinen Begriff ein und du springst an die Stelle in der Config Datei.

sudo nano /etc/php/8.2/apache2/php.ini

Kommentiere aus den Parameter date.timezone und geben Sie die richtige Zeitzone für PHP ein.

date.timezone = Europe/Berlin

Erhöhen Sie den Standardwert der Parameter memory_limit, upload_max_filesize, post_max_size und max_execution_time. Passe die Werte nach Bedarf an. Das Memory_limit orientiert sich stark am Arbeitsspeicher. Mein Server hat nur 1GB also belasse ich es bei 512MB.

memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300

Setze die Erlaubnis das Datein hochgelanden werden dürfen.

file_uploads = On
allow_url_fopen = On

Wenn das auf off steht werden mögliche Fehler in der Software Nextcloud ausgeblendet das ist besser für die Sicherheit des gesamten Systems.

display_errors = Off
output_buffering = Off

Kommentiere den Parameter zend_extension aus und ändere den Wert in opcache. Dadurch wird PHP OPcache aktiviert, das für Nextcloud benötigt wird.


zend_extension=opcache

Passe die opcache Werte wie folgt an. Dies wird auch von Nextcloud benötigt.

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

Jetzt, wenn alle Werte angepasst sind, kannst du den Apache2 Server neustarten und damit die neue Konfiguration aktivieren.

sudo systemctl restart apache2

Installation MariaDB Server

Nachdem du nun den Apache2 Webserver und PHP in der Version 8.2 installiert hast, brauchen wir noch einen Datenbank Server. Hier installieren wir MariaDB Server.

sudo apt install mariadb-server

Nach der Installation kannst du mit folgendem Befehl schauen ob der Server läuft

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Wenn alles glatt gelaufen ist sollte es in etwa so bei dir aussehen

Jetzt musst du noch den MariaDB Server absichern, das passiert mit dem folgenden Befehl

sudo mariadb-secure-installation

Während des Prozesses solltest du “Y” eingeben, um zuzustimmen und die Konfiguration auf MariaDB anzuwenden, oder “n” eingeben, um nicht zuzustimmen und die Konfiguration als Standard zu belassen. Nachstehend findest einige MariaDB-Konfigurationen, nach welchen du gefragt werden wirst.

  • Drück ENTER wenn du nach dem MariaDB root password gefragt wirst
  • Gib n ein wenn du noch unix_socket_authentication method gefragt wirst
  • Gib Y ein, um ein neues Passwort für den MariaDB-Root-Benutzer einzurichten. Gib dann das neue Kennwort ein und wiederholen den Vorgang.
  • Gib Y ein, um den anonymen Standardbenutzer aus MariaDB zu entfernen.
  • Gib dann erneut Y ein, um die Remote Anmeldung für den MariaDB-Root-Benutzer zu deaktivieren.
  • Gib Y ein, um den Standard-Testdatenbank von MariaDB zu entfernen
  • Gib abschließend erneut Y ein, um die Tabellenberechtigungen neu zu laden und die Änderungen zu übernehmen.

Nun ist MariaDB fertig installiert und abgesichert.

Datenbank und User erstellen

Nun legst du eine Datenbank an und dazu einen Nutzer an, beides brauchst du für die Installation von Nextcloud. In der Datenbank werden dann später z.B. die Kalenderdaten, Kontakte usw.

Mit dem Befehl meldest du dich am Datenbank-Server an:

sudo mariadb -u root -p

Das sind die Befehle zum erstellen der Datenbank und des Users
Am besten du kopierst die Zeilen einzeln in die Konsole und drückst jeweils ENTER

CREATE DATABASE nextcloud_db;
CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost;
FLUSH PRIVILEGES;

Mit dem Befehl “quit” meldest du dich vom Datenbank-Server ab.

Download Nextcloud

Um den Download von Nextcloud zu verarbeiten benötigst du noch zwei Tools, die du nun installieren wirst. Das ist “wget” zum Download von Nextcloud und “unzip” zum Entpacken.

sudo apt install wget unzip -y

Jetzt wechseln wir in das Verzeichnis, wo die Programmdaten von Nextcloud hin kommen.

cd /var/www/

Dann laden wir das Softwarepaket von Nextcloud

sudo wget https://download.nextcloud.com/server/releases/latest.zip

Dann wird die *.zip Datei entpackt

sudo unzip latest.zip
ls

Dann vergibst du noch für den gesamten Ordner “nextcloud” die nötigen Rechte.

sudo chown -R www-data:www-data nextcloud

Erstellen des VirtualHosts unter Apache2

Nachdem du das Nextcloud Softwarepaket heruntergeladen hast, musst du die neue Konfiguration des virtuellen Apache2-Hosts erstellen, der für den Betrieb von Nextcloud verwendet werden soll. Stell sicher, dass die Domain auf die IP-Adresse deines Debian-Servers für deine Nextcloud-Installation zeigt.

Nun erstellen wir den vituellen Host unter Apache2
Wir legen dazu eine neue Datei im Verzeichnis /etc/apache2/sites-available/

sudo nano /etc/apache2/sites-available/nextcloud.conf

Das kommt in die Datei rein. Passe bite deine Domain unter ServerName an. Bei mir steht dort storage.cy3er.de

<VirtualHost *:80>
    ServerName storage.cy3er.de
    DocumentRoot /var/www/nextcloud/

    # log files
    ErrorLog /var/log/apache2/files.hwdomain.io-error.log
    CustomLog /var/log/apache2/files.hwdomain.io-access.log combined

    <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>

Speicher die Datei und verlasse den Editor.

Dann noch zwei Commands

sudo a2ensite nextcloud.conf
sudo apachectl configtest

Mit dem ersten Befehl legen wir mit dem virtuellen Host eine neue Seite an die der Webserver nun bereit stellt. Der zweite Befehl checkt ob die Syntax von der Konfiguration so passt.

Nun starten wir nochmal den Apache2 Webserver neu.

sudo systemctl restart apache2
Absicherung der Nextcloud mit SSL-Zertifikat

Um eine zusätzliche Sicherheitsebene für Ihre Nextcloud hinzuzufügen, richten Sie HTTPS innerhalb Ihrer virtuellen Apache2-Host-Konfiguration über Certbot ein. Certbot ist ein Tool zur Generierung kostenloser SSL/TLS-Zertifikate von Letsencrypt.
Erstmal muss dieses Tool aber installiert werden:

sudo apt install certbot python3-certbot-apache

Und dann nutzen wir gleich das Tool um unser Zertifikat zu erzeugen und es dann mit unserer Seite zu verknüpfen. In dem Command müsst ihr eure E-Mail anpassen und auch eure Domain/Subdomain.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email hi@cy3er.de -d storage.cy3er.de

Wenn alles durchgelaufen ist müsste es bei dir möglich sein die Domain aufzurufen ohne eine Sicherheitsmeldung zu bekommen. Dort erscheint dann die Installationsmaske von der Nextcloud.

Installation der Nextcloud

In diesem Abschnitt startest du die Nextcloud-Installation über den Webbrowser. Dabei wirst du den Admin-Benutzer für Nextcloud anlegen.

Ruf den Webbrowser auf und gib deinen Domainname deiner Nextcloud-Installation auf (z.B.: http://storage.cy3er.de/). Du solltest automatisch auf eine sichere HTTPS-Verbindung umgeleitet werden und , wirst aufgefordert einen Administrator-Benutzer für Nextcloud anzulegen.

Benutzername und Passwort kannst du selber wählen. Das wird dann automatisch der Admin-Account.

Dann musst du noch die Datenbank Daten eintragen Username, Datenbankname und Passwort.
Diese haben wir in dem Schritt “Datenbank und User erstellen” angelegt.

Dann wenn du alle Daten eingetragen hast, brauchst du nur noch auf installieren drücken. Das dauert dann einen kleinen Moment je nachdem wie schnell dein Server so ist.
Das ist dann auch das Ende. Du hast fertig einen Nextcloudserver installiert. Jetzt wird dir nur noch eine Frage gestellt, ob du ein paar nützliche Tools installieren willst. Das kannst du entscheiden danach bist du dann aber wirklich fertig.