NextCloud installieren – Komplette Installation inkl. Fix der „Probleme“

Mit dieser Ausführlichen Anleitung bist DU in der Lage, einen komplett frischen Linux-Server mit einer NextCloud Instanz auszustatten und die im Anschluss noch offenen „Probleme“ oder ehr Punkte zu beheben.

Dies ist eine „Code abkopieren und abschicken“-Anleitung. Viel denken muss man nicht. Lediglich einige Zeilen sollten auf deine Gegebenheiten angepasst werden, damit die Instanz sicher ist und auch am Ende alles funktioniert.

 

Was werden wir machen?

  1. Den Linux-Server mit allen notwendigen Paketen ausstatten
  2. Ein Webserver installieren >> Nginx
  3. Ein SQL-Server installieren und einrichten>> MySQL / MariaDB
  4. Die aktuellste PHP-Version installieren (Zu Tutorialerstellund war Version 7.3 aktuell!)
  5. OPTIONAL: Den Server via SSL / HTTPS absichern
  6. nginx-Config anlegen und anpassen
  7. NextCloud herunterladen und installieren
  8. Offene Punkte noch fixen

Was brauchen wir dafür?

  • Ein Linux-Server (Egal ob vServer, Root-Server, Dedicated Server oder Raspberry Pi)
  • Vollen SSH-Zugriff (Root-Account)
  • Vielleicht die ein oder andere Linux-Kentniss 😉

Ich empfehle diese Anleitung auf einem frischen Linux-Server umzusetzen. Damit entstehen weniger Probleme. Du kannst aber gerne diese Anleitung auch auf deinem aktuellen Server umsetzen, musst aber ggf. weitere Anpassungen vornehmen oder musst einige Dinge nicht umsetzen.

Alles startklar? Dann legen wir los!

1. Alle notwendigen Pakete installieren

Dieser Schritt kann ggf. übersprungen werden, wenn du bereits passende Tools installiert hast und dich mit diesen Vertraut gemacht hast.

# apt update && apt upgrade
# apt install htop iftop nano unzip zip -y

2. nginx installieren

# apt install nginx

Mehr ist es nicht.

3. Den SQL-Server installieren

Wir installieren hier nun MySQL bzw. MariaDB und sichern die Instanz ab.
Anschließend legen wir einen Account für NextCloud an.

# apt install mariadb-server mariadb-client

Installation absichern:

# mysql_securestallation
Set root password? [Y/n] y
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

5x mit Y für YES bestätigen und 1x ein Root-Passwort setzten. Das wars.

Nun legen wir einen Account für NextCloud an.
Vergebe daher ein neues SICHERES Passwort bei „PASSWORT-HIER-EINTRAGEN“.
Jede Zeile ist ein ganzer Befehl und muss so abgeschickt werden!

# mysql -u root -p
# CREATE DATABASE nextcloud;
# CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'PASSWORT-HIER-EINTRAGEN';
# GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'PASSWORT-HIER-EINTRAGEN' WITH GRANT OPTION;
# FLUSH PRIVILEGES;
# EXIT;

Wer die Befehle und ihre Auswirkung kennt, kann den Datenbanknamen oder den Nutzernamen auch gerne anpassen.

4. PHP installieren

Hinweis: Bei der Erstellung dieser Anleitung war PHP7.4 aktuell. Je nach dem wann du diese Anleitung liest, gibt es eine neuere Version! Passe in dem Fall einfach die Nummer der Pakete an 😉

Falls PHP in der aktuellen Version nicht vorhanden ist, fügen wir zuerst die aktuellen Paketquellen hinzu.
Daher einfach folgende Befehle abschicken:

# sudo apt -y install lsb-release apt-transport-https ca-certificates
# sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
# sudo apt update && sudo apt upgrade

So, nun können wir problemlos PHP installieren.

# apt install php7.4-fpm php7.4-mbstring php7.4-bcmath php7.4-gmp php7.4-xmlrpc php7.4-soap php7.4-apcu php7.4-smbclient php7.4-ldap php7.4-redis php7.4-gd php7.4-xml php7.4-intl php7.4-json php7.4-imagick php7.4-mysql php7.4-cli php7.4-ldap php7.4-zip php7.4-curl redis-server

5. OPTIONAL: HTTPS-Zertifikat erstellen (Lets Encrypt)


Dieser Schritt ist optional, wenn du deine NextCloud-Instanz nur Zuhause hostest und kein Zugriff über das Internet möglich ist. Stellst du deine Instanz aber im Internet zur Verfügung, solltest du diesen Schritt dringend durchführen! Eine Doamin ist zwingend Erforderlich für diesen Schritt!
(Falls du keine hast, hol dir eine kostenlose .tk .gq … Doamin bei Freenom.)

Passe hier nur ledeglich deine Domain an.

# apt install certbot python3-certbot-nginx
# service nginx stop
# certbot certonly -d domain.de -d www.domain.de

Bei Abfrage ob der Certbot einen temporären Webserver erstellen soll, drücke die Taste 1!

6. nginx-Config anlegen und anpassen

Hier gibt es zwei Vorlagen. Die erste ist OHNE HTTPS, die zweite ist MIT HTTPS!
Für Installationen die im Internet zur Verfügung stehen, ist dringen die zweite Empfohlen!

# nano /etc/nginx/sites-available/nextcloud

OHNE HTTPS:

server {
    listen 80;
    listen [::]:80;
    root /var/www/nextcloud;
    index  index.php index.html index.htm;
    server_name  DEINE-DOMAIN.de WWW.DEINE-DOMAIN.DE ODER DEINE IP;

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
        fastcgi_split_pathfo ^(.+\.php)(/.*)$;
        fastcgi_pass      unix:/var/run/php/php7.4-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_pathfo;
        fastcgitercept_errors on;
        fastcgi_request_buffering off;
    }

    location ^~ /.well-known {
        location = /.well-known/carddav     { return 301 /remote.php/dav/; }
        location = /.well-known/caldav      { return 301 /remote.php/dav/; }
        location ^~ /.well-known            { return 301 /index.php$uri; }
        try_files $uri $uri/ =404;
    }

    location ~ \.css {
    add_header  Content-Type    text/css;
    }

    location ~ \.js {
    add_header  Content-Type    application/x-javascript;
    }


    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri $uri/ =404;
        index index.php;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

}

MIT HTTPS:

server {
    listen 80;
    listen [::]:80;
    server_name deine-domain.de www.deine-domain.de;
    access_log  /var/log/nginx/nextcloud.access.log;
    error_log   /var/log/nginx/nextcloud.error.log;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    access_log  /var/log/nginx/nextcloud.access.log;
    error_log   /var/log/nginx/nextcloud.error.log;
    server_name DEINE-DOMAIN.DE WWW.DEINE-DOMAIN.DE;

    root /var/www/nextcloud;

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";

    location ^~ /.well-known {
        location = /.well-known/carddav     { return 301 /remote.php/dav/; }
        location = /.well-known/caldav      { return 301 /remote.php/dav/; }
        location ^~ /.well-known            { return 301 /index.php$uri; }
        try_files $uri $uri/ =404;
    }
	
   location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
        fastcgi_split_pathfo ^(.+\.php)(/.*)$;
        fastcgi_pass      unix:/var/run/php/php7.4-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_pathfo;
        fastcgitercept_errors on;
        fastcgi_request_buffering off;
		fastcgi_read_timeout 300;
    }


    location ~ \.css {
    add_header  Content-Type    text/css;
    }

    location ~ \.js {
    add_header  Content-Type    application/x-javascript;
    }


    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri $uri/ =404;
        index index.php;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

    ssl_certificate /etc/letsencrypt/live/deine-domain.de/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/deine-domain.de/privkey.pem; # managed by Certbot
}

