HowTo: Nextcloud-Server installieren – Teil 2

Nextcloud-Logo [1]

Dies ist der 2. Teil der Installationsanleitung. Der erste Teil unterscheidet sich je nach Anforderung:

siehe auch [2]

Die Dienste einrichten

Zusätzliche Pakete installieren

der Server läuft in einer LAMP-Umgebung. LAMP steht dabei für Linux, Apache, Mysql und Php. Statt Mysql wird die freie Variante MariaDB verwendet.

Zum Installieren der Dienste Sie auf dem künftigen Nextcloud-Server folgendes ein:

> sudo apt update
> sudo apt upgrade
> sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip

MYSQL konfigurieren

> sudo mysql 
MariaDB [none]> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
MariaDB [none]> CREATE DATABASE IF NOT EXISTS nc CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [none]> GRANT ALL PRIVILEGES ON nc.* TO 'username'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES;
MariaDB [none]> quit

Nextcloud-Software herunterladen und installieren

Laden Sie die aktuelle Version der Nextcloud-Software herunter:

Überprüfen Sie sicherheitshalber die Checksumme und laden Sie dann die Datei auf den Server hoch. Dort wird sie entpackt (dabei entsteht ein Ordner “nextcloud”):

$ ssh <Benutzername>@ncserver mkdir ~/Downloads
$ scp latest.zip <Benutzername>@ncserver:~/Downloads
$ ssh <Benutzername>@ncserver
<benutzername>@ncserver:~$ cd Downloads
<benutzername>@ncserver:~$ unzip latest.zip
Nach dem Entpacken

Kopieren Sie nun den Inhalt des Ordners “nextcloud” in den Webspache (ich bevorzuge den Ordner /var/www/nextcloud) und passen Sie die Zugriffsrechte an:

> sudo cp -r nextcloud /var/www/nextcloud
> sudo chmod -R www.data:www.data /var/www/nextcloud

Apache anpassen

Erstellen Sie nun eine Konfigurationsdatei /etc/apache2/sites-available/nextcloud.conf mit folgendem Inhalt:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
ServerName cloud.capello.info

<Directory /var/www/nextcloud>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
Satisfy Any

<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>

Mit dem folgenden Kommando werden alle aktiven Sites angezeigt.

> ls /etc/apache2/sites-enabled

Sollt die Ausgabe so aussehen:

… müssen Sie zuerst alle nicht benutzten Sites deaktivieren

> sudo a2dissite 000-default.conf

Jetzt wird kann “nextcloud.conf” aktiviert werden:

> sudo a2ensite nextcloud.conf

Weiterhin werden folgende Module beötigt:

> sudo a2enmod rewrite
> sudo a2enmod headers
> sudo a2enmod env
> sudo a2enmod dir
> sudo a2enmod mime

Nun aktivieren Sie das Ganze mit

> sudo systemctl reload apache2 

SSL aktivieren

Um SSL mit dem mitgelieferten selbstgenerierten Zertifikat zu aktivieren geben Sie bitte Folgendes ein:

> sudo a2enmod ssl
> sudo a2ensite default-ssl.conf
> sudo systemctl reload apache2

Gnererieren sie ein Zertifikat mit Lets-encrypt.

> sudo snap install --classic certbot
> sudo ln -s /snap/bin/certbot /usr/bin/certbot
> sudo certbot --apache

PHP-Module und zusätzliche Hilfsprogramme aktivieren

$ sudo apt install imagemagick imagemagick.doc
$ sudo apt install ffmpeg
$ sudo apt install libreoffice
$ sudo apt install clamav
$ sudo apt install redis-server

$ sudo apt install php-ctype php-curl php-dom php-gd php-json
$ sudo apt install php-libxml php-mbstring php-posix php-session
$ sudp apt install simplexml php-xmlreader php-xmlwriter
$ sudo apt install php-zip php-zlib
$ sudo apt install php-mysql php-pdo-mysql
$ sudo apt install php-ldap php-smbclient php-ftp php-imap
$ sudo apt install php-bcmath php-gmp php-exif php-redis
$ sudo apt install php-imagick php-pcntl php-phar

Installation Wizard

— MISSING-TEXT —

Besondere Einstellungen (Serveroptimierung)

Hintergrundjobs

Hintergrundjob für User www-data hinzufügen:

> sudo crontab -u www-data -e

Fügen Sie diese Zeile an:

Einstellung in der Cloud (Grundeinstellungen):

Grundeinstellungen

Apache optimieren

HSTS aktivieren

Ergänzen Sie /etc/apache2/sites-available/nextcloud-le-ssl.conf wie folgt:

<VirtualHost *:443>
  ServerName cloud.nextcloud.com
    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>
 </VirtualHost>

PHP-Anpassungen

php sucht seine Einstellungen ja nach Umgebung in einer anderen Datei. Diese befinden sich alle in Unterordnern von /etc/php/<version>. Am besten Sie führen alle Änderungen in einer Datei durch (z.B. /etc/php/<version>/apache2) und kopieren diese anschließend in die anderen Verzeichnisse.

APCu für CLI (command line interface) aktivieren

Es genügt, wenn Sie diese Einstellung nur in /etc/php/8.1/cli/php.ini durchführen; schadet aber nicht, wenn sie in allen steht. Ergänzen Sie die Datei durch die Zeile

apc.enable_cli = 1

Memory Limit anpassen

Ändern Sie die Datei /etc/php/8.1/apache2/php.ini:

OPCache aktivieren

Suchen Sie in der Datei /etc/php/8.1/aoache2/php.ini die unten angegebenen Einstellungen und passen Sie sie gegebenenfalls an:

opcache.enable = 1
opcache.save_comments = 1

php.ini kopieren

Wahrscheinlich haben Sie die Änderungen nur ein einer php.ini vorgenommen (im Beispiel die im Unterverzeichnis apache2) . Stellen Sie sicher, dass diese auch den anderen bekennt werden:

Nextcloud-Einstellungen

Memcaches (APCu und Redis) aktivieren [3]

Falls nicht schon geschehen:

$ sudo apt install php-apcu php-redis

Einstellung in /var/www/nextcloud/config/config.php hinzufügen:

  'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],

Zeitintensive Hintergrundjobs

Durch diese Einstellung in /var/www/nextcloud/config/config.php werden zeitintensive Hintergrundjobs in der Nacht zwischen 1 Uhr und 5 Uhr ausgeführt (Startzeit = 1 Uhr; Zeitraum ist fest eingestellt 4 Stunden):

'maintenance_window_start' => 1,

Logfile

Das Logfile findet man meist im Datenverzeichnis; besser, man legt es an dem dafür vorgesehenen Ort (/var/log) ab. Allerdings hat der Webuser www-data hier keine Zugriffsrechte. Aus diesem Grund wird dort zuerst ein Unterverzeichnis mit den passenden Rechten erzeugt:

> sudo mkdir /var/log/nextcloud
> sudo chown www-data:adm /var/lg/nextcloud
> sudo chmod 775 /var/log/nextcloud

Jetzt können in der Datei /var/www/nextcloud/config/config.php folgende Zeilen eingefügt werden:

  'log_type' => 'file',
'logtimezone' => 'Europe/Berlin',
'logfile' => '/var/log/nextcloud/nextcloud.log',
'loglevel' => 2,

Spezielle Themen

Datenrücksicherung

Einzelnachweise

[1]Von https://nextcloud.com/ – https://nextcloud.com/wp-content/themes/next/assets/img/common/logo_nextcloud.svg, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=50141243
[2] Nextcloud Dokumentation, Example installation on Ubuntu 22.04 LTS, https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html, abgerufen am 17.06.24
[3]Mehr zum Thema Memory Caching:
https://docs.nextcloud.com/server/29/admin_manual/configuration_server/caching_configuration.html
[4]