Zum Inhalt

Nextcloud Quick Install v1 (2022.12)

Installation auf einem Ubuntu 22.04 LTS.

Verwendete User und Passwörter

Username: Admin
Passwort: Start#1234

UserDaten - Nutzdaten: /var/www/nextcloud/data

Datenbank User: nc_user
Datenbank Passwort: nc_pass
Datenbank Name: nextcloud
Datenbank Server: localhost

Vorbereitung des Webservers

Benötigte Pakete

root@nc:~# apt update && apt upgrade -y

apt install -y apache2  mariadb-server openssl php wget curl zip unzip php-mysql php-zip libapache2-mod-php php-xml php-mbstring php-gd php-curl php-apcu php-intl php-bcmath php-gmp php-imagick libmagickcore-6.q16-6-extra

MariaDB - Datenbank

mysql_secure_installation
    Enter current password for root (enter for none):
    Switch to unix_socket authentication [Y/n] n
    Change the root password? [Y/n] Y
    New password:SQL#Root
    Re-enter new password:SQL#Root
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] Y
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y
Nextcloud DB Einrichten

root@nc:~# mysql
    create database nextcloud;
    create user 'nc_user'@'localhost' identified by 'nc_pass';
    grant all privileges on nextcloud.* to 'nc_user'@'localhost' identified by 'nc_pass';
    flush privileges;
    exit;   
Testen

root@nc:~# mysql -u nc_user -p
    show databases;
    exit;

Webserver Anpassen

Apache2 Anpassen

root@nc:~# vi /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/nextcloud

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

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

</VirtualHost>

PHP Anpassungen

root@nc:~# vi /etc/php/8.1/apache2/php.ini
    output_buffering = Off
    memory_limit = 2048M
    upload_max_filesize = 20G
    post_max_size = 20G
    opcache.interned_strings_buffer=16
vi /etc/php/8.1/mods-available/apcu.ini
extension=apcu.so
apc.enable_cli=1

Aktivieren der Änderungen

a2enmod rewrite
root@nc:~# systemctl restart apache2
root@nc:~# mkdir /var/www/nextcloud
root@nc:~# cd /var/www/nextcloud/
root@nc:/var/www/nextcloud# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
root@nc:/var/www/nextcloud# cd ..
root@nc:/var/www# chown -R www-data:www-data nextcloud/
root@nc:~# vi /var/www/nextcloud/config/config.php

IP-Adresse im Webbroser aufrufen, es sollte die Initiale Installations Seite der Nextcloud zu sehen sein.

Hintergrundjobs mit Cron einrichten

Nach der abgeschlossenen Nextcloud-Installation legen wir einen Cronjob für den Webserverbenutzer www-data an. Alle fünf Minuten wird cron.php ausgeführt. Die folgenden Shell-Befehle werden als Administrator ausgeführt:

apt install cron
systemctl enable --now cron
sudo -u www-data php -d apc.enable_cli=1 /var/www/nextcloud/occ background:cron
crontab -u www-data -e

Füge in dieser Benutzer-Crontab eine eigene Zeile ein, ohne bereits vorhandene Aufgaben zu löschen. Anders als in /etc/crontab wird hier kein Benutzername ergänzt:

*/5 * * * * /usr/bin/php -d apc.enable_cli=1 -f /var/www/nextcloud/cron.php

/usr/bin/php muss auf eine von Deiner Nextcloud-Version unterstützte PHP-CLI-Version zeigen. Prüfe dies mit /usr/bin/php -v und /usr/bin/php --ini; Webserver und CLI können unterschiedliche Versionen und Konfigurationsdateien verwenden.

Kontrolle: Zuerst einen Durchlauf manuell starten:

sudo -u www-data /usr/bin/php -d apc.enable_cli=1 -f /var/www/nextcloud/cron.php
crontab -u www-data -l

Ein erfolgreicher Durchlauf muss keine Ausgabe erzeugen. Prüfe anschließend in den Administrationseinstellungen unter „Grundeinstellungen“ den Cron-Modus und nach einigen Minuten den Zeitpunkt der letzten Ausführung. Fehler bei fehlenden PHP-Modulen oder Cache-Zugriffen zuerst beheben. Das Wartungsfenster allein ersetzt diese Einrichtung nicht.

Die Einstellung 'maintenance_window_start' => 1, bezieht sich auf 01:00 UTC und verschiebt geeignete tägliche Aufgaben in ein vierstündiges Fenster. Andere Jobs laufen weiterhin regelmäßig.

HTTPS ergänzen

Diese Schnellanleitung richtet zunächst HTTP für die Testumgebung ein. Vervollständige sie mit TLS, HTTPS-Weiterleitung und HSTS aus Teil 3. Die Apache-Konfiguration dort ist auch für diese Variante nutzbar; die PHP-Version bleibt die zur jeweiligen Nextcloud-Version passende Version der Testumgebung.

Info zu den Modulen

Ubuntu 22.04 und PHP 8.1:

Alternativ kann man auch die generischen Paketnamen (z.B. php-mysql oder php-imagick) verwenden; das System installiert dann automatisch die passende Version für die Standard-PHP-Umgebung.

Modul Bedeutung und Funktion
apache2 Der Apache HTTP Server, einer der am häufigsten verwendeten Webserver.
mariadb-server MariaDB, eine relationale Datenbank, die eine Abspaltung von MySQL ist.
openssl Eine Toolkit-Implementierung des Secure Sockets Layer (SSL) und Transport Layer Security (TLS) Protokolls.
php PHP, eine Skriptsprache, die hauptsächlich für die serverseitige Webentwicklung verwendet wird.
wget Ein Befehlszeilenprogramm zum Herunterladen von Dateien aus dem Internet.
curl Ein Befehlszeilen-Tool für die Datenübertragung mit URL-Syntax.
zip und unzip Werkzeuge zum Komprimieren und Dekomprimieren von Dateien und Verzeichnissen.
php-mysql PHP-Erweiterung für die MySQL-Datenbankanbindung.
php-zip PHP-Erweiterung für die Arbeit mit ZIP-Archiven.
libapache2-mod-php Apache-Modul für die Integration von PHP in den Webserver.
php-xml PHP-Erweiterung für die Verarbeitung von XML-Dokumenten.
php-mbstring PHP-Erweiterung für Multibyte-String-Manipulationen.
php-gd PHP-Erweiterung für die dynamische Erzeugung von Bildern.
php-curl PHP-Erweiterung für die Unterstützung von cURL, einem Werkzeug für die Datenübertragung mit URLs.
php-apcu PHP-Erweiterung für den Alternativen PHP Cache - User Cache, ein Cache-System für PHP-Anwendungen.
php-intl PHP-Erweiterung für Internationalisierung und Lokalisierung.
php-bcmath PHP-Erweiterung für präzise mathematische Berechnungen mit beliebiger Genauigkeit.
php-gmp PHP-Erweiterung für GNU Multiple Precision, für mathematische Operationen.
php-imagick PHP-Erweiterung für die Manipulation von Bildern mit der ImageMagick-Bibliothek.
libmagickcore-6.q16-6-extra Zusätzliche Bibliotheken für ImageMagick, die für die Bildmanipulation benötigt werden.

Konfigurationsoptionen (für PHP 8.1 php.ini)

Konfigurationsoption Bedeutung
output_buffering = Off Deaktiviert den Ausgabe-Puffer.
memory_limit = 2048M Legt das maximale Limit für den Speicherverbrauch eines einzelnen PHP-Skripts auf 2048 Megabyte fest.
upload_max_filesize = 20G Definiert die maximale Größe von hochgeladenen Dateien auf 20 Gigabyte.
post_max_size = 20G Legt das maximale Limit für die Größe aller POST-Daten in einem HTTP-POST-Request auf 20 Gigabyte fest.
opcache.interned_strings_buffer=16 Reserviert 16 Megabyte Speicher im OPcache für internierte Zeichenketten, was die Leistung in Bezug auf Zeichenkettenoptimierung unterstützt.
extension=apcu.so Aktiviert die Erweiterung "apcu.so" (Alternative PHP Cache - User Cache), die einen benutzerdefinierten Cache für PHP-Anwendungen bereitstellt.
apc.enable_cli=1 Aktiviert den APC-Cache auch für PHP-CLI (Command Line Interface) Anwendungen.