Welche Werte müssen geändert werden?
server_name => Trage hier deine Domain ein. Bei der HTTP-Variante reicht auch z.B. die IP-Adresse. (Beispiel: server_name cloud.deine-domain.de)
fastcgi_pass => Pass hier die php-Version an. Das Beispiel nutzt php7.3!
ssl_certificate + ssl_certificate_key => Ersetze hier deine-domain.de durch deine Domain!

Nun setzen wir die Config aktiv und starten nginx wieder

# ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
# systemctl restart nginx.service

Es darf nun kein Fehler auftreten. Findet er das Zertifikat nicht, weil das Erstellen nicht funktionierte, versuche erneut ein Zertifikat zu erstellen.

7. NextCloud installieren

Wir installieren NextCloud in das Root-Verzeichnis des Webservers. Wer einen anderen Pfad nutzen möchte, kann das tun, muss aber dann die Vorlagen gründlich anpassen!
Öffne die Webseite von NextCloud, damit du gleich den korrekten Link abkopieren kannst >> NextCloud.com

# cd /home/user
# wget https://download.nextcloud.com/server/releases/nextcloud-AKTUELLE-VERSION-HIER-EINTRAGEN.zip
# unzip nextcloud-AKTUELLE-VERSION-HIER-EINTRAGEN.zip
# mv nextcloud /var/www/
# chown -R www-data:www-data /var/www/nextcloud/

Nun können wir zum ersten mal NextCloud im Browser aufrufen.
Also einen Browser öffnen und entweder die IP-Adresse des Servers eingeben oder eben eure Domain.

Wir müssen nun folgende Daten angeben:

  • Administratorkonto: Benutzername + SICHERES Kennwort
  • Datenverzeichnis: Falls nicht das Standardverzeichnis genutzt werden soll, kann der Pfad angepasst werden. Benutzer www-data muss aber im neuen Verzeichnis Lese + Schreibrechte haben!
  • Datenbankbenutzer: nextclouduser
  • Datenbankpasswort: Das von dir gewählte Passwort aus Schritt 3
  • Datenbank: nextcloud

Ganz unten kann noch ein Haken gesetzt werden, das die üblichen Apps installiert werden. Das kann man machen, muss man aber nicht.
Dann einen beherzten Klick auf „Installation abschließen“ und dem Server ein paar Sekunden Zeit geben.

FERTIG!

NextCloud ist nun installiert und kann verwendet werden!

Doch Halt! Es geht weiter! Nach einer Kaffeepause 😉

8. Offene Punkte noch fixen

Nach einer einfachen Installation werden warscheinlich folgende „Fehler“ und „Warnungen“ angezeigt werden:

PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv("PATH") liefert nur eine leere Antwort zurück. Bitte die Installationsdokumentation ↗ auf Hinweise zur PHP-Konfiguration durchlesen sowie die PHP-Konfiguration Deines Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.
Die PHP-Speichergrenze liegt unterhalb des empfohlenen Wertes von 512MB.
Der HTTP-Header "Strict-Transport-Security" ist nicht auf mindestens 15552000 Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den Sicherheitshinweisen erläutert ist.
Dein Web-Server ist nicht richtig eingerichtet um "/.well-known/caldav" aufzulösen. Weitere Informationen findest Du in der Dokumentation.
Dein Web-Server ist nicht richtig eingerichtet um "/.well-known/carddav" aufzulösen. Weitere Informationen findest Du in der Dokumentation.
Es wurde kein PHP-Memory-Cache konfiguriert. Zur Erhöhung der Leistungsfähigkeit kann ein Memory-Cache konfiguriert werden. Weitere Informationen findest Du in der Dokumentation.
Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von "occ db:convert-filecache-bigint" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Einzelheiten findest Du auf der zugehörigen Dokumentationsseite.

    mounts.storage_id
    mounts.root_id
    mounts.mount_id

