WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

Mit davfs2 ist es möglich Online Webspeicher so in die DS einzubinden als wäre es ein Interner Gemeinsamer Ordner. In diesem Artikel wird beschrieben wie man davfs2 kompiliert und einrichtet. Danach wird am Beispiel von 1und1 Smartdrive erklärt wie dieser Webspeicher automatisch beim booten der DS eingebunden und mit einem Gemeinsamen Ordner verknüpft wird. Der Vorteil davon ist das jegliche Dateiänderung an einem Internen Ordner der DS sich sofort (natürlich mit Upload Verzögerung) am Webspeicher auswirkt. Genauso kann von Unterwegs eine Datei auf den Webspeicher übertragen werden und findet sich sofort (natürlich mit Download Verzögerung) auf der DS wieder. Eingerichtet habe ich das auf meiner DS111/3.1-1594 und, wie erwähnt, mit 1und1 Smartdrive. Es spricht eigentlich nichts dagegen andere DS zu benutzen. Genau so sollte anderer Webspeicher benutzbar sein.

Also was werden wir tun:

  • Kompilieren und Installieren von davfs2.
  • mount des Webspeichers mithilfe von davfs2.
  • Einbinden von einem Server Zertifikat um die Verbindung über https zu erstellen.
  • Start/Stop Script einrichten.

Voraussetzungen

Als erstes benötigen wir Ruhe und Zeit. Dann noch:

  • Kenntnisse im Umgang mit der Kommandozeile.
  • Wie gebe ich etwas ein.
  • Wie erstelle ich eine Datei mit vi/nano oder Admin Tool.
  • Wie mache ich einen Datei ausführbar.
  • Habe ich ein Backup von meinen wichtigen Daten, falls etwas schief geht?

Als Software/Hardware Voraussetzung:

  • Zugang zu DS über Die Kommandozeile.
  • IPKG muss natürlich auch installiert sein. Am besten mit der beschriebenen erweiterten Konfiguration.
  • Ich persönlich komme mit den Editoren vi oder nano nicht so zurecht und habe mir dafür AdminTool installiert. Da kann mit Copy/Paste und Mausclicks das Meiste erledigt werden.
  • Online Speicherplatz der über WebDAV ansprechbar ist.
  • Einen Browser der es ermöglicht das Server Zertifikat lokal abzuspeichern. Ich hatte Firefox dazu benutzt.

Hinweis: Ihr macht das auf eigene Verantwortung und solltet ein Backup von wichtigen Daten besitzen. Wenn nicht, sollte man jetzt ein Backup erstellen!

Installation

Kompilieren von davfs2

1. Mithilfe der Kommandozeile auf die DS als Root einloggen und folgende Pakete installieren:

ipkg update
ipkg install neon
ipkg install gcc
ipkg install optware-devel
ipkg install adduser

2. Wenn die Pakete Installiert sind den davfs2 SRC Code beziehen:

cd /tmp
mkdir davfs
cd davfs
wget http://mirrors.zerg.biz/nongnu/davfs2/davfs2-1.4.7.tar.gz
tar -xzf davfs2-1.4.7.tar.gz

3. Den SRC Code kompilieren mit:

cd davfs2-1.4.7
./configure --prefix=/opt --with-neon=/opt
make
make install

4. Puh, das wäre geschafft. Es sollte sich jetzt davfs2 auf der DS befinden. Nachprüfen lässt es sich wenn dieser /opt/etc/davfs2 Ordner existiert. Durchatmen, beruhigen nix kaputt gemacht. Weiter gehts...

Anpassen der davfs2 Einstellungen an die DS

1. Als erstes wird der der Cache DIR Pfad von davfs2 angepasst. Dazu wird die Datei /opt/etc/davfs2/davfs2.conf verändert. Wie gesagt dies it mit vi/nano oder auch dem AdminTool möglich. Es wird folgende Zeile verändert

cache_dir       /opt/var/cache/davfs2         # system wide cache

