Inhaltsverzeichnis

Nextcloud unter CentOS 7.x installieren und betreiben

Bild: Nextcloud Logo Mit Hilfe von Nextcloud kann man einen sicheren Datenraum z.B. auf eigenen Servern für seine Nutzer bereitstellen, so dass diese ihre vertraulichen Daten nicht bei einem der diversen Cloud-Dienste nutzen müssen.

Nextcloud wurde vom Owncloud-Gründer Frank Karlitschek zusammen mit ehemaligen Owncloud-Developern als fork der aktuellen Owncloud-Version 9 ins Leben gerufen. Im Gegensatz zum ursprünglichen Projekt Owncloud soll die Weiterentwicklung des forks alle Funktionen des bisherigen Projekts beinhalten, inklusive der kostenpflichtigen Enterprise-Features von Owncloud.

Dokumentation

Eine ausführliche Dokumentation findet sich in der Nextcloud Server Administration Manual Release 13.

vorbereitende Konfiguration

SQL-Datenbank MariaDB

Bei unserer Nextcloud-Installation wollen wir als Datenbank unsere MariaDB verwenden. Eine ausführliche Installation und Konfigurationsbeschreibung ist hier zu finden.

Als erstes legen wir uns eine Datenbank nextcloud_db an. Anschließend legen wir uns eine zugehörigen Datenbanknutzer an und weisen ihm die erforderlichen Rechte zu.

 # mysql -h localhost -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 73466
Server version: 5.5.47-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database nextcloud_db;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE USER 'nextcloud_user'@'10.0.0.97' IDENTIFIED BY '/rb6(gKjabjz5sHdszwh2pc97dsnmdo364nf\';
Query OK, 0 rows affected (0.18 sec)

