SparkleShare schickt sich an, sich zu einem würdigen Dropbox-Ersatz fürs eigene LAN zu mausern. Ein eigener Server, Git und SSH ermöglichen Privatsphäre, volle Kontrolle über die Daten und im Vergleich mit typischen Cloud-Anbietern ungewohnt viel Speicherplatz.
Speicherlösungen in der Cloud liegen im Trend – vor allem, seit Angebote wie Ubuntu One oder Dropbox es Endanwendern möglich machen, Dateien ohne großen Aufwand online abzulegen und die Inhalte über mehrere Rechner und Betriebssysteme hinweg zu synchronisieren. Doch es gibt immer mehr Anwender, die den oft kostenlosen Cloud-Speichern aufgrund einschränkender Nutzungsbedingungen und mangelnder Kontrolle über die eigenen Daten kritisch gegenüber stehen oder durch Datenpannen verunsichert werden, wie jüngst bei Dropbox [1].
Cloud-Speicher ist gut, Cloud-Speicher in der eigene Wolken – sprich: auf eigenen Servern – ist besser. So müssen Entwickler gedacht haben, die von überall auf ihre Daten zugreifen wollen. Einer von ihnen ist der Gnome-Entwickler Hylke Bons. Er und seine Mitstreiter stellen mit der Software SparkleShare [2] eine freie Alternative zu kommerziellen Speicherdiensten bereit. SparkleShare ist das Ergebnis des SparklePony-Projekts [3]. Die Idee entstand auf dem GNOME London UX Hackfest 2010 aus dem Wunsch von Designern und Entwicklern nach einem freien, leicht benutzbaren Werkzeug zur Zusammenarbeit, das das bisher von ihnen genutzte Dropbox ersetzt.
Das unter der GPLv3 lizenzierte SparkleShare basiert auf der Versionsverwaltung Git [4], GTK+ und Mono [5]. Neben Git lässt sich auch Mercurial als Versionsverwaltung nutzten, doch die Entwickler betrachten es als nicht so wichtig. Wie Dropbox legt SparkleShare einen Dateiordner an, dessen Daten es automatisch mit dem auf einem Server befindlichen Speicherplatz (einem sogenannten Repository) abgleicht. In dem Ordner lassen sich mehrere Unterordner platzieren, die auf verschiedene Server beziehungsweise Repositories verweisen.
Die Datenübertragung läuft verschlüsselt ab. SparkleShare bietet ein IRC-basiertes Meldesystem, mit dessen Hilfe sich alle mit den entsprechenden Rechten ausgestatteten Personen informieren können, wer wann welche Änderungen vorgenommen hat. Erweist sich eine Änderung als weniger gut als angenommen, lässt sich das Repository auf einen früheren Stand zurückrollen.
Derzeit gibt es SparkleShare für Linux und Mac OS X, Ports für Windows und Clients für Android und iOS befinden sich noch in der Planung. Für diesen Artikel testeten wir SparkleShare in der Mitte Juli aktuellsten Version 0.2.4. Kurz vor Drucklegung erschien noch die Version 0.2.5, die wir für den Artikel aus Zeitgründen nicht mehr nachtesten konnten. Allerdings handelt es sich laut der Release Notes aus dem Tarball dabei hauptsächlich um ein Bugfix-Release ohne große funktionale Änderungen.
SparkleShare installieren
Einen SparkleShare-Server setzen Sie im Handumdrehen auf: Dazu richten Sie lediglich git-core und openssh-server aus dem Paketspeicher der verwendeten Distribution ein und legen anschließend mit
$ git init --bare SparkleShareRepo.git
ein Git-Repository an. Das war es denn auch schon – weitere Tätigkeiten sind serverseitig nicht erforderlich.
Momentan gibt es für die meisten Distributionen noch keine Binärpakete des SparkleShare-Clients, sodass sich dessen Installation etwas aufwändiger gestaltet. Den Quelltext laden Sie vom Github-Repository des Projekts [6] oder der Heft-DVD dieser Ausgabe herunter und entpacken ihn in ein beliebiges Verzeichnis. Dann übersetzen Sie den Client dort mit dem üblichen Dreischritt:
$ ./configure && make && sudo make install
Eventuell müssen zuvor noch einige Pakete nachinstallieren. Auf einem frischen Linux Mint waren es git-core, intltool, die Mono-Entwickerpakete mono-devel, gtk-sharp2, libwebkit-cil-dev und libnotify-cil-dev. Das README im Tarball nennt alle Abhängigkeiten und führt für Debian/Ubuntu und Fedora auch alle Befehle für deren Installation auf. Sind alle Abhängigkeiten erfüllt, verläuft die Installation des Clients reibungslos, und er landet standardmäßig in /usr/local/.
Git-Crashkurs
| Dank Git synchronisieren Sie auch Rechner, die ohne grafische Oberfläche auskommen müssen, wie etwa Server. Git nutzen Sie auf der Kommandozeile, für den Anfang reichen schon wenige Befehle. | |
|---|---|
| Befehl | Beschreibung |
git config --global user.name "VornameName" |
Nutzernamen festlegen |
git config --global user.email "myself@domain.tld" |
E-Mailadresse des Nutzers |
git clone ssh://user@server:/Pfad/zum/Repository.git |
klont ein entferntes Repository via SSH |
git add filename |
fügt dem Repository eine Datei hinzu |
git commit -a -m "Infos zu Änderungen" |
übernimmt alle Änderungen ins Repository |
git push |
Änderungen auf das Remote-Repository schreiben |
git-pull |
aktualisiert Verzeichnis |
git log |
gibt das Git-Logfile aus |
git status |
Status des Repositorys |
git mergetool |
Versionskonflikte manuell auflösen |
git checkout Commit-Name |
stellt frühere Versionen des Repositorys wieder her |
Inbetriebnahme
SparkleShare nutzt SSH, um die Datenübertragung zwischen Server und Client zu verschlüsseln. Dementsprechend sollten Sie auf den Clients das Paket openssh-client installieren. Um zu vermeiden, dass der Anwender vor dem Datenabgleich ständig ein Passwort eingegeben muss, bietet sich ein Public-Key-Verfahren an, das anstelle der Passwortabfrage einen hinterlegten Schlüssel zur Authentifizierung nutzt. Das aus öffentlichem und privatem Schlüssel bestehende Paar erstellen Sie mit ssh-keygen, wobei Sie die Standardeinstellungen übernehmen können und die Passphrase leer lassen sollten. Anschließend übertragen Sie den öffentlichen Schlüssel mit ssh-copy-id User@Server auf den Server. Auf dem SparkleShare-Server müssen Sie die Schlüssel aller Rechner ablegen, auf denen die Synchronisationsanwendung genutzt wird.
Nach dem Abhaken dieser Vorbereitungen starten Sie SparkleShare über einen Eintrag im Startmenü oder den Befehl sparkleshare start auf der Kommandozeile. Beim ersten Lauf verlangt der Konfigurationsdialog noch einige Informationen zu Anwender und Server (Abbildung 1). Verwenden Sie einen eigenen Server, tragen Sie diesen mit Nutzernamen und Adresse in das Eingabefeld Auf meinem eigenen Server ein. Als Ordnername geben Sie den absoluten Pfad zum Git-Repository an (Abbildung 2). Danach finden Sie in der Taskleiste ein neues Icon, und die Anwendung beginnt, die im Ordner ~/SparkleShare enthaltenen Verzeichnisse zu synchronisieren.

Abbildung 1: SparkleShare verlangt Benutzername und E-Mail-Adresse, um später nachvollziehen zu können, wer welche Änderungen gemacht hat.

Abbildung 2: Sind Server und der absolute Pfad zum Git-Repository eingetragen, steht einer Synchronisation nichts mehr im Wege.
Anwender, die an mehreren Projekten arbeiten oder Daten mit unterschiedlichen Personen teilen wollen, können weitere Server aufsetzen beziehungsweise Git-Repositories anlegen. Dazu genügen ein Klick auf das SparkleShare-Icon und Remote-Ordner hinzufügen sowie die Angaben zu weiteren Servern beziehungsweise Ordnern. In ~/SparkleShare entstehen die entsprechenden Unterordner automatisch (Abbildung 3).

~/SparkleShare an.” width=”300″ height=”165″ />
Abbildung 3: SparkleShare kann Dateien auf mehreren Servern synchronisieren und legt für jedes Repository automatisch einen Unterordner im Verzeichnis~/SparkleShare an.Öffentliche Projekte
Für private Dateien bietet sich ein eigener Server an. Wollen Sie Projekte über mehrere Rechner synchronisieren, können Sie alternativ auch die Angebote von Gitorious [7] oder Github [8] mit SparkleShare nutzen. Das Vorgehen ist für beide Plattformen ähnlich, sodass wir es im Folgenden nur für Github beschreiben.
Github bietet für öffentlich zugängliche Projekte kostenlosen Speicherplatz an, für private Repositories fallen dagegen Gebühren an. Deren Höhe hängt davon ab, wie viele private Repos und Mitarbeiter Sie benötigen. Maximal sind 20 Repositories möglich, auf die bis zu zehn Mitarbeiter zugreifen dürfen.
Sofern Sie noch keinen Account bei der beiden Plattform haben, gilt es zunächst einen solchen anzulegen. Anschließend müssen Sie in den persönlichen Einstellungen einen öffentlichen SSH-Key hinterlegen und ein Repository erstellen. SparkleShare erstellt während der Konfiguration einen eigenen Schlüssel und speichert ihn unter
~/.config/sparkleshare/sparkleshare.email-adresse.key[.pub]
ab. Um SparkleShare mit dem Github-Repository bekannt zu machen, fügen Sie einen neuer Remote-Ordner hinzu, in dem Sie anstelle des eigenen Servers Github auswählen. Als Ordnername tragen Sie das Github-Repository mit vorangestelltem Nutzernamen ein (Abbildung 4).