Der Eintrag existiert schon und ist mit einem # am Anfang auskommentiert. Das # entfernen und den Pfad dahinter einfügen.

2. Danach das Cache Verzeichnis erstellen.

mkdir -p /opt/var/cache/davfs2

3. Ein Benutzer und eine Gruppe für davfs2 erstellen. Wobei einmal eine Gruppe „davfs2“, als auch ein Benutzer „davfs2“, der der Gruppe „davfs2“ angehört, zu erstellen ist. Das geht entweder über die Synology Oberfläche (DSM) oder über die Komandozeile.

addgroup davfs2
adduser -D -H -G davfs2 davfs2

Login Daten für den Webspeicher eingeben

1. Über die Synology muss zuerst der zu verknüpfende lokale Ordner angelegt werden. Bei mir heißt dieser 1und1, der komplette Pfad dorthin heißt damit /volume1/1und1

2. In der Datei /opt/etc/davfs2/secrets wird der Login für den Webspeicher hinterlegt.

/volume1/1und1            Login_Name              Passwort

Fertig, grundsätzlich ist die Einrichtung jetzt erst mal getan. Ob unsere Arbeit jetzt funktioniert?? Testen wir es aus.

MOUNT/UMOUNT des Webspeichers

Mit dem folgenden Befehl wird der Speicher eingebunden. Hier sind bei anderen Hostern die Daten anzupassen. Wenn euer gemeinsamer Ordner nicht 1und1 heißt, dann muss das natürlich hier auch berücksichtigt werden.

mount -t davfs https://sd2dav.1und1.de/ /volume1/1und1/

Falls dieser mount-Befehl nicht funktioniert, sollte alternativ der mount.davfs Befehl benutzt werden:

/opt/sbin/mount.davfs   https://sd2dav.1und1.de/   /volume1/1und1/

Oje eine Fehlermeldung und jetzt?

/sbin/mount.davfs: das Server-Zertifikat passt nicht zum Namen des Servers
  Aussteller:    GlobalSign nv-sa, Domain Validation CA, BE
  Inhaber:       *.safesync.com, Domain Control Validated, US
  Name:          *.safesync.com
  Fingerabdruck: 63:bc:70:08:b8:25:64:94:49:b6:5f:93:04:1d:29:68:ef:88:8f:68
Du solltest das Zertifikat nur akzeptieren, wenn du überprüft hast,
dass der Fingerabdruck stimmt. Der Server könnte gefälscht sein oder
ein Angreifer könnte sich in die Verbindung zum Server eingeschaltet haben.
Ich akzeptiere das Zertifikat für diese Sitzung [j,N]: j

Das will uns einfach sagen das wir eine https-Verbindung eröffnen, aber unsere DS nicht sagen kann ob wir wirklich mit der gewollten Gegenstelle verbunden sind. Die DS kennt einfach das Zertifikat nicht. Das werden wir natürlich ändern, aber für den Moment antworten wir mit J

Zum Test kann man jetzt Dateien in den 1und1 Ordner schieben und diese sollten nach automatischem Upload im Webspeicher auftauchen. Genau so tauchen Änderungen im Webspeicher direkt im 1und1 Ordner auf der DS auf.

Mit dem Befehl:

umount /volume1/1und1/

wird die Verbindung wieder getrennt.

Mit dem alternativen Befehl:

umount.davfs /volume1/1und1/

...erhält man eine Fehlermeldung.

/sbin/umount.davfs:
  can't find mount.davfs-process with pid 4661;
  trying to unmount anyway.
  you propably have to remove /var/run/mount.davfs/volume1-1und1.pid manually

Der Hinweis you propably have to remove /var/run/mount.davfs/volume1-1und1.pid manually trifft, bei mir zumindest nicht zu. Die Datei wird sauber entfernt. Wenn nicht kann sie unter dem angegbenen Pfad manuell entfernt werden. Ist sie bei einem erneutem mount noch Vorhanden wird man darauf hingewiesen.

