Nachdem ich im letzten Teil kurz angerissen habe, was Nextcloud ist und wozu man das braucht, wird’s in diesem Teil etwas praktischer: Wir installieren die Software. Hier stehen vom Raspberry Pi über Docker-Container bis hin zu ganzen Rechenzentren so ziemlich alle Türen offen.

Für den Raspi gibt es ein fertiges Image (NextcloudPi). Das wird einfach auf eine SD-Karte geflashed und der Pi damit gestartet. Grundsätzlich ist dagegen nichts einzuwenden. Allerdings können SD-Karten nur eine begrenzte Menge Schreibzyklen ab. Das heißt nicht, dass so ein System nur ein paar Tage halten wird. Wenn aber das Geschichtsreferat der Kinder einem Kartenfehler zum Opfer fällt, kann das ärgerlich sein (ich weiß, dass man den Raspberry Pi auch mit Festplatten betreiben kann, aber das würde den Rahmen dieses Artikels sprengen).

Mit Docker kenne ich mich nur ganz rudimentär aus, deshalb scheidet die Installation in einem Container aus; das hatte ich mal probiert, war aber nie richtig glücklich damit: Für Updates war ich zu doof, es fehlten einzelne PHP-Plugins, bei den Zugriffen kam es zu Fehlern. Das soll nicht heißen, dass Docker nicht funktioniert. Für meine Zwecke scheint es allerdings nicht der Weisheit letzter Schluss zu sein.

Da mir ein Rechenzentrum noch fehlt, beschränke ich mich auf die Installation in einer virtuellen Maschine. Die Einrichtung habe ich hier beschrieben. Daran hat sich nicht geändert, nur das Betriebssystem ist mittlerweile Ubuntu 22.04. Ist die Maschine aufgesetzt und aktualisiert, installieren wir ein paar „Kleinigkeiten“, die für eine Webanwendung erforderlich sind: Apache, PHP und MariaDB. Zuerst fügen wir das Repository für die aktuelle PHP-Version hinzu und aktualisieren unsere Paketquellen. Dann installieren wir den Webserver, PHP und Datenbank in einem Rutsch:

add-apt-repository ppa:ondrej/php
apt update
apt install apache2 \
            software-properties-common \
            php \
            libapache2-mod-php \
            php-zip php-dompdf \
            php-xml \
            php-mbstring \
            php-gd \
            php-curl \
            php-imagick \
            libmagickcore-6.q16-6-extra \
            php-intl \
            php-bcmath \
            php-gmp php-cli \
            php-json \
            php-mysql \
            php-zip \
            php-gd \
            php-mbstring \
            php-curl \
            php-xml \
            php-pear \
            unzip \
            nano \
            php-apcu \
            redis-server \
            ufw \
            php-redis \
            mariadb-server

Ist das erledigt (das sind ein paar Pakete mehr, deshalb kann das ein paar Sekunden dauern), passen wir ein paar Kleinigkeiten in der Datei /etc/php/8.1/apache2/php.ini an:

memory_limit = 1024M
upload_max_filesize = 20G
post_max_size = 20G
date.timezone = Europe/Berlin
output_buffering = Off

Die Einträge sollten vorhanden sein; in dem Fall müssen nur die Werte angepasst werden. Sind sie nicht vorhanden, werden sie am Ende der Datei eingefügt.

Danach sichern wir den Datenbankserver ab:

mysql_secure_installation

Hier vergeben wir ein sicheres root-Passwort (das wir uns natürlich auch merken). Die übrigen Einstellungen belassen wir so, wie sie vom Assistenten vorgeschlagen werden.

Danach melden wir uns bei MariaDB an, erstellen die Datenbank und einen Benutzer und geben dem Benutzer Rechte auf die Datenbank:

Die Befehle im Einzelnen:

CREATE DATABASE NextcloudDB; 
Damit erstellen wir eine Datenbank mit dem Namen NextcloudDB
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY 'GeheimesPasswort';
Dies erzeugt einen Benutzer namens ncuser und dem Passwort „GeheimesPasswort“ – natürlich vergeben wir auch hier eines, das etwas sicherer ist…
GRANT ALL PRIVILEGES ON NextcloudDB.* TO 'nextclouduser'@'localhost';
Damit legen wir fest, dass der Benutzer ncuser sämtliche Rechte auf allen Objekten der Datenbank NextcloudDB hat.
FLUSH PRIVILEGES;
Mit dieser Anweisung werden die geänderten Berechtigungen gespeichert.
EXIT;
Hiermit beenden wir die MariaDB-Sitzung.
PHP und die Datenbank sind jetzt soweit eingerichtet, dass die eigentliche Installation von Nextcloud losgehen kann. Da dieser Artikel aber schon etwas länger geworden ist, werde ich die Nextcloud-Installation im nächsten Teil fortsetzen.