HowTo: Nextcloud unter OpenMediaVault 3 inkl. Fail2Ban

Als kleine Einleitung: ich beschreibe hier mein Vorgehen, das Fehlerfrei funktioniert. Ich bin mir sicher, ob man an der ein oder anderen Stelle etwas weglassen oder ein anders vorgehen wählen kann. Der Einfachheit halber habe ich mich von einem anderen Computer über ssh auf meinem NAS eingeloggt. Hier kann ich dann gleichzeitig im Browser und in der Konsole Arbeiten.
Da Nextcloud 11 das in OMV 2 mitgelieferte PHP 5.4 nicht mehr unterstützt, benutze ich OMV 3.0.59 als System. Außerdem habe ich festgestellt, dass Nextcloud nur über https ohne „zicken“ läuft. Daher habe ich im Vorfeld den OpenMediaVault Port auf einen anderen gesetzt (z.B. 40443) damit kann Nextcloud einfach über Port 443 laufen.
Als Voraussetzung gehe ich davon aus, dass auch die OMV-extras installiert und deren Paketquellen aktiviert sind. Außerdem sollte ein Zertifikat existieren. Ob selbst erstellt oder über letsencrypt ist egal.
Zu Beginn installieren wir erstmal die Plugins, die wir in dieser Anleitung benötigen:
- openmediavault-nginx
- openmediavault-mysql
- openmediavault-fail2ban
Sind diese Plugins installiert, kann es losgehen. Als erstes geht Ihr in das MySQL Plugin, aktiviert das Plugin und ganz unten die SQL-Verwaltungsseite.

Der Klarheit halber vergebt ein root Passwort unter dem Button "Passwort zurücksetzen", ansonsten gibt es manchmal Probleme beim Anmelden. Anschließend geht Ihr auf die Weboberfläche von dem Datenbanktool und logt euch mit "root" und dem vergebenen Passwort ein.

Hier geht Ihr auf Datenbank -> Neue Datenbank erstellen -> „nextcloud“ -> Datenbank erstellen


Nun legt Ihr noch einen neuen Benutzer hierfür an. Der Einfachheit nennt Ihr den auch „nextcloud“ und vergebt die Rechte für die entsprechende Datenbank -> „Benutzer aktualisieren“ speichert die Einstellung.



Dann könnt Ihr euch wieder aus der MYSQL-Oberfläche abmelden. Jetzt muss ein Ordner für Nextcloud angelegt werden. Dies macht Ihr unter „Freigegebene Ordner“

Damit alles so einfach wie möglich bleibt vergebt hier auch den Namen „nextcloud“. Um die Installationsdatei von Nextcloud ablegen zu können, habe ich an der Stelle den Ordner für einen smb/cifs User freigegeben und eingebunden. Dies kann aber auch über ftp oder direkt über die Console in den Ordner gespeichert werden.
Wenn die setup-nextcloud.php in dem Ordner abgelegt ist, ändert Ihr noch die Rechte des Ordners unter ACLfolgeder Maßen ab:

Die nginx Einstellungen müssen jetzt vorgenommen werden. Dazu legt Ihr erst einen neuen pool an

Die Eingaben sind folgendermaßen vor zu nehmen:


Nicht zu vergessen ist die Erweiterte Option : env[PATH] = /usr/local/bin:/usr/bin:/bin
Wenn dies erledigt ist wird der Server konfiguriert:



Erweiterte Optionen:
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass $socket;
}
# Optional: set long EXPIRES header on static assets
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
Nun wird das nginx-plugin noch aktiviert und gespeichert.

Jetzt geht ihr in die Konsole oder direkt an euren NAS und meldet euch als root an. Es werden von Nextcloud noch ein paar Pakete benötigt die Ihr installieren müsst:
apt-get install php5-gd php5apcu php5-curl php5-cli
Wenn dies geschehen ist sollte der Nextcloud Installation nichts mehr im Wege stehen. Ruft in einem Browser entweder über die IP-Adresse oder den hostnamen die Setupdatei auf:
https://meineip/setup-nextcloud.php
Es sollte nun die Installation starten. Bei der Frage wohin Nextcloud installiert werden soll gebt ihr den „.“ ein, außer ihr möchtet später mit https://meineip/ordnername die Seite Aufrufen.



Hier sind folgende Sachen zu beachten:
- Username und Password ist für den Admin Account.
- Den Pfad unter data folder merkt ihr euch am besten für später noch (hier müsste sowas wie "/media/die-UUID-des-Datenträgers-stehen/nextcloud/data" stehen).
- Wenn Ihr die Daten an anderer Stelle haben möchtet, dann müsst Ihr hier den Pfad ändern. Dies kann mann aber auch später noch in der config datei ändern (wird von mir aber nicht genauer beschrieben).
- Wählt als Datenbank MYSQL und gebt die vorher angelegten Daten ein. „localhost“ bleibt stehen.
Jetzt sollte erstmal Nextcloud grundlegend funktionieren. Nichts desto trotz solltet Ihr noch einige Änderungen vornehmen bzw. für fail2ban vorbereiten. Dies findet jetzt wieder in der Konsole statt. Hier brauchen wir auch den den Pfad wo Nextcloud standardmäßig den Datenordner angelegt hat. Das macht das Finden der config Datei leichter.
Damit wechselt Ihr in das config Verzeichnis der NC installation:
cd /media/die-UUID-des-Datenträgers/nextcloud/config
Anschließend öffnet Ihr die config.php zum Ändern:
nano config.php
Sie müsste ungefähr so aussehen. Ändert nichts außer das beschriebene hier. Die config.php ist nur ein Beispiel:
<?php
$CONFIG = array (
'instanceid' => 'xxxxxxxxxxx',
'passwordsalt' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'trusted_domains' =>
array (
0 => '192.168.10.155'
),
'datadirectory' => '/media/die-UUID-des-Datenträgers/nextcloud/data',
'dbtype' => 'mysql',
'version' => '7.0.2.1',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud,
'dbpassword' => 'xxxxxxxxxxxxxxxxx',
'installed' => true,
);
Zusätzliche Änderungen sind ratsam:
<?php
$CONFIG = array (
'instanceid' => 'xxxxxxxxxxx',
'passwordsalt' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'trusted_domains' =>
array (
0 => '192.168.10.155'
1 => 'hier sollte man noch zusätzliche IP oder DNS einträge machen',
2 => 'zum Beispiel der Hostname deines NAS'
),
'datadirectory' => '/media/die-UUID-des-Datenträgers/nextcloud/data',
'dbtype' => 'mysql',
'version' => '7.0.2.1',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud,
'dbpassword' => 'xxxxxxxxxxxxxxxxx',
'installed' => true,
);
Für fail2ban muss noch das Protokollieren Nextcloud aktiviert werden:
<?php
$CONFIG = array (
'instanceid' => 'xxxxxxxxxxx',
'passwordsalt' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'trusted_domains' =>
array (
0 => '192.168.10.155'
1 => 'hier sollte man noch zusätzliche IP oder DNS einträge machen',
2 => 'zum Beispiel der Hostname deines NAS'
),
'datadirectory' => '/media/die-UUID-des-Datenträgers/nextcloud/data',
'dbtype' => 'mysql',
'version' => '7.0.2.1',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud,
'dbpassword' => 'xxxxxxxxxxxxxxxxx',
'loglevel' => 1,
'logtimezone' => 'Europe/Berlin',
'logfile' => '/var/log/nextcloud.log',
'log_rotate_size' => 10485760,
'cron_log' => true,
'installed' => true,
);
Ich habe den Pfad für die Logdatei unter /var/log/nextcloud.log ausgewählt weil hier von OpenMediaVault alle anderen Logdateien liegen. Gespeichert wird in nano immer mit strg+o. und den Editor beenden mit strg+x.
Anschließend muss die „nextcloud.log“ noch erstellt werden:
cd /var/log/
nano nextcloud.log
Speichern der Datei mit strg+o und verlassen strg+x.
Jetzt müssen die Rechte noch richtig gesetzt werden:
chown www-data:www-data nextcloud.log
Für fail2ban muss jetzt der Filter erstellt werden der nach den gebrauchten Daten in der Logdatei sucht:
cd /etc/fail2ban/filter.d/
nano nextcloud.conf
Hier wird folgendes eingefügt:
[Definition]
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login
failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
ignoreregex =
Speichern + Schließen.
Als letztes muss jetzt noch das Jail dazu angelegt werden. Dies hab ich auch in der Weboberfläche von OMV getan, da dies der einfachste Weg ist.
Hier geht Ihr unter fail2ban ->Jails -> Hinzufügen und macht Ihr folgende Einträge:




Bei fail2ban->Einstellungen tragt Ihr noch bei der Findtime eine „0“ ein und aktiviert das Plugin. Jetzt solltet ihr es mal versuchen können ob fail2ban richtig funktioniert, in dem Ihr euch mit falschem Passwort in Nextcloud einlogt. Hierzumüsstet Ihr dann in der Weboberfläche von OMV->Dienste->fail2ban einen Eintrag finden.
Ich hoffe ich habe rückwirkend noch alles richtig zusammengebracht ? Wenn Ihr jetzt noch eure Datenordner von OMV in Nextcloud haben wollt, könnt ihr diese mit der Option „Externe Daten“ unter Nextcloud einbinden.
Wenn Ihr das mit SMB oder FTP machen wollt, dann an der Stelle eine kleine Warnung: auch wenn Ihr den server „localhost“ dann verwendet, erzeugt ihr hiermit eine hohe Auslastung auf dem NAS. Wenn Ihr sie aber als lokale Datenträger einbindet, müsst Ihr dem Freigabeordner in OMV noch ACL’s für die Gruppe oder den Benutzer www-data geben. Den genauen Unterschied von Vor- und Nachteilen bzw. Nutzen ob Gruppe oder user kann ich nicht sagen. Vielleicht kennt sich hier noch jemand genauer aus und kann es in den Kommentaren ergänzen.
Wenn mir ein Fehler unterlaufen ist dann ist diese Anleitung auch nicht in Stein gemeißelt. Viel Erfolg.
Wir Danken unserem Besucher Christoph alias happyreacer für die tolle und detaillierte Anleitung!
45 Kommentare
|
|||
Hi. Sehr gute Beschreibung. Mittlerweile habe ich OMV4 am Start. Da wird Nextcloud als Docker in den Zusatzaddons angeboten. Nur komme ich mit der Konfiguration nicht weiter. Und Fail2Ban wird, glaube ich, nicht mehr unterstützt bzw. ist nicht mehr original dabei. Könnte vielleicht ein erfahrener Benutzer so einen informativen Guide für OMV4 und Nextcloud als Docker schreiben? |
|
|||
Ich habe Nextcloud auf 13.0 aktualisiert. Nun bekomme ich unter Grundeinstellungen angezeigt das ich auf PHP-Version 7.0 oder höher upgraden soll. Kann mir jemand sagen wie das funktioniert? |
|
|||
hi, Bin gerade auch bei der Installation und auch bei mir ist der Fehler 404 bei dem Aufruf der setup Seite. Habe aber eine Lösung gefunden: Bei der Konfiguration Nginx-Server ? alles wie gehabt nur ohne SSL, Port: 81 Der Aufruf lautet dann „http://deineIP:81/setup-nextcloud.php“ Bei SSL Variante hatte ich auch den Fehler „The selected port SSL is already in use“ bei Port 443, habe dann mit 444 probiert aber kein Erfolg. Ohne SSL funktioniert bis zum Aufruf der Installation ob dann noch welcher Fehler auftritt weiß ich noch nicht. Sonst ist die Anleitung Prima |
|
|||
Hallo, Installation hat bis zum Installationsinterface geklappt. Bekomme folgende Fehlermeldung: 404 Des Weiteren lassen sich die Rechte rekursiv nicht übernehmen... Gibt es hierfür schon eine Lösung? OMV 3.0.88 |
|
|||
@techMod aktiviere mal NginX BEVOR du die Configuration beginnst. Bei mir hat es so geklappt. |
|
|||
Danke für diesen sehr nützlichen Beitrag !!! Leicht OT : Meine Nextcloud läuft aktuell auf einer Synology Diskstation (PHP7 + MariaDB). Gibt es einen Weg diese Nextcloud-Instanz auf ein DIY-NAS mit OMV zu migrieren ohne alles neu zu erstellen (installieren + Daten hinzufügen ...) ? Momentan wird auch Kalender und Kontakte verwendet, wäre schön wenn ich das alle mitnehmen könnte. |
|
|||
Hallo und danke für die Anleitung, es versteckt sich jedoch ein typo bei der Installation der php5-Abhängigkeiten: Es sollte php5-acpu statt php5acpu heissen, da das Paket sonst nicht gefunden wird. Ansonsten stecke ich bei dem Aufruf der setup seite fest. nginx gibt mir einen 404 zurück. Ich bin die Anleitung oben wort für wort durchgegangen. |
|
|||
Habt ihr eine Idee, wie man auf Basis eures Tutorials auch die App Collabora Online zum laufen bekommt? Dokumente lassen sich zwar erstellen (nach einem reload), aber nicht öffnen. Es kommt die Meldung "Zugriff verweigert". Ich habe bereits versucht das Lets Encrypt Zertifikat zu verwenden, doch leider hat das auch nicht geholfen. |
|
|||
Hi, Erstmal Danke für das tolle Tutorial hat prima geklappt musste nur bei fail2ban den regex wert ändern da nextcloud 12 die logs scheinbar etwas anders formatiert als die version die im tutorial genutzt wurde: # Fail2Ban fitler for nextcloud # [Definition] failregex=^.*\"Login failed: \.*\ \(Remote IP: \(HOST>\\).*$ ignoreregex = Jedoch habe ich jetzt das problem das als Remote IP im Log nur meine router IP gelistet wird und nicht die IP des richtigen Nutzers. die openmediavault notifications beinhaltet aber korrekte IP adresse von außen (zb bei einem neuen login) nur bei der nginx instanz wird das ganze nicht korrekt aufgelöst. Hat jemand nen Tip? Denn so ist das ganze leider ziemlich nutzlos :( |
|
|||
Die Plugins Nginx MySQL fail2ban bekommst du via OMV-Extras: http://omv-extras.org/joomla/index.php/guides |
|
|||
Hallo und vielen Dank für die detailierte Anleitung. Leider scheitert es bei mir schon am ersten Schritt :-) Ich habe mir auf einem HP Microserver Gen8 OMV 3 (Release: 3.0.74) installiert. Läuft auch alles soweit als herkömmliches NAS mit 2 HDDs im Raid1. Ich möchte mir zusätzlich noch Owncloud oder Nextcloud draufbügeln - oder sonst eine Alternative - bin da recht flexibel da ich noch keine Erfahrung mit dem Zeugs hab. Aber - wie zum Teufel komme ich an die Plug-Ins: openmediavault-nginx openmediavault-mysql openmediavault-fail2ban Diese stehen mir scheinbar nicht zur Verfügung :-( Gibts da eine Hintertür? apt-get install spuckt mir zu openmediavault nur eine Handvoll PlugIns aus - die ich so auch im WebGUI sehe. Aber, die, die ich für cloud services benötige finde ich nicht :( Irgendwelche Tips oder Hinweise? Viele Grüße Michael |
|
|||
Ergänzung: Natürlich in der /media/die-UUID-des-Datenträgers/nextcloud/nextcloud/config/config.php datadirectory => /media/die-UUID-des-Datenträgers/nextcloud_data, noch setzen, dann passt es! |
|
|||
Das HowTo ist erste Sahne und lässt sich wunderbar umsetzen. Meine Nextcloud rennt wie eine Eins! Ich stört aktuell noch, dass im Adressfeld "https://domain.name/index.php" auftaucht. Kann ich das irgendwie unterbinden? Ich habe ebenso den /nextcloud/data aus dem web-root gezogen. Dazu folgendes erledigt: /media/die-UUID-des-Datenträgers/nextcloud/nextcloud/config/config.php installed => true, auf installed => false, geändert (maintainace mode) in OMV einen neuen Share angelegt: /media/die-UUID-des-Datenträgers/nextcloud_data und Berechtigungen für www-data gesetzt alle Daten aus /media/die-UUID-des-Datenträgers/nextcloud/data rüberkopiert (WICHTIG! Den Ordner .ocdata mitkopieren, ggf mit ls -a anzeigen lassen!) ins MySQL Interface eingeloggt und in der Tabelle oc_storage den data-pfad angepasst und anschließend den wieder installed => true, in der /media/die-UUID-des-Datenträgers/nextcloud/nextcloud/config/config.php gesetzt. ggf noch die Besitzrechte am neuen Data-dir anpassen. |
|
|||
Hallo, wo finde ich das MySQL Webinterface? Danke Roland |
|
|||
Hi, deine Anleitungen sind wirklich prima. Vielen Dank dafür :) Ich habe jedoch folgendes Problem. Beim einstellen des Ports in nginx unter SSL taucht bei mir ein Problem auf "The selected port SSL is already in use." Fehler #0: exception OMV\Exception with message The selected SSL port is already in use. in /usr/share/openmediavault/engined/rpc/nginx-server.inc:357 Stack trace: #0 /usr/share/openmediavault/engined/rpc/nginx-server.inc(219): OMV\Engined\Rpc\NginxServer->validateServer(Object(OMV\Config\ConfigObject)) #1 [internal function]: OMV\Engined\Rpc\NginxServer->set(Array, Array) #2 /usr/share/php/openmediavault/rpc/serviceabstract.inc(124): call_user_func_array(Array, Array) #3 /usr/share/php/openmediavault/rpc/rpc.inc(86): OMV\Rpc\ServiceAbstract->callMethod(set, Array, Array) #4 /usr/sbin/omv-engined(536): OMV\Rpc\Rpc::call(Nginx, set, Array, Array, 1) #5 {main} Leider sagt mir das gar nichts. Ich habe auch schon vergeblich nach einer Lösung gesucht. Kann mir vllt jemand weiterhelfen? |
|
|||
Nett wäre es wenn die Nextcloud-Installation auf der Systemplatte laufen würde und nicht auf einer Datenplatte. Da könnte man ggf. einiges an Strom sparen wenn alle Platten mal schlafen, außer die Systemplatte natürlich :). Dies wäre auch deshalb sehr nett weil es bei vielen Installationen da Draußen sicherlich viele eine SSD als Systemplatte verwenden. Ich schätze mal das man da selbst an die Configs von nginx ran muss, oder? |
|
|||
Danke für die tolle Anleitung, schön aufbereitet! @Ruschi & allgemein: Die fail2ban - Einstellungen funktionieren perfekt. ABER es ist unbedingt auf eine Kleinigkeit zu achten, wenn der obige Code per copy&paste genutzt wird. Die Definition besteht aus einer Zeile, nano setzt aber ein "Enter" zwischen "Login" und "failed" wenn der Code nur eingefügt wird. Insgesamt hat der Code also nur 3 Zeilen: [Definition] failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: .* \(Remote IP: (HOST>\)","level":2,"time":".*"} ignoreregex = Hoffe ich konnte helfen, VG, Bernd |
|
|||
und noch ein tipp, bei external storage local auswählen und den kompletten pfad zum gewünschten verzeichnis angeben. dann kann man auf smb verzichten |
|
|||
das initiale kennwort von mysql konnte über das webif nicht gesetzt werden. über die shell funktioniert es: mysqladmin -u root password new-password |
|
|||
nicht vergessen, nach der installation die env varibles im pool wieder setzen. grüße |
Weitere 25 Kommentare anzeigen

Diesen Artikel kommentieren:

|
|
Ähnliche Artikel
OpenMediaVault 4.1.4 Beta Test
Am 23. August 2017 hat Volker Theile, Projektleiter von des Open-NAS Betriebsystems OpenMediaVault den "Feature-Freeze" für die aktuelle Version 3.x ausgerufen. Die Entwicklung so..NAS Basic 3.0 mit Apollo Lake
Für das NAS - Basic 3.0 nutzen wir wieder ein Mainboard von ASRock. Konkret handelt es sich um das ASRock J3455-ITX, welches mit einem neuen Intel Apollo Lake Vier..Update von OpenMediaVault 2.x
Da wiederholt nach einem HowTo zum Update von OpenMediaVault gefragt wurde, wollen wir euch hier kurz zeigen wie ihr das Update durchführen könnt. Um das NAS von OpenMediaVault 2..
Über den AutorStefan ist 33 Jahre alt, wohnt bei Hamburg und arbeitet als IT-Administrator in einer japanischen Firma. Stefan ist eines der drei Gründungsmitglieder von Technikaffe und schreibt seit April 2013 rund um die Themen Server, Netzwerk und Programmierung.