sammlung:nextcloud-lamp

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


sammlung/nextcloud-lamp.txt · Zuletzt geändert: von Branislav Zeljak