WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden

Aus

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

Vorraussetzungen

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

  • Kentnisse im Umgang mit der Kommandozeile.
  • Wie geben ich etwas ein.
  • Wie erstelle ich eine Datei mit vi/Nano oder Admin Tool.
  • Wie mache ich einen Datei Ausführbar.

Als Software/Hardware Vorrausetzung:

  • Zugang zu DS über Die Kommandozeile.
  • IPKG muß 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.

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

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

cd /tmp
mkdir davfs
cd davfs
wget http://www.sfr-fresh.com/unix/www/davfs2-1.4.6.tar.gz
tar -xzf davfs2-1.4.6.tar.gz

3. Den SRC Code kompilieren mit:

cd davfs2-1.4.6
./configure --prefix=/opt --with-neon=/opt --with-ssl
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. Ich weiß nicht ob man das genau so über die Synology Oberfläche erstellen könnte. Vielleicht könnte das mal jemand austesten und melden ob es genau so funktioniert. Ich hatte es so wie hier über die Kommandozeile gemacht.

addgroup davfs2
adduser -D -H -G davfs2 davfs2

Login Daten für den Webspeicher eingeben

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

https://sd2dav.1und1.de            Login_Name              Passwort

2. Über die Synology muß jetzt noch der zu Verknüfende lokale ordner angelegt werden. Bei mir heißt dieser 1und

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 muß das natürlich hier auch berücksichtigt werden.

mount -t 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. Auch hier kommt 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.

#!/bin/sh

case $1 in
start)
        /opt/bin/mount -t davfs https://sd2dav.1und1.de/ /volume1/1und1/
        ;;
stop)
        /opt/bin/umount /volume1/1und1/
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac


Den 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: