Dies ist eine alte Version des Dokuments!


Nextcloud unter CentOS 7.x installieren und betreiben

Bild: Owncloud 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.

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

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

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-9.0.53.tar.bz2
 # wget https://download.nextcloud.com/server/releases/nextcloud-9.0.53.tar.bz2.sha512

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

 # sha512sum nextcloud-9.0.53.tar.bz2 > nextcloud-9.0.53.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-9.0.53.tar.bz2.sha512.local nextcloud-9.0.53.tar.bz2.sha512

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

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

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

Anschließend 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

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>
 
    # 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>

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 übder die Schaltfläche [ Installation abschließen ]. uns wir anschließend eine Hinweis-Seite zu den zur Verfügung stehenden Clients angezeigt.

Bild: Bildschirmhardcopy WEB-GUI Nextcloud Erstkonfiguration

Dieses Hinweisefenster 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

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-10.0.0.tar.bz2
 # wget https://download.nextcloud.com/server/releases/nextcloud-10.0.0.tar.bz2.sha512

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

 # sha512sum nextcloud-10.0.0.tar.bz2 > nextcloud-10.0.0.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-10.0.0.tar.bz2.sha512.local nextcloud-10.0.0.tar.bz2.sha512

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

Bevor wir nun unsere bestehende Installation updaten, stoppen wir 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/nextcloud.conf /etc/httpd/conf.d/nextcloud.conf.deaktiviert
 # systemctl restart httpd.service

Nun sichern wir das bestehende Installationsverzeichnis indem wir es umbenennen.

 # mv /srv/www/html/nextcloud /srv/www/html/nextcloud.old

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

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

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 bzw. dort auch hineinschreiben kann.

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

Links

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/web_c7/nextcloud.1474139446.txt.gz
  • Zuletzt geändert: 17.09.2016 19:10.
  • von django