Abbildung 4: Ist kein eigener Server zur Hand, lassen sich auch Anbieter wie Github oder Gitorious bequem mit SparkleShare nutzen.
Die gesamte SparkleShare-Konfiguration ist in der Datei ~/.config/sparkleshare/config.xml hinterlegt. Sollten sich Angaben zu irgendeinem Server ändern, können Sie die XML-Datei mit jedem Texteditor anpassen.
Nutzung
Läuft SparkleShare, sollte es alle unter ~/SparkleShare abgelegten Dateien automatisch synchronisieren. Je nach Upload-Geschwindigkeit kann der Vorgang etwas dauern, vor allem, wenn es sich um umfangreiche Datenbestände handelt. Ob die Synchronisation noch läuft, erkennen Sie an dem sich drehenden Symbol im SparkleShare-Icon oder erfragen es alternativ mit einem Klick auf das Symbol. Die gewünschten Angaben finden Sie in der ersten Zeile des Menüs (Abbildung 5).
Mit Hilfe dieses Menüs erreichen Sie auch schnell die einzelnen SparkleShare-Repositories. Ein Klick auf den entsprechenden Eintrag öffnet entweder das SparkleShare-Verzeichnis oder das ausgewählte Unterverzeichnis im Dateimanager Nautilus. Haben Sie SparkleShare mit Nautilus-Plugin kompiliert, ist das auch der Ort, an dem Sie missglückte Änderungen rückgängig machen. Einen entsprechenden Punkt bietet SparkleShare bei einem Rechtsklick auf die betreffende Datei an.
Mittels des Menüpunkts Zeige letzte Ereignisse … informieren Sie sich über die letzten Aktivitäten. Im sich öffnenden Fenster führt SparkleShare alle Dateien auf, die in der letzten Zeit neu hinzugekommen sind beziehungsweise geändert oder entfernt wurden. Über ein Dropdown-Menü filtern Sie die Angaben für einzelne Repositories. Vorhandene Dateien erscheinen in Blau, gelöschte Dateien in Schwarz (Abbildung 6). Klicken Sie eine Datei an, öffnet sich automatisch die Anwendung, die mit dem Dateityp verknüpft ist.
Der Punkt Benachrichtigungen (de)aktivieren startet oder stoppt den Notification-Service, mit dessen Hilfe Sie sich Anwender über Änderungen einzelner Dateien auf dem Laufenden halten lassen können. Die Informationen über Änderungen wickelt SparkleShare momentan noch via IRC ab, sodass Sie sich genau überlegen sollten, ob Sie das Feature brauchen. In unserem Test weigerte sich der vorgegebene IRC-Server (noch), die Verbindung zu akzeptieren.
Werden Daten über mehrere Rechner synchron gehalten, besteht die Gefahr von Versionskonflikten. Solche kommen beispielsweise vor, wenn ein Anwender vergisst, ein Repository zu synchronisieren, bevor er Änderungen vornimmt. Der klassische Fall: Der User hat SparkleShare nicht gestartet, nimmt dann aber Änderungen an einer Datei vor, die auf dem Server in einer neueren Version vorliegt. Sparkleshare behandelt solche Konflikte ähnlich wie das kommerzielle Vorbild Dropbox, indem es die auf dem Server befindlichen Dateien um den Namen des Committers sowie Datum und Uhrzeit des Commits erweitert (Abbildung 7) und im entsprechenden Verzeichnis ablegt. Den Konflikt aufzulösen, bleibt letztendlich Sache des Anwenders.

Abbildung 7: Die Namen konfliktbehafteter Dateien ergänzt SparkleShare um zusätzliche Angaben, um eine Konfliktlösung müssen Sie sich selbst kümmern.
Im laufenden Betrieb fällt ab und zu auf, dass sich SparkleShare in einem frühen Entwicklungsstadium befindet und noch einige Ecken und Kanten aufweist. Die Anwendung verabschiedet sich beispielsweise, wenn sie nur Ereignisse zu einem bestimmten Ordner auflisten soll. Geben Sie bei der Konfiguration eines neuen Remote-Ordners nicht existente Server oder Git-Repositories an, erscheint lediglich eine sehr allgemein gehaltene Fehlermeldung. Im Test synchronisierte SparkleShare zudem einige Repositories stillschweigend nicht. Der Fehler ließ sich beheben, indem wie die betroffenen Verzeichnisse löschten und die Remote-Ordner erneut einrichteten.
Ausblick und Fazit
SparkleShare schickt sich an, sich zu einem würdigen Dropbox-Ersatz zu mausern. In der Zukunft planen die Entwickler nicht nur Clients für viele Betriebssysteme: Sie haben unter anderem eine Web-API im Blick und eine Web-Oberfläche, über die Sie Dritte zur gemeinsamen Nutzung vorhandener Repositories einladen können. Das Notification-System soll über kurz oder lang auf anderen Protokolle als IRC basieren, etwa XMPP [9] oder 0MQ [10]. Anwender sollen zukünftig bereits mit einem Blick in den Dateimanager sehen können, welche Dateien bereits synchronisiert wurden und welche nicht.
Aktuell gestaltet sich die Installation noch als Fest für Konsolenfreunde. Während der Installation stieß es dem Autor etwas auf, dass die Entwickler SparkleShare in C# implementiert haben, sodass es Mono voraussetzt. Läuft SparkleShare erst einmal, ist es ein schönes Stück Software für Anwender, die Daten über mehrere Rechner automatisch synchron halten wollen oder mit anderen an gemeinsamen Projekten arbeiten, deren Verwaltung via Git erfolgt. Ein vergessener Commit sollte so der Vergangenheit angehören.
Ein eigener Server, Git und SSH ermöglichen Privatsphäre, volle Kontrolle über die Daten und im Vergleich mit anderen Anbietern ungewohnt viel Speicherplatz. Andererseits macht ein eigener Server deutlich mehr Arbeit setzt mehr Erfahrungen voraus als ein Cloud-Dienst wie Dropbox oder Ubuntu One. Daher eignet sich SparkleShare nicht für alle Anwender. Wer einen eigenen Server betreibt und Dropbox und Konsorten nicht traut, findet in SparkleShare aber eine reizvolle Alternative.
Infos
[1] Dropbox-Authentifizierungslücke: http://www.linux-magazin.de/NEWS/Luecke-in-der-Dropbox-Authentifizierung
[2] SparkleShare: http://sparkleshare.org
[3] SparklePony: http://mairin.wordpress.com/2010/03/01/the-one-where-the-designers-ask-for-a-pony/
[4] Git: http://git-scm.com
[5] Mono: http://www.mono-project.com/Main_Page
[6] Sparkleshare-Github-Repo: https://github.com/hbons/SparkleShare/downloads
[7] Github: http://github.com
[8] Gitoriuos: http://gitorious.org
[9] XMPP: http://xmpp.org
[10] 0MQ: http://www.zeromq.org







