You say Cloud? I say SSHFS!

Nachdem ich das Setup nun mehrere Monate getestet habe, muss ich einmal von meiner sehr einfachen und erstaunlich gut funktionierenden Cloud-Alternative berichten.

Früher war ich ja überzeugter Dropbox-Benutzer, nachdem ich diese Jugendsünde hinter mir gelassen hatte, schlug ich mich dann mit git-annex durch. Das war auch eigentlich eine schöne Sache, aber ich wollte nicht auf jedem Gerät mein ganzes Repo dabei haben, und das richtig aufzuteilen und zu konfigurieren war mir irgendwie zu anstrengend.

Vor einiger Zeit habe ich dann angefangen, meine Daten (Dokumente, Fotos, Musiksammlung) einfach in meinem Home-Verzeichnis auf meinem Server zu lagern. Das habe ich dann, wenn ich es lokal brauchte, per sshfs eingebunden, mit meinen Daten gearbeitet und es danach wieder ausgehangen. Das war mir aber auch noch zu lästig; ich wollte, dass dieser SSHFS-Mount automatisch angelegt wird und ich transparent auf meine Daten zugreifen kann. Zuerst habe ich das mit systemd-Bordmitteln versucht, jedoch mit mäßigem Erfolg. Dann fiel mir zufällig afuse in die Hände: Ein FUSE-Dateisystem, das FUSE-Dateisysteme mounten kann.

afuse tut eigentlich nur folgendes:

  • Es stellt ein leeres Dateisystem per FUSE zur Verfügung. Dieses kann man an eine beliebige Stelle mounten. Nennen wir den Mountpoint mal ~/afuse.
  • Es wartet auf chdir()-Systemaufrufe unterhalb der Dateisystemwurzel. Wenn es vom Betriebssystem einen chdir()-Aufruf bekommt, parst es den Verzeichnisnamen und baut daraus ein neues mount-Kommando.
  • Dieses neue mount-Kommando führt es aus und mountet ein weiteres Dateisystem an der Stelle, an die man vorher chdir()en wollte.

Zusammen mit einigen Optionen, die sshfs etwas solider machen, entsteht daraus ein echter transparenter SSHFS-Mount, der sogar Roaming zwischen Netzwerken usw. übersteht und einfach nicht auffällt.

afuse selber muss man nun nur noch mit der Session starten. Ich mache das mit folgendem Kommando im KDE-Autostart:

afuse -o mount_template="sshfs %r: %m -o reconnect -o idmap=user" \
 -o unmount_template="fusermount -u -z %m" ~/.afuse/

Das bedeutet:

  • Stelle afuse im Verzeichnis ~/.afuse bereit
  • Wenn du ein chdir() für /%r erhältst, dann führe sshfs mit den Parametern %r: und dem chdir()ten Pfad selber aus; die reconnect-Option sorgt für den automatischen Wiederaufbau bei Netzwerkproblemen oder Roamin
  • Das unmount-Template mappt das Standard-umount-Kommando auf den fusermount-Wrapper, da normale Benutzer mount und umount nicht benutzen dürfen. Außerdem führt es mit -z einen „lazy unmount“ durch – falls die Verbindung einmal abreißt, sind offene File-Handles sowieso verloren; ein normaler Unmount würde unnötig darauf warten, dass Prozesse mit offenen Handles diese freigeben und so das Roaming erschweren.

Wenn ich nun folgendes mache…

cd ~/.afuse/nik@shore.naturalnet.de

…dann wird sofort mein Home des Benutzers nik auf shore.naturalnet.de per SSHFS gemountet. Ich habe das mit einem Symlink noch etwas schöner gemacht:

ln -sf ~/.afuse/nik@shore.naturalnet.de ~/NaturalNet-Cloud

Parallel habe ich mein Home der Teckids-Infrastruktur so eingebunden, so dass ich nun alle Dokumente der Vereinsarbeit transparent dort ablegen kann.

Ich habe unter anderem meine Amarok-Musikbibliothek im SSHFS liegen. Amarok startet bei mir mit der KDE-Session, und egal, was ich mache (WLAN, LTE, Kabelnetzwerk, kein Netzwerk und erst später verbinden,…), meine Musikbibliothek steht mir immer sofort zur Verfügung.

Einziger Nachteil: Es gibt keinen nennenswerten lokalen Cache. Wenn ich etwas offline brauche, dann kopiere ich es nach /var/tmp, bevor ich offline gehe. Dafür brauche ich vielleicht noch eine schönere Lösung – vielleicht aber auch nicht, klappt gut genug.

Zum Schluss noch ein Auszug aus meiner SSH-Config:

ServerAliveInterval 60 
Compression yes 
 
ControlMaster auto 
ControlPath ~/.ssh/master.%C.sock 
ControlPersist 10m 
 
