Mit NextCloud ist es sehr einfach möglich seine eigene Cloud zu erstellen. Dies hat den Vorteil, dass man genau weiß, was mit seinen Daten passiert und wo diese gespeichert sind. Ich zeige die Installation hier am Beispiel mit nginx, MariaDB und PHP7. In dieser Anleitung gehe ich von einem Server aus, auf dem noch keins dieser Programme installiert ist. Hier auf der Webseite findet ihr noch viele andere nützliche Infos zu Nextcloud Apps, Plugins und sonstigem.
Update
11.08.2018 | Anpassung an Nextcloud 13 |
09.07.2017 | anpassen der nginx Konfiguration an Nextcloud 12 |
Sollten bereits Programme installiert sein, können diese Schritte übersprungen werden.
1.Nginx
Nginx lässt sich sehr einfach mit folgenden Befehlen installieren.
apt-get update apt-get install nginx
2.MariaDB
MariaDB lässt sich ebenfalls unter Debian 9 sehr einfach installieren. Dazu einfach folgend Befehle ausführen
apt-get update apt-get install mariadb-client mariadb-server
Nach der Installation fügt ihr noch folgenden Befehl aus, um MariaDB abzusichern.
mysql_secure_installation
Zu Beginn werdet ihr nach eurem SQL Root Passwort gefragt. Da ihr noch keins vergeben hat, klickt hier einfach “Enter”.
Nun ist MariaDB vollständig installiert.
3.PHP7
PHP7 kann einfach mit folgenden Befehlen installiert werden.
apt-get update apt-get install php7.0-fpm php7.0-json php7.0-mysql php7.0-curl php7.0-intl php7.0-mcrypt php7.0-gd php7.0-zip php7.0-xml php7.0-mbstring php-imagick
Welche Funktion die einzelnen Module erfüllen, kann auf der offiziellen Homepage nachgelesen werden. Bei zusätzlichen Funktionen müssen später noch Module nachinstalliert werden.
4.Nextcloud
4.1 Download der Installations-Datei
Nextcloud kann einfach von der Homepage des Herstellers bezogen werden. Die derzeit aktuelle Version lautet 13.0.5 Zuerst wechseln wir nun ins Verzeichnis unseres nginx Webservers und installieren danach noch ein Programm (unzip), um die Nextcloud Installationsdatei zu entpacken. Danach wird die Datei entpackt und die Verzeichnisrechte für den Webserver angepasst.
apt-get install unzip cd /var/www/html/ wget https://download.nextcloud.com/server/releases/nextcloud-13.0.5.zip unzip nextcloud-13.0.5.zip chown -R www-data:www-data nextcloud
4.2 SQL Benutzer anlegen
Da NextCloud eine SQL Datenbank (bei uns MariaDB) benötigt, muss hierfür auch ein Benutzer angelegt werden. Dazu loggen sie sich bei MariaDB als Administrator ein mit dem oben im Schritt 2 festgelegten Passwort. Diese Werte werden mittels der nachfolgenden Codezeilen erzeugt. Diese können jedoch einfach verändert werden.
Administrator: nextadmin
Datenbankname: nextcloud
Passwort: geheimesPasswort
mysql -u root -p create database nextcloud; create user nextadmin@localhost identified by 'geheimesPasswort'; grant all privileges on nextcloud.* to nextadmin@localhost identified by 'geheimesPasswort'; flush privileges; exit;
Sie müssen unbedingt “geheimesPasswort” durch ihr eigenes Passwort ersetzen !!!
Im nächsten Schritt müssen noch Änderungen an der MariaDB Konfiguration vorgenommen werden. Diese gibt der Hersteller auf seiner Homepage genau an.
Diese Änderungen machen wir mit folgenden Befehlen:
echo "log-bin = /var/log/mysql/mariadb-bin" >> /etc/mysql/my.cnf echo "log-bin-index = /var/log/mysql/mariadb-bin.index" >> /etc/mysql/my.cnf echo "binlog_format = mixed" >> /etc/mysql/my.cnf
Danach muss die Datenbank nur noch neugestartet werden.
service mysql reload
4.3 Nginx Konfiguration anpassen
Die Konfigurationsdateien zu nginx können ihr auf der Homepage von Nextcloud anschauen.
Die nachfolgenden Konfigurationen sind alle so gemacht, dass Nextcloud später über die URL “cloud.eureDomain.de” aufgerufen werden kann.
Im Nachfolgenden zeige ich euch die Konfiguration von der Herstellerwebseite. Da die Daten verschlüsselt übertragen werden sollten, müssen sie noch ein Zertifikat erstellen, wenn sie noch keins haben sollten. Wie sie ein passendes Zertifikat erstellen erfahren sie hier.
Ihr müsst nun die Konfiguration öffnen:
nano /etc/nginx/sites-available/default
und mit nachfolgendem Code den Inhalt der Datei überschreiben.
Die markierten Stellen müsst ihr anpassen.
upstream php-handler { server unix:/run/php/php7.0-fpm.sock; } server { listen 80; server_name cloud.example.com; # enforce https return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name cloud.example.com; ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key; # Add headers to serve security related headers # Before enabling Strict-Transport-Security headers please read into this # topic first. # add_header Strict-Transport-Security "max-age=15768000; # includeSubDomains; preload;"; # # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Path to the root of your installation root /var/www/html/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } # The following 2 rules are only needed for the user_webfinger app. # Uncomment it if you're planning to use this app. #rewrite ^/.well-known/host-meta /public.php?service=host-meta last; #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json # last; location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; location / { rewrite ^ /index.php$uri; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~ \.(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; # Add headers to serve security related headers (It is intended to # have those duplicated to the ones above) # Before enabling Strict-Transport-Security headers please read into # this topic first. # add_header Strict-Transport-Security "max-age=15768000; # includeSubDomains; preload;"; # # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Nun muss nginx neu gestartet werden, damit die Konfiguration eingelesen wird.
service nginx restart
5. NextCloud starten
Wenn ihr nun NextCloud startet, dann solltet ihr folgendes sehen.
Das Datenverzeichnis sollte aus Sicherheitsgründen nicht innerhalb des Webservers liegen. Also NICHT im Pfad “/var/www/….”. Damit nginx später aber Zugriff auf das Verzeichnis hat, müsst ihr die Verzeichnis-Berechtigungen entsprechend anpassen von eurem Datenverzeichnis. Das kann zum Beispiel so aussehen für das Verzeichnis “/opt/nextcloudDaten”:
chown -R www-data:www-data /opt/nextcloudDaten/
Hier gebt ihr noch den Benutzer + Passwort an, den ihr im Schritt 4.2 angelegt habt.
Nun seid ihr fertig und habt eure eigene Cloud für eure Daten. Nun könnt ihr hier auf der Webseite noch nach anderen nützlichen Anleitungen für Nextcloud suchen.
This post is actually a good one it assists new internet users, who are wishing in favor of blogging.
You completed a few nice points there. I did a search on the theme and found nearly all persons will consent with your blog.
leider funtkioniert diese anleitung nicht mehr. nextcloud zeigt nur 403 Fehler an
in der Anleitung schreibst Du man solle Nextcloud nach /var/www/html/ herunterladen und dort entpacken. Deine Nginx-Config zeigt aber auf /var/www/nextcloud
Kannst du mir sagen wofür die MariaDB configs bezüglich des logging verhaltens gut sein sollen?
Das führt dazu das der normale mysql/mariadb commandline client nicht mehr funktioniert.
Sagt dann folgendes beim Aufruf:
Ich habe die Konfigurationen wieder heraus genommen. Ich finde da auch sonst nichts wofür das nötig sein sollte…
Hey,
auch ich möchte mich für die tolle Anleitung bedanken. Das mit dem
musste auch ich bei mir entfernen.
Leider habe ich noch ein anderes Problem und leider keine wirklich funktionierende Lösung gefunden. Vielleicht hast Du da ja eine Idee:
Ich nutze KeePass für meine Passwörter und öffne die kdbx-Datei über eine URL (NextCloud, WebDAV). Leider kommt aber immer eine Fehlermeldung: “Der Server hat eine Protokollverletzung ausgeführt. Section=ResponseHeader Detail=Auf CR muss LF folgen”.
Gleiches Problem auch mit dem Outlookconnector für den NextCloud Calender
Alles was Google so her gibt, und irgendwie einleuchtend war (leider sagen die meisten das man im .NET Framework eine Option setzen soll, was ja nur das Problem umgeht), hat nicht funktioniert.
Meine aktuelle Programmversionen:
Debian 9.0
nginx 1.10.3
PHP 7.0.19-1
Schon mal vielen Dank im voraus
Hey, Super Arbeit die du hier vollbringst!!!
Deine Anleitungen sind echt klasse.
In der Nginx-Konfiguration musste bei mir das obere
herausgelöscht werden, da die clickjacking-Abwehr sonst nicht richtig funktioniert.