MariaDB [(none)]> CREATE USER 'nextcloud_user'@'vml000097.dmz.nausch.org' IDENTIFIED BY '/rb6(gKjabjz5sHdszwh2pc97dsnmdo364nf\';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'10.0.0.97' IDENTIFIED BY '/rb6(gKjabjz5sHdszwh2pc97dsnmdo364nf\' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'vml000097.dmz.nausch.org' IDENTIFIED BY '/rb6(gKjabjz5sHdszwh2pc97dsnmdo364nf\' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.05 sec)

MariaDB [(none)]> exit
Bye

Download

Bevor wir uns das aktuelle Programmpaket von nextcloud herunterladen, wechseln wir in unser lokales Paketverzeichnis.

 # cd /usr/local/src/packages/

Anschliessend holen wir uns das aktuelle tar.bz2-Archiv und dessen zugehörige sha512 Prüfsumme auf unseren Server.

 # wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.tar.bz2
 # wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.tar.bz2.sha512

Vom heruntergeladenen Archiv nextcloud-13.0.4.tar.bz2 generieren wir einen eigenen Hash-Wert und legen diesen in einer lokalen Datei ab.

 # sha512sum nextcloud-13.0.4.tar.bz2 > nextcloud-13.0.4.tar.bz2.sha512.local

Nun können wir die beiden Hash-Werte vergleichen und somit prüfen, ob dem Archiv soweit vertraut werden kann.

 # diff nextcloud-13.0.4.tar.bz2.sha512.local nextcloud-13.0.4.tar.bz2.sha512

Sind beide Werte identisch, erfolgt keine Ausgabe - wir können also mit der Installation und Konfiguration fortschreiten.

Entpacken

Nun entpacken wir das heruntergeladene tar.bz2-Archiv an Ort und Stelle.

 # tar -jxpvf nextcloud-13.0.4.tar.bz2 -C /srv/www/html/

Berechtigungen anpassen

Anschliessend passen wir die Berechtigungen des Verzeichnisses /srv/www/html/nextcloud an, so dass unser Apache-User unter dem der HTTP-Daemon läuft darauf zugreifen kann.

 # chown -R apache:apache /srv/www/html/nextcloud

Apache vHost

Als Webserver nutzen wir unseren Apache-Webserver 2.4, dessen Installation und Konfiguration ist in diesem Kapitel beschrieben. Zur Absicherung des Web-Traffic kommt selbstredend TLS zum Einsatz. Die Installation und Konfiguration hierzu findet sich im Kapitel SSL gesicherter Webserver mit mod_ssl für Apache httpd 2.4 unter CentOS 7.x.

Für unseren virtuellen Host legen wir uns nun noch eine passende Konfigurationsdatei an:

 # cat /etc/httpd/conf.d/nextcloud.conf
/etc/httpd/conf.d/nextcloud.conf
#
# Django : 2016-07-29
#          vHost cloud.nausch.org (nextcloud) 
#
 
<VirtualHost 10.0.0.97:80>
    ServerAdmin webmaster@nausch.org
    ServerName cloud.nausch.org
 
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 
    # Welche Logdateien sollen beschrieben werden
    SetEnvIf Remote_Addr "10\.0\.0\.20" dontlog
    CustomLog logs/nextcloud_access.log combined
    ErrorLog  logs/nextcloud_error.log
</VirtualHost>
<VirtualHost 10.0.0.97:443>
    ServerAdmin webmaster@nausch.org
    ServerName cloud.nausch.org
    ServerPath /
 
    # URL Vereinfachung
    RedirectMatch ^/*$ https://cloud.nausch.org/nextcloud/
 
    # Wer soll Zugriff auf die Webseite(n) bekommen?
    <Location />
        Options -Indexes +FollowSymLinks
        Require all granted
    </Location>
 
    # Welcher Inhalt soll angezeigt bzw. auf welchen Server sollen die HTTP-Requests weitergeleitet werden?
    <Directory "/srv/www/html/nextcloud">
        Options FollowSymLinks
        AllowOverride none
        Require all granted
    </Directory>
 
    <LocationMatch "/(data|config)/">
        Require all denied
    </LocationMatch>
 
    # Link für DAV-Support 
    Redirect 301 /.well-known/carddav /remote.php/dav
    Redirect 301 /.well-known/caldav /remote.php/dav
 
    # Welche Logdateien sollen beschrieben werden
    SetEnvIf Remote_Addr "10\.0\.0\.20" dontlog
    CustomLog logs/nextcloud_access.log combined
    ErrorLog  logs/nextcloud_error.log
 
    # Absicherung der Übertragung mit Hilfe von TLS
    # Konfiguration bei Verwendung von mod_gnutls
    <IfModule !mod_ssl.c>
        <IfModule mod_gnutls.c>
            # Django : 2015-10-29 - TLS-Verschlüsselung mit Hilfe von mod_gnutls
            GnuTLSEnable on
            # Definition der anzubietenden Protokolle und Ciphers
            GnuTLSPriorities PFS:-VERS-TLS-ALL:+VERS-TLS1.2:-ARCFOUR-128:+COMP-NULL:+CURVE-SECP384R1:+CURVE-SECP521R1
            # Schlüsseldatei, mit der der CSR erstellt wurde
            GnuTLSKeyFile /etc/pki/tls/private/lists.nausch.org.serverkey.pem
            # Zertifikatsdatei inkl. ggf. notwendiger Zwischen- und Root-Zertifikaten
            # 1) Server-Zertifikat, 2) Intermediate-Root-Zertifikat und 3) Root-Zertifikat der CA
            GnuTLSCertificateFile /etc/pki/tls/certs/lists.nausch.org.certificatechain_151019.pem
            # Definition der Schlüssellänge für DHE und ECDHE
            # DHE Schlüssel mit einer Schlüssellänge von 4096 Bit verwenden; dieser wird 1x pro Tag via cronjob
            # (/etc/cron.daily/edh_keygen) neu generiert und der Neustart des nginx-Daemon veranlasst!
            GnuTLSDHFile /etc/pki/tls/private/dh_4096.pem
            # Session-Tickets für Clients nicht anbieten (dieser könnte versuchen über Tickets die Session zu cachen).
            GnuTLSSessionTickets off
        </IfModule>
    </IfModule>
    # Konfiguration bei Verwendung von mod_ssl
    <IfModule mod_ssl.c>
        <IfModule !mod_gnutls.c>
           # Django : 2015-10-04 - TLS-Verschlüsselung mit Hilfe von mod_ssl
            SSLEngine on
            # Definition der anzubietenden Protokolle
            SSLProtocol All -SSLv2 -SSLv3 
            # Definition der Cipher
            #SSLCipherSuite "AES256+EECDH +AEAD"
            SSLCipherSuite DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXP:!MD5:!DSS:!LOW
            # Schlüsseldatei, mit der der CSR erstellt wurde
            SSLCertificateKeyFile /etc/pki/tls/private/cloud.nausch.org.serverkey.pem
            # Zertifikatsdatei inkl. ggf. notwendiger Zwischen- und Root-Zertifikaten
            SSLCertificateFile /etc/pki/tls/certs/cloud.nausch.org.certificate_160801.pem
            #SSLCertificateChainFile /etc/pki/tls/certs/RapidSSL_certificatechain.pem
            SSLCertificateChainFile /etc/pki/tls/certs/RapidSSL_SHA256_CA_-_G3.pem
            # Änderung der Cipherorder der Clienets verneinen 
            SSLHonorCipherOrder on
            # TLS 1.0 Kompremmierung deaktivieren (CRIME attacks)
            SSLCompression off
            #
            SSLUseStapling on
        </IfModule>
    </IfModule>
 
    # special stuff ###
 
    # HTTP Strict Transport Security (HSTS), bei dem der Server dem Client im HTTP-Header mitteilt,
    # dass dieser nur noch verschlüsselt mit dem Server kommunizieren soll.
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
 
    # This header enables the Cross-site scripting (XSS) filter built into most recent web browsers.
    # It's usually enabled by default anyway, so the role of this header is to re-enable the filter for
    # this particular website if it was disabled by the user.
    # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
    Header set X-XSS-Protection "1; mode=block"
 
    # when serving user-supplied content, include a X-Content-Type-Options: nosniff header along with the Content-Type: header,
    # to disable content-type sniffing on some browsers.
    # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
    # currently suppoorted in IE > 8 http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
    # http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx
    # 'soon' on Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=471020
    Header set X-Content-Type-Options nosniff
 
    # config to don't allow the browser to render the page inside an frame or iframe
    # and avoid clickjacking http://en.wikipedia.org/wiki/Clickjacking
    # if you need to allow [i]frames, you can use SAMEORIGIN or even set an uri with ALLOW-FROM uri
    # https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
    header set X-Frame-Options SAMEORIGIN
 
</VirtualHost>

Konfiguration über die WEB-GUI

Die weitere Konfiguration erfolgt dann direkt über die Web-GUI, die wir über unsere URL https://cloud.nausch.org erreichen.

Zunächst definieren wir den Admin-Account und weisen diesem ein passendes sicheres Passwort zu.

Bild: Bildschirmhardcopy WEB-GUI Nextcloud Erstkonfiguration

Da wir unsere zuvor definierte Maria-DB nutzen wollen, klicken wir auf die Schaltfläche Speicher & Datenbank. Dort tragen wir dann die benötigten Daten ein.

Bild: Bildschirmhardcopy WEB-GUI Nextcloud Erstkonfiguration

Haben wir alle Daten richtig eingegeben beenden wir die Konfiguration über die Schaltfläche [ Installation abschließen ]. uns wir anschliessend eine Hinweis-Seite zu den zur Verfügung stehenden Clients angezeigt.

Bild: Bildschirmhardcopy WEB-GUI Nextcloud Erstkonfiguration

Dieses Hinweisfenster beenden wir über das x in der rechten oberen Ecke des eingeblendeten Hinweisfensters und gelangen so zum Hauptfenster von Nextcloud.

Bild: Bildschirmhardcopy WEB-GUI Nextcloud Erstkonfiguration

Update/Upgrade

Download

Bevor wir uns das aktuelle (Update-)Programmpaket von nextcloud herunterladen, wechseln wir in unser lokales Paketverzeichnis.

 # cd /usr/local/src/packages/

Anschließend holen wir uns das aktuelle tar.bz2-Archiv und dessen zugehörige sha512 Prüfsumme auf unseren Server.

 # wget https://download.nextcloud.com/server/releases/nextcloud-14.0.4.tar.bz2
 # wget https://download.nextcloud.com/server/releases/nextcloud-14.0.4.tar.bz2.sha512

Vom heruntergeladenen Archiv nextcloud-13.0.6.tar.bz2 generieren wir einen eigenen Hash-Wert und legen diesen in einer lokalen Datei ab.

 # sha512sum nextcloud-14.0.4.tar.bz2 > nextcloud-14.0.4.tar.bz2.sha512.local

Nun können wir die beiden Hash-Werte vergleichen und somit prüfen, ob dem Archiv soweit vertraut werden kann.

 # diff nextcloud-14.0.4.tar.bz2.sha512.local nextcloud-14.0.4.tar.bz2.sha512

Sind beide Werte identisch, erfolgt keine Ausgabe - wir können also nun mit dem Update unserer Installation beginnen.

Webserver anhalten

Bevor wir nun unsere bestehende Installation updaten, versetzen wir erst noch unseren NextCloud-Server in den Wartungsmodus.

 # sudo -u apache php /srv/www/html/cloud/occ maintenance:mode --on
Maintenance mode enabled

Optional können wir auch unseren laufenden NextCloud-Webserver. Dazu deaktivieren wir die Konfigurationsdatei unseres Apache-vHosts indem wir diese umbenennen und den Webserver einmal durchstarten.

 # mv /etc/httpd/conf.d/3rd_cloud.conf /etc/httpd/conf.d/3rd_cloud.conf.deaktiviert
 # systemctl restart httpd.service

bestehendes Installations-Verzeichnis sichern

Nun sichern wir das bestehende Installationsverzeichnis indem wir es umbenennen.

 # mv /srv/www/html/nextcloud /srv/www/html/nextcloud.old
 # cp -ra /srv/www/html/cloud /srv/www/html/cloud.$(date +%y%m%d)

Entpacken

Nun entpacken wir das heruntergeladene tar.bz2-Archiv an Ort und Stelle.

 # tar -jxpvf /usr/local/src/packages/nextcloud-14.0.4.tar.bz2 -C /srv/www/html/
 # rm -rf /srv/www/html/cloud && mv /srv/www/html/nextcloud /srv/www/html/cloud

Berechtigungen anpassen

Anschliessend passen wir die Berechtigungen des Verzeichnisses /srv/www/html/cloud an, so dass unser Apache-User unter dem der HTTP-Daemon läuft darauf zugreifen bzw. dort auch hineinschreiben kann.

 # chown -R apache:apache /srv/www/html/cloud

Konfiguration erneuern

Die Konfigurationsdatei config.php unserer bestehenden Installation kopieren wir nun in unser neues Updateverzeichnis.

 # cp -a /srv/www/html/cloud.$(date +%y%m%d)/config/config.php /srv/www/html/cloud/config/config.php

Datenverzeichnis sichern/kopieren

Haben wir das Datenverzeihnis im Web-ROOT-Verzeichnis unseres Apache-Webservers müssen wir nun noch die Daten zurücksichern. Hierzu kopieren wir den Inhalt der gesichterten NextCloud-Installation in das zuvor neu angelegte Verzeichnis.

 # cp -avr /srv/www/html/nextcloud.old/data/ /srv/www/html/nextcloud/data/

Befindet sich das Datrenverzeichnis ausserhalb unseres Web-ROOT-Verzeichnisses brauchen wir nichts unternehmen, da lediglich die Pfadangabe in der Konfigurationsdatei /srv/www/html/nextcloud/config/config.php vermerkt ist und das Datenverzeichnis vom anschliessenden manuellen Update nicht erfasst wird!

Webserver starten

Nun können wir unseren NextCloud-Webserver wieder starten. Dazu aktivieren wir die Konfigurationsdatei unseres Apache-vHosts indem wir diese umbenennen und den Webserver einmal durchstarten.

 # mv /etc/httpd/conf.d/nextcloud.conf.deaktiviert /etc/httpd/conf.d/nextcloud.conf
 # systemctl restart httpd.service

Da wir nach wie vor unseren NextCloud-Server im Wartungsmodus laufen haben, wird einem Nutzer, der versucht sich an der WEB-GUI anzumelden ein entsprechender Hinweis eingeblendet.

Bild: Anzeige des Wartungsmodus im Web-Browser

Upgrade starten

Nun starten wir den Upgrade unserer Intsallation. Je nach Grösse und Umfang unserer Installation wir es nun ein Weilchen Dauern bis die Aktualisierung unserer Installation abgeschlossen ist.

 # sudo -u apache php /srv/www/html/cloud/occ upgrade

Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Updating database schema
Updated database
Disabled incompatible app: admin_notifications
Disabled incompatible app: announcementcenter
Disabled incompatible app: apporder
Disabled incompatible app: audioplayer
Disabled incompatible app: bookmarks
Disabled incompatible app: bruteforcesettings
Disabled incompatible app: calendar
Disabled incompatible app: caniupdate
Disabled incompatible app: circles
Disabled incompatible app: contacts
Disabled incompatible app: deck
Disabled incompatible app: defaultlinkopen
Disabled incompatible app: drop_account
Disabled incompatible app: end_to_end_encryption
Disabled incompatible app: external
Disabled incompatible app: files_downloadactivity
Disabled incompatible app: files_retention
Disabled incompatible app: files_rightclick
Disabled incompatible app: flowupload
Disabled incompatible app: mail
Disabled incompatible app: mindmaps
Disabled incompatible app: mood
Disabled incompatible app: news
Disabled incompatible app: notes
Disabled incompatible app: polls
Disabled incompatible app: previewgenerator
Disabled incompatible app: quota_warning
Disabled incompatible app: radio
Disabled incompatible app: ransomware_protection
Disabled incompatible app: sharerenamer
Disabled incompatible app: socialsharing_email
Disabled incompatible app: spreed
Disabled incompatible app: tasks
Disabled incompatible app: twofactor_u2f
Updating <federatedfilesharing> ...
Updated <federatedfilesharing> to 1.4.0
Updating <files_pdfviewer> ...
Updated <files_pdfviewer> to 1.3.2
Updating <files_texteditor> ...
Updated <files_texteditor> to 2.6.0
Updating <files_videoplayer> ...
Updated <files_videoplayer> to 1.3.0
Updating <gallery> ...
Updated <gallery> to 18.1.0
Updating <password_policy> ...
Updated <password_policy> to 1.4.0
Updating <provisioning_api> ...
Updated <provisioning_api> to 1.4.0
Updating <serverinfo> ...
Updated <serverinfo> to 1.4.0
Updating <survey_client> ...
Updated <survey_client> to 1.2.0
Updating <twofactor_backupcodes> ...
Updated <twofactor_backupcodes> to 1.3.1
Updating <updatenotification> ...
Updated <updatenotification> to 1.4.1
Updating <federation> ...
Updated <federation> to 1.4.0
Updating <lookup_server_connector> ...
Updated <lookup_server_connector> to 1.2.0
Updating <oauth2> ...
Updated <oauth2> to 1.2.1
Updating <files> ...
Updated <files> to 1.9.0
Updating <activity> ...
Updated <activity> to 2.7.0
Updating <dav> ...
Fix broken values of calendar objects

 Done
    0/0 [>---------------------------]   0%
Updated  to 1.6.0
Updating <files_sharing> ...
Updated <files_sharing> to 1.6.2
Updating <files_trashbin> ...
Updated <files_trashbin> to 1.4.1
Updating <files_versions> ...
Updated <files_versions> to 1.7.1
Updating <sharebymail> ...
Updated <sharebymail> to 1.4.0
Updating <workflowengine> ...
Updated <workflowengine> to 1.4.0
Updating <comments> ...
Updated <comments> to 1.4.0
Updating <firstrunwizard> ...
Updated <firstrunwizard> to 2.3.0
Updating <nextcloud_announcements> ...
Updated <nextcloud_announcements> to 1.3.0
Updating <notifications> ...
Updated <notifications> to 2.2.1
Updating <systemtags> ...
Updated <systemtags> to 1.4.0
Updating <theming> ...
Updated <theming> to 1.5.0
Checking for update of app activity in appstore
Checked for update of app "activity" in appstore 
Checking for update of app cloud_federation_api in appstore
Checked for update of app "cloud_federation_api" in appstore 
Checking for update of app comments in appstore
Checked for update of app "comments" in appstore 
Checking for update of app dav in appstore
Checked for update of app "dav" in appstore 
Checking for update of app federatedfilesharing in appstore
Checked for update of app "federatedfilesharing" in appstore 
Checking for update of app federation in appstore
Checked for update of app "federation" in appstore 
Checking for update of app files in appstore
Checked for update of app "files" in appstore 
Checking for update of app files_pdfviewer in appstore
Checked for update of app "files_pdfviewer" in appstore 
Checking for update of app files_sharing in appstore
Checked for update of app "files_sharing" in appstore 
Checking for update of app files_texteditor in appstore
Checked for update of app "files_texteditor" in appstore 
Checking for update of app files_trashbin in appstore
Checked for update of app "files_trashbin" in appstore 
Checking for update of app files_versions in appstore
Checked for update of app "files_versions" in appstore 
Checking for update of app files_videoplayer in appstore
Checked for update of app "files_videoplayer" in appstore 
Checking for update of app firstrunwizard in appstore
Checked for update of app "firstrunwizard" in appstore 
Checking for update of app gallery in appstore
Checked for update of app "gallery" in appstore 
Checking for update of app logreader in appstore
Checked for update of app "logreader" in appstore 
Checking for update of app lookup_server_connector in appstore
Checked for update of app "lookup_server_connector" in appstore 
Checking for update of app nextcloud_announcements in appstore
Checked for update of app "nextcloud_announcements" in appstore 
Checking for update of app notifications in appstore
Checked for update of app "notifications" in appstore 
Checking for update of app oauth2 in appstore
Checked for update of app "oauth2" in appstore 
Checking for update of app password_policy in appstore
Checked for update of app "password_policy" in appstore 
Checking for update of app provisioning_api in appstore
Checked for update of app "provisioning_api" in appstore 
Checking for update of app serverinfo in appstore
Checked for update of app "serverinfo" in appstore 
Checking for update of app sharebymail in appstore
Checked for update of app "sharebymail" in appstore 
Checking for update of app survey_client in appstore
Checked for update of app "survey_client" in appstore 
Checking for update of app systemtags in appstore
Checked for update of app "systemtags" in appstore 
Checking for update of app theming in appstore
Checked for update of app "theming" in appstore 
Checking for update of app twofactor_backupcodes in appstore
Checked for update of app "twofactor_backupcodes" in appstore 
Checking for update of app updatenotification in appstore
Checked for update of app "updatenotification" in appstore 
Checking for update of app workflowengine in appstore
Checked for update of app "workflowengine" in appstore 
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Reset log level

Da der Upgrade nun erfolgreich abgeschlossen ist, können wir den Wartungsmodus unserer NextCloud-Installation wieder beenden.

 # sudo -u apache php /srv/www/html/nextcloud/occ maintenance:mode --off
Nextcloud is in maintenance mode - no app have been loaded
Maintenance mode disabled

Nun können wir uns nun an der WEB-GUI unserer NextCloud-Instanz wieder anmelden und überprüfen die Funktionen.

Bild: Anmeldebilschirm der Web-GUI unseres NextCloud Servers

Am besten werfen wir dazu auch einmal einen Blick in die Systeminformationen als User Admin. So wird z.B. beim Update von Version 13 auf 14 Hinweise zur Anpassungen der Datenbank gegeben!

Bild: Systeminformationen im Adminmenü

So erzeugen wir wie angeraten die fehlenden Indizes.

 # sudo -u apache php /srv/www/html/cloud/occ db:add-missing-indices

Check indices of the share table.
Adding additional share_with index to the share table, this can take some time...
Share table updated successfully.
Adding additional parent index to the share table, this can take some time...
Share table updated successfully.
Adding additional mtime index to the filecache table, this can take some time...
Filecache table updated successfully.

Eine erneute Überprüfung zeigt nun, dass alles wieder in Ordnung ist.

Bild: Systeminformationen im Adminmenü

Auch ein Test über den angegebenen link zum Nextcloud Security Scanner sollte ein entsprechend aktuelles Ergebnis liefern.

Bild: Nextcloud Security Web-Scan

Links