Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Nextcloud LAMP
Lernziel
Installation einer Nextcloud
Diese Anleitung ist für Ubunut 24.04 und Nextcloud Hub 25 Autumn (32.0.5) - 2026.02
Voraussetzungen
- Grundkentnisse der Linux CLI.
- Verständniss zur Software Installation auf einem Linux System.
Theorie
Diese Dokumentation beschreibt die installierten Systempakete und PHP-Konfigurationen, die für den stabilen Betrieb einer Nextcloud-Instanz unter Ubuntu 24.04 erforderlich sind. Die Auswahl der Pakete und die Optimierung der php.ini-Werte gewährleisten dabei maximale Performance, eine zuverlässige Verarbeitung großer Dateiuploads und die Unterstützung für Echtzeit-Benachrichtigungen.
Installation der notwendiben Pakete
apt install -y apache2 mariadb-server openssl zip unzip wget curl php php-gmp php-intl \ php-gd php-mysql php-curl redis-server php-redis php-apcu php-imagick libmagickcore-6.q16-6-extra \ php-mbstring php-bcmath php-zip php-xml php-bz2 php-pear php-memcached systemctl enable --now redis-server systemctl enable --now apache2
| Paketname | Funktion |
|---|---|
| apache2 | Der Webserver, der die Nextcloud-Anfragen verarbeitet. |
| mariadb-server | Das Datenbanksystem zum Speichern von Benutzerdaten und Metadaten. |
| openssl | Tool für Verschlüsselung (wichtig für HTTPS/SSL-Zertifikate). |
| zip, unzip | Programme zum Packen und Entpacken von Dateiarchiven. |
| wget, curl | Kommandozeilen-Tools zum Herunterladen von Dateien und Senden von API-Requests. |
| php | Das Basispaket der Skriptsprache PHP. |
| php-gmp | Unterstützung für große Zahlen (wichtig für Verschlüsselung/WebAuthn). |
| php-intl | Internationalisierungs-Funktionen (Sprachunterstützung). |
| php-gd | Grafikbibliothek zur Erstellung von Vorschaubildern (Thumbnails). |
| php-mysql | Schnittstelle zwischen PHP und der MariaDB-Datenbank. |
| php-curl | Ermöglicht PHP die Kommunikation mit anderen Servern. |
| redis-server | In-Memory Datenbank für schnelleres Caching. |
| php-redis | PHP-Erweiterung zur Anbindung an den Redis-Server. |
| php-apcu | Lokaler Cache im Arbeitsspeicher für PHP-Performance. |
| php-imagick | Bildbearbeitung (unterstützt mehr Formate als GD). |
| libmagickcore-6.q16-6-extra | Erweiterte Formatsunterstützung für die ImageMagick-Bibliothek (z. B. SVG/PDF). |
| php-mbstring | Verarbeitung von Multi-Byte-Strings (notwendig für UTF-8/Sonderzeichen). |
| php-bcmath | Präzise mathematische Berechnungen (wichtig für Passwort-Hashing). |
| php-zip | Ermöglicht PHP das Lesen und Schreiben von ZIP-Archiven. |
| php-xml | Verarbeitet XML-Daten (zwingend erforderlich für WebDAV). |
| php-bz2 | Unterstützung für Bzip2-komprimierte Dateien. |
| php-pear | Repository für PHP-Erweiterungen und Komponenten. |
| php-memcached | Alternative oder Ergänzung zu Redis für Objekt-Caching. |
Konfigurationsdateien
PHP
vim /etc/php/8.3/apache2/php.ini memory_limit = 4096M upload_max_filesize = 20G max_file_uploads = 20 post_max_size = 20G date.timezone = Europe/Berlin output_buffering = Off opcache.enable=1 opcache.enable_cli=1 opcache.max_accelerated_files=30000 opcache.memory_consumption=2048 opcache.interned_strings_buffer=64 opcache.save_comments=1 opcache.revalidate_freq=60
| PHP-Einstellung | Funktion / Bedeutung |
|---|---|
| memory_limit = 4096M | Maximaler Arbeitsspeicher, den ein PHP-Skript verbrauchen darf. |
| upload_max_filesize = 20G | Maximale Größe für eine einzelne Datei beim Hochladen. |
| max_file_uploads = 20 | Maximale Anzahl an Dateien, die gleichzeitig hochgeladen werden dürfen. |
| post_max_size = 20G | Maximalgröße der Daten, die per POST-Methode gesendet werden (sollte >= upload_max_filesize sein). |
| date.timezone = Europe/Berlin | Festlegung der Standard-Zeitzone für Zeitstempel in PHP. |
| output_buffering = Off | Deaktiviert die Pufferung der Ausgabe (zwingend erforderlich für Nextcloud-Performance). |
| opcache.enable = 1 | Aktiviert den Bytecode-Cache, damit PHP-Skripte nicht bei jedem Aufruf neu geladen werden müssen. |
| opcache.enable_cli = 1 | Aktiviert den OPcache auch für PHP-Befehle auf der Kommandozeile (wichtig für Cronjobs). |
| opcache.max_accelerated_files = 30000 | Maximale Anzahl an Dateien, die im OPcache zwischengespeichert werden können. |
| opcache.memory_consumption = 2048 | Reservierter Arbeitsspeicher in MB für den OPcache. |
| opcache.interned_strings_buffer = 64 | Speicherplatz für identische Textstrings innerhalb der PHP-Skripte zur RAM-Optimierung. |
| opcache.save_comments = 1 | Kommentare im Code werden gespeichert (wichtig, da Nextcloud diese für Annotationen ausliest). |
| opcache.revalidate_freq = 60 | Zeitintervall in Sekunden, in dem PHP prüft, ob sich Skripte geändert haben. |
MariaDB
mysql_secure_installation Enter current password for root (enter for none): Switch to unix_socket authentication [Y/n] Y Change the root password? [Y/n] Y New password: sqlroot Re-enter new password: sqlroot 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 ... ... Thanks for using MariaDB!
mysql MariaDB [(none)]> create database nextcloud; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> create user 'nc_user'@'localhost' identified by 'nc_pass'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> grant all privileges on nextcloud.* to 'nc_user'@'localhost' identified by 'nc_pass'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> exit; Bye
Apache Webserver
rm /etc/apache2/sites-enabled/000-default.conf
Apache Konfiguration
vi /etc/apache2/sites-available/netxcloud.con
<VirtualHost *:80>
# 1. Basis-Informationen
ServerAdmin master@domain.com
DocumentRoot /var/www/nextcloud/
# Ersetze 'deine-domain.de' durch deine tatsächliche Domain!
ServerName deine-domain.de
# 2. Verzeichnis-Konfiguration
<Directory /var/www/nextcloud/>
Options +FollowSymlinks MultiViews
AllowOverride All
Require all granted
# Deaktiviert WebDAV von Apache, da Nextcloud sein eigenes mitbringt
<IfModule mod_dav.c>
Dav off
</IfModule>
# Wichtig für die korrekte Pfaderkennung und zur Vermeidung von
# Warnungen in der Nextcloud-Übersicht
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
# 3. High Performance Backend (Notify Push)
# Leitet Push-Benachrichtigungen an den internen Client weiter
ProxyPass /push/ http://127.0.0.1:7867/push/
ProxyPassReverse /push/ http://127.0.0.1:7867/push/
# 4. Logging
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
</VirtualHost>
ln -s /etc/apache2/sites-available/netxcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
# Aktiviert das Basis-Proxy-Modul a2enmod proxy # Aktiviert die Unterstützung für HTTP-Proxys (wichtig für Port 7867) a2enmod proxy_http # Sicherheitshalber auch Rewrite aktivieren (braucht Nextcloud fast immer) a2enmod rewrite # Bindet PHP direkt in den Apache Webserver ein, damit .php-Dateien verarbeitet werden a2enmod php8.3 systemctl restart apache2
Nextcloud
cd /var/www/ wget https://download.nextcloud.com/server/releases/latest.zip unzip latest.zip chown -R www-data:www:data nextcloud
vim /var/www/nextcloud/config/config.php
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
),
'memcache.local' => '\\OC\\Memcache\\APCu'
'default_phone_region' => 'DE',
'maintenance_window_start' => 1,
sudo -u www-data php occ maintenance:repair --include-expensive sudo -u www-data php occ db:add-missing-indices
Es gibt einige Fehler in Ihrer Systemkonfiguration.
AppAPI-Bereitstellungs-Daemon Der Standard-Deploy-Daemon von AppAPI ist nicht eingerichtet. Bitte in den Einstellungen einen Standard-Deploy-Daemon registrieren, um externe Apps (Ex-Apps) zu installieren.
- Kann in den App-Einstellungen deaktiviert werden.
HTTPS-Zugriff und URLs Unsicherer Zugriff auf die Website über HTTP. Es wird dringend empfohlen, Ihren Server so einzurichten, dass HTTPS erforderlich ist. Ohne HTTPS funktionieren einige wichtige Webfunktionen wie „Kopieren in die Zwischenablage“ oder „Service Worker“ nicht!
- Es wird ein gültiges SSL Zertifikat benötigt.
- Wenn man eine Webserver mit Öffentlich erreichbarer IP hat: https://certbot.eff.org/
E-Mail-Test Sie haben Ihre E-Mail-Serverkonfiguration noch nicht festgelegt oder überprüft. Gehen Sie bitte zu den „Grundeinstellungen“, um diese festzulegen. Benutzen Sie anschließend den Button „E-Mail senden“ unterhalb des Formulars, um Ihre Einstellungen zu überprüfen.
- Einrichten eines Gültigen Email Accoutes