Um jetzt einen automatischen mount/umount beim Start zu ermöglichen, kümmern wir uns als nächstes um das Zertifikat.

Server Zerifikat einbinden

1. In Firefox für 1und1 folgendes Zertifikat als PEM exportieren.

ThawtePremiumServerCA

So ist es zu Finden:

Firefox:
Extras/Einstellungen...
Erweitert
Zertifikate Anzeigen
Zertifizierungsstellen
 dort -> Thawte Consulting cc

dann

Thawte Premium Server CA Selecten und
Exportieren als X.509-Zertifikat (PEM)

2. Das Zertifikat wird von .crt in .pem umbenannt und hier abgelegt:

opt/etc/davfs2/certs/ThawtePremiumServerCA.pem

3. Das Zerifikat in die Datei davfs2.conf eingeben. Dort ist der bei der Zeile

servercert        ThawtePremiumServerCA.pem

wieder das # zu entfernen und den Text dahinter eingeben.

4. Wurde alles richtig gemacht und das zertifikat stimmt kann jetzt noch mal der mount Befehl ausgeführt werden. Diesmal sollte keine Warnung mehr kommen. Wir haben jetzt eine https Verbindung zum 1und1 Server die mit Zertifikat abgesichert ist.

Jetzt müssen wir nur noch den Start/Stop Script anlegen.

Start/Stop Script

1. Einfach in dem Verzeichnis opt/etc/init.d die Datei S99Davfs2Mount.sh mit folgendem Inhalt erstellen. Falls bei einem Absturz/Stromausfall der DS die erwähnte volume1-1und1.pid nicht gelöscht wird, ist vor dem Ausführen des mount Befehls die IF Abfrage und der Befehl um die Datei zu löschen.

#!/bin/sh

case $1 in
start)
        if test -f /var/run/mount.davfs/volume1-1und1.pid; then
           rm /var/run/mount.davfs/volume1-1und1.pid
        fi
        mount -t davfs https://sd2dav.1und1.de/ /volume1/1und1/
        ;;
stop)
        umount /volume1/1und1/
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac

Wenn der mount.davfs Befehl benötigt wird, ist alternativ dieser Script zu benutzen:

#!/bin/sh

case $1 in
start)
        if test -f /var/run/mount.davfs/volume1-1und1.pid; then
           rm /var/run/mount.davfs/volume1-1und1.pid
        fi
        /opt/sbin/mount.davfs https://sd2dav.1und1.de/ /volume1/1und1/
        ;;
stop)
        umount /volume1/1und1/
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac

Mitunter kann es bei dem eingebundenen WebDav-Laufwerk zu Problemen mit den Verzeichnis- und/oder den Dateiberechtigungen kommen. Insbesondere dann, wenn man nicht als root bzw. admin auf das WebDav-Laufwerk zugreift, sondern als „normaler“ Benutzer mit eingeschränkten Rechten. Die Festlegung für diese Berechtigungen sowie weitere Optionen können über den mount.davfs Befehl im Start/Stop Script spezifiziert werden. Weitere Infos zur Syntrax von mount.davfs findet man [HIER]

In solchen Fällen bietet sich z.B. nachfolgendes Script an:

#!/bin/sh

case $1 in
start)
        if test -f /var/run/mount.davfs/volume1-1und1.pid; then
           rm /var/run/mount.davfs/volume1-1und1.pid
        fi
        /opt/sbin/mount.davfs -o dir_mode=775 https://sd2dav.1und1.de/ /volume1/1und1/
        ;;
stop)
        /opt/sbin/umount.davfs /volume1/1und1/
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac

Das Script natürlich noch ausführbar machen.

chmod +x /opt/etc/init.d/S99Davfs2Mount.sh

Fertig, das war alles. War doch gar nicht so schwer, oder?

Externe Links

Für die Umsetzung habe ich unter anderem Anregungen von folgenden Quellen benutzt:

Weitere Webseiten