VerifyHostKeyDNS yes

Das trägt vermutlich zur Stabilität bei. Tote Verbindungen werden nach spätestens 60 Sekunden geprüft und ggf. abgerissen, Komprimierung ist aktiviert, es wird ein sog. Mux-Master benutzt (so kann die durch SSHFS einmal offene Verbindung von Shells usw. mitgenutzt werden) und SSFP-Records werden zur Verbesserung der Sicherheit geprüft.

Vielen Dank für 15 enttäuschte Kinder, HKX!

Unser Verein ist unterwegs nach Hamburg zur Ferienfreizeit Hack’n’Fun. Die
Weihnachtszeit ist für die meisten Familien finanziell eher
herausfordernd, weshalb wir unsere Angebote möglichst kostengünstig
halten müssen.

Seit dem 01.02.2015 ist es möglich, Nahverkehrstickets der Deutschen
Bahn im HKX (Hamburg-Köln-Express) zu benutzen (siehe hier.
So kostet für unsere heutige Fahrt ein Schönes-Wochenende-Ticket für
fünf Personen 56 Euro.

Doch so toll das Angebot ist: Als wir uns mit 15 Kindern darauf
verlassen wollten, ließ uns HKX freundlicherweise im Stich. Ganze drei
Minuten vor Abfahrt des Zuges erhielten wir per Lautsprecherdurchsage
am Bahnsteig die Information, dass der HKX 1802 heute nur von
Fahrgästen mit Sitzplatzreservierung über HKX, nicht aber mit
DB-Tickets benutzt werden darf.

Weder auf der Website noch in den sozialen Medien war irgendeine
derartige Information zu finden. Dankenswerterweise informierte HKX
dann auch wenige Minuten nach Abfahrt des Zuges auf Twitter.

Und 15 Kinder sitzen enttäuscht am Bahnsteig und fürchten um ihre
Ferienfreizeit in Hamburg. Natürlich ist die Fahrt nach Hamburg noch
möglich, nun mit drei Umstiegen und über zwei Stunden mehr Fahrzeit.

Die für heute Nachmittag geplante Tour durch die Speicherstadt und den
Hafen? Entfällt, dank der absolut genialen Kundeninformation eines
Privatbahnunternehmens, das offenbar versucht, der Deutschen Bahn in
Sachen schlechter Service Konkurrenz zu machen.

Vielen Dank, HKX!


Original-Quelle: Teckids e.V. Mitglieds-Blog von Dominik George

3ème Event de Forteresse – Wochenende an der Maginot-Linie

Am Wochenende waren Sascha, Niklas und ich auf Geocaching-Tour nach Frankreich. Dort fand das „3ème Event de Forteresse“, ein Eigentlich-Mega-Event, statt. Ein Stück hinter der französischen Grenze verläuft die Maginot-Linie, der östliche Verteidigungswall gegen Deutschland, den Frankreich zwischen den beiden Weltkriegen erbaute. Anlässlich des Events haben wir uns einen Teil der Linie dann einmal angesehen, da uns ja alle Lost Places und gerade historische Bauten sehr interessieren.

Am Samstagmorgen fuhren wir von Wuppertal aus mit dem Auto los. Wir wollten am frühen Mittag an der Event-Location, dem Abri du Bichel Sud, ankommen und vorher einen kleinen Abstecher nach Luxembourg machen. Unsere Route führte über Bonn und Trier nach Wasserbillig und von dort weiter nach Kœnigsmacker, der Stadt direkt nördlich des Events.

Abri du Bichel-SudAm Bunker angekommen, wurden wir sogleich freundlich begrüßt. Das Event hatte zwar kein großes Rahmenprogramm (obwohl man hier bestimmt durchaus an Lost in MV anknüpfen könnte ;)), aber dennoch wurde vor Ort einiges geboten. Wir nahmen zunächst an der Führung durch den Abri du Bichel Sud teil, veranstaltet von der Association Mémoire des Intervalles de la Ligne Maginot. Es war eine sehr ausführliche Führung, bei der die gesamte Bunkeranlage mit Quartieren, Krankenstation, Technik, Küche und sogar einem voll funktionsfähigen alten Generator gezeigt und erklärt wurde. Nach der Führung konnten wir dann noch einige der um den Bunker herum ausgelegten Geocaches (leider nur auf Geocaching.com gelistet :() suchen und finden.

Für die Nacht hatten wir eine kleine, gemütliche Hütte auf dem Campingplatz in Volstroff gemietet. Nachdem wir eine kleine Nachlässigkeit behoben hatten (ich nenne natürlich keine Namen, aber Nikl… lotste uns erstmal bis fast zum Nordpol, obwohl unser Campingplatz volle Lotte im Süden lag ;)), konnten wir einchecken und einen gemütlichen, wenn auch kühlen, Grillabend anhängen.