Solltest du kein HTTPS verwenden, wird auch deswegenein weiterer „Fehler“ bzw. eine „Warnung“ angezeigt.
Diese können mit wenig Aufwand behoben werden. Damit läuft NextCloud ein Stück flotter und besser.
ACHTUNG: Achtet auf die korrekte PHP-Version!!! Das Beispiel hier ist mit php7.3!

Folgende Datei öffnen:

# nano /etc/php/7.3/fpm/php.ini

Sucht nach dem Wert „cgi.fix_pathinfo„, entfernt davor das ; und setzt den Wert auf 0 (Standardgemäß ist er auf 1)

cgi.fix_pathinfo=0

Und das Memory_Limit können wir auch noch erhöhen.

memory_limit = 1024M

Alles zwischen 512MB und 1GB ist ok. Falls du nur 1GB RAM im System hast, setzte das Limit auf maximal 700MB.

Öffnet nun folgende Datei:
ACHTUNG: Achtet auf die korrekte PHP-Version!!! Das Beispiel hier ist mit php7.3!

# nano /etc/php/7.3/fpm/pool.d/www.conf

Entfernt nun bei folgenden Werten überall das ; !
Es muss dann so aussehen:

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
clear_env = no

Startet PHP nun neu:
ACHTUNG: Achtet auf die korrekte PHP-Version!!! Das Beispiel hier ist mit php7.3!

# /etc/init.d/php7.4-fpm restart

Als nächstes müssen wir die Datenbank noch anpassen.

# mysql -u root -p

Schicke nun folgende Befehle ab:

use nextcloud;
set global innodb_large_prefix=on;
set global innodb_file_format=Barracuda;
EXIT

Starte nun den Datebankserver neu oder (am besten gleich) den ganzen Server.
Reboot tud gut!

Wieder anmelden:

# mysql -u root -p

Folgenden Befehl abschicken:

ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
EXIT

Als nächstes soll NextCloud die Datenbank für sich selbst noch einmal anpassen:
Passe ggf. den Pfad zur NextCloud-Installation an!

# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"
# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

Zum Schluss aktivieren wir noch den lokalen Cache.
Füge in der Config nun noch folgende Zeile dazu:

# nano /var/www/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),

Einfach diese Zeile über dem letzten ); einfügen.

Nun geben wir zum Schluss der Wolke noch etwas mehr Tempo.
Öffne dazu die Konfigurationsdatei von MySQL / MariaDB.
ACHTUNG: Die Datei könne in einem anderen Verzeichnis liegen! Such nach der mysqld.cnf mit viel Inhalt. Leere Dateien sind falsch 😉

nano /etc/mysql/mysql.conf.d/mysqld.cnf

Füge bei Abschnitt [mysqld] einfach folgende zwei Werte hinzu:

innodb_buffer_pool_size=1G
innodb_io_capacity=4000

Erhöhe die beiden Werte, wenn viele Nutzer auf deine NextCloud zugreifen. In der hier dargestellten Konfiguration, geben wir dem SQL-Server 1GB RAM als Cache zur Verfügung.
Wenn du genügend RAM zur Verfügung hast, kannst du mehr auslagern. Dadurch bleibt die Wolke flott.

Wir geben PHP-FPM noch etwas mehr Power.

nano /etc/php/7.4/fpm/pool.d/www.conf

Editiere die Parameter einfach auf folgende Werte:

pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

Wenn du viele Nutzer zu versorgen hast, kannst du gerne die Werte auch noch etwas erhöhen. Achte dabei aber auf deine Serverauslastung und Stabilität.

Zu guter Letzt, aktivieren wir noch OPcache in php.

nano /etc/php/7.4/fpm/conf.d/10-opcache.ini

Füge hier einfach in die Konfiguration folgenden Inhalt ein:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Auf Wunsch kannst du die Werte auch noch auf deine Gegebenheiten anpassen. Hast du eine große Wolke, kannst du z.B. mehr memory_consumption freigeben.

Ab NextCloud 21 kann es vorkommen, das noch folgende Meldung erscheint:

Dem Modul php-imagick fehlt die SVG-Unterstützung. Für eine bessere Kompatibilität wird empfohlen, es zu installieren.

Das lässt sich relativ einfach lösen, indem wir noch folgendes Paket installieren:

apt install libmagickcore-6.q16-6-extra -y

FERTIG!

Nein jetzt im Ernst, fertig!
NextCloud läuft und es sollten nun keinerlei Fehler mehr zu sehen sein.


Tipps & Tricks zum Schluss

Upload bricht nach ca. 2GB ab
Verwendest du ein 32bit System, hast du auch php in der 32bit Variante installiert.
Dort können Uploads von Dateigrößen über 2GB fehlschlagen.
Mögliche Lösungen hierfür sind:
– Datei(en) in kleinere Parts unterteilen
– Ein 64bit System installieren => Für den Raspberry Pi 4 gibt es ein 64bit OS!

Du musst viel Daten hochladen?
Nutze den Client von NextCloud oder FlowUpload. Geht deutlich bequemer.

Grafische Oberfläche für MySQL erwünscht?
Installiere dir doch phpmyAdmin. Dann kannst du deine Datenbank über den Webbrowser verwalten.
ACHTUNG: Es wird nicht empfohlen, phpmyAdmin über das Internet erreichbar zu machen!


Update 20.05.2021
Nginx-Configs angepasst, damit die Prüfungen für well-known wieder korrekt durchlaufen.
Fix für php-imagick am Ende der Anleitung noch hinzugefügt.

