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
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;
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
Aktivieren der Änderungen
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/
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:
/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. |