15 Kommentare

  1. Hallo ! Wie leite ich denn eine Sub-Domain ohne SSL (http://test.example.com) auf den lokalen Webserver (bei mir zu hause – 192.168.1.2) um und habe dann SSL/Https ? Eine lokale Netzwerkadresse kann ja kein SSL-Zertifikat haben. Kurz: Es müssen ja irgendwo noch Server-Einstellungen vom Hosting-Provider vorgenommen werden, damit das mit einer SSL-Subdomain funktioniert. Irgendwie steigt man hier nicht so ganz durch.

    • Hallo Klaus,
      hier gibts mehrere Möglichkeiten.
      Möglichkeit 1: Du hinterlegst bei deinem Donainanbieter die lokale Adresse (test.example.com -> 192.168.1.2). Das interessiert ja ein DNS-Server nicht, ob es sich um eine lokale Adresse handelt oder nicht. Das ganze kann aber nicht vom Internet aus erreichbar gemacht werden. Hier wäre eine zweite Sub-Domain nötig.
      Möglichkeit 2: Du installierst in deinem Netzwerk ein DNS-Server, welcher die ersten Anfragen händelt und alles mit test.example.com auf die lokale Adresse verweist.
      Möglichekit 3: Du hinterlegst in jedem System einen Host-Eintrag, mit der Wunschdomain und der IP.

  2. Hallo,
    ich habe eine Nextcloud auf einer QNAP hinter einer Fritzbox.
    Ich habe bei meinem Provider eine Subdomain angelegt (nextcloud.xxxxx.xxxxx) dort habe ich den CNAME Eintrag geändert auf meine myfritz.net Adresse. In der Fritzbox habe ich eine Portweiterleitung auf die IP-Adresse meine Nextcloud.
    Läuft einwandfrei und in der Adressleiste bleibt immer die URL stehen.

  3. Hallo,
    nachdem mir nextcloud in Docker zu anstrengend wurde, habe ich sie auf dem hier beschriebenen Weg installiert.
    Leider gelingt es mir nach dem „beherzten“ Klick nun nicht, mich als Admin anzumelden. Andere Nutzer sind noch nicht eingerichtet.
    Der Datenpfad wurde verändert, www-data ist Eigentümer des Verzeichnisses und der Standardport ist verändert. Was habe ich übersehen?

    sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin wirft folgende Fehlermeldung aus:

    An unhandled exception has been thrown:
    Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:85
    Stack trace:
    #0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1486): OC\DB\Connection->connect()
    #1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1014): Doctrine\DBAL\Connection->getWrappedConnection()
    #2 /var/www/nextcloud/lib/private/DB/Connection.php(226): Doctrine\DBAL\Connection->executeQuery()
    #3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(210): OC\DB\Connection->executeQuery()
    #4 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(287): Doctrine\DBAL\Query\QueryBuilder->execute()
    #5 /var/www/nextcloud/lib/private/AppConfig.php(345): OC\DB\QueryBuilder\QueryBuilder->execute()
    #6 /var/www/nextcloud/lib/private/AppConfig.php(110): OC\AppConfig->loadConfigValues()
    #7 /var/www/nextcloud/lib/private/AppConfig.php(301): OC\AppConfig->getApps()
    #8 /var/www/nextcloud/lib/private/legacy/OC_App.php(957): OC\AppConfig->getValues()
    #9 /var/www/nextcloud/lib/private/Server.php(682): OC_App::getAppVersions()
    #10 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}()
    #11 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
    #12 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet()
    #13 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query()
    #14 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
    #15 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(177): OC\AppFramework\Utility\SimpleContainer->get()
    #16 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
    #17 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
    #18 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet()
    #19 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query()
    #20 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
    #21 /var/www/nextcloud/lib/private/Server.php(1031): OC\AppFramework\Utility\SimpleContainer->get()
    #22 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}()
    #23 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
    #24 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet()
    #25 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query()
    #26 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
    #27 /var/www/nextcloud/lib/private/Server.php(1990): OC\AppFramework\Utility\SimpleContainer->get()
    #28 /var/www/nextcloud/lib/private/Files/View.php(119): OC\Server->getLockingProvider()
    #29 /var/www/nextcloud/lib/private/Server.php(430): OC\Files\View->__construct()
    #30 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}()
    #31 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
    #32 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet()
    #33 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query()
    #34 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
    #35 /var/www/nextcloud/lib/private/Server.php(1353): OC\AppFramework\Utility\SimpleContainer->get()
    #36 /var/www/nextcloud/lib/base.php(588): OC\Server->boot()
    #37 /var/www/nextcloud/lib/base.php(1076): OC::init()
    #38 /var/www/nextcloud/console.php(49): require_once(‚…‘)
    #39 /var/www/nextcloud/occ(11): require_once(‚…‘)

    Was kann ich tun, um Zugriff zu erhalten, das Passwort zurückzusetzen und wie/wo kann ich eine Mailadresse hinterlegen, damit mir es geschickt werden kann?

    • Hi!
      Der Fehler steht schon in den ersten paar Zeilen.
      Scheinbar passt die Datenbankanbindung nicht. Entweder sind die angegebenen Zugangsdaten falsch, die Datenbank kaputt oder es fehlt einfach das PHP-Modul für die Datenbankanbindung.

      Ich würde auch die Erstinstallation mit den Standardpfaden machen und sobald NextCloud läuft, das Datenverzeichnis verschieben und die Rechte + Config-Datei anpassen. Das erspart in der Regel viele Probleme.

  4. Vielen Dank für die schnelle Antwort.
    Kann ich evtl. einen Tipp bekommen, welche Dateien / Rechte ich anpassen muss bzw. wie ich „das“ PHP-Modul (noch einmal) installieren kann?
    Würde es gern verstehen und nicht nur nachmachen. 🙂

    • Nachmachen erspart meist am Ende des Tages einige Fehler 😉
      Die Rechte sind korrekt, wenn der Ordner dem Nutzer www-data gehört (inkl. aller Unterordner). (chown -R www-data:www-data /pfad/zum/verzeichnis/)
      Bei PHP muss das Modul php7.4-mysql installiert sein. Wenn der Installationsbefehl von meiner Anleitung genutzt wurde, sollte das in der Regel installiert sein.

  5. Das ist absolut richtig.
    Ich meinte auch, dass ich nicht NUR nachmachen, sondern die Zusammenhänge verstehen möchte.
    php7.4-mysql ist installiert, die Rechte von www-data sind korrekt. In der Zwischenzeit habe ich das ursprüngliche Verzeichnis /var/www/nextcloud/date wieder als Datenverzeichnis eingestellt – jedoch ohne Erfolg. Was mir aufgefallen ist, ist, dass die .ocdata leer ist (0 Bytes).

    Wenn ich die Frage noch stellen darf, wie werfe ich am Besten alle Einstellungen Datenbanken weg, damit ich noch einmal sauber anfangen kann? Oder gibt es eine Art Reset, damit ich den Admin neu anlegen kann? Evtl. sorgen ein paar Sonderzeichen im Passwort für Unbehagen (z.B. ‚).

    • .ocdata ist immer 0Bytes groß. Das ist nur eine Hilfsdatei.

      Einmal neu Anfangen ist einfach.
      Einfach alles löschen 😉
      Den gesamten Ordner von NextCloud löschen und die Datenbank sowie Benutzer mit diesen beiden SQL-Befehlen entfernen lassen:
      DROP DATABASE nextcloud-datenbank-name-hier-einfügen;
      DROP USER nextcloud-benutzer-hier-einfügen;

  6. 2 komplette Durchläufe, Nutzer und DB gelöscht (und kontrolliert).
    Alles neu installiert und eingerichtet, jedoch gleiches Problem – Anmeldung klappt nicht. Ich hab‘ gerade keine Idee mehr …. 🙁

  7. Die 3. Neuinstallation führte leider auch nicht zum Erfolg. Ist es in irgendeiner Form relevant, dass OMV mit auf der Maschine läuft?
    Oder kann ich prüfen, inwieweit die Nextcloud mit MariaDB zusammenarbeitet? Mir scheint, als ob beim Loginversuch die Verbindung zur DB nicht hergestellt werden kann. Vielleicht gibt es noch einen Tipp. 🙂

  8. Hoerli, ein kleines Defizit beim redis-Schrauben,

    der redis-server horchte nach der Installation bei mir nicht auf Port 6379, der in der Nextcloud config.php konfiguriert wurde.

    netstat -pantu|grep :6379 meldete nix und die Portänderung mit einem service redis-server restart löste das Peoblem.

    In der /etc/redis/redis.conf war nach der Installtion port 0 aktiv!
    # Accept connections on the specified port, default is 6379 (IANA #815344).
    # If port 0 is specified Redis will not listen on a TCP socket.
    port 6379

    • Hi HanjoLix,
      das Port 0 konfiguriert ist, ist für mich neu.
      Ich habe mehrere NextCloud-Instanzen nun aufgesetzt und auch jedes mal den Redis-Server wie in der Anleitung beschrieben installiert.
      Bisher konnte ich das mit Port 0 nicht nachstellen.

      Schön das du aber den Fehler gefunden hast und ihn hier teilst 🙂

  9. Hallo Hoerli,
    ich habe die NC 22 nach deiner Abkeitung installiert und bekomme beim Feintuning folgende Fehlermeldung:

    MariaDB [(none)]> set global innodb_large_prefix=on;
    ERROR 1238 (HY000): Variable ‚innodb_large_prefix‘ is a read only variable
    MariaDB [(none)]> set global innodb_file_format=Barracuda;
    ERROR 1238 (HY000): Variable ‚innodb_file_format‘ is a read only variable

    Ferner finde ich die die Konfigurationsdatei von MySQL / MariaDB nicht in meinem System, zumindest nicht mit viel Inhalt. Hast du da noch einen Tip wo ich suchen könnte?

    • Was hast du denn für ein System?
      Mit Debian 10 hats bei mir bisher problemlos funktioniert.
      Zeigt es dir beim Systemcheck an, das du die SQL-Befehle absetzen sollst? Falls nein, lass dir einfach weg 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Durch das Absenden dieses Kommentars werden deine angegebenen Daten auf dem Server gespeichert. Du stimmst dadurch den Datenschutzbedingungen zu.