SparkleShare

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte hilf mit, indem du diesen Artikel testest. Wiki/FAQ - häufig gestellte Fragen (Abschnitt „Wikiartikel-testen“).

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Pakete aus dem Quellcode erstellen, optional

  3. Eine Archivdatei entpacken, optional

  4. Ein Terminal öffnen, optional

  5. Automatischer Start von Programmen

Inhaltsverzeichnis
  1. Installation
  2. Konfiguration
  3. Benutzung
  4. Problembehebung
  5. Links

./sparkleshare_logo.png Mit SparkleShare 🇬🇧 kann ein eigener Online-Datenspeicher oder auch Cloud-Dienst und damit eine Alternative zu kommerziellen Angeboten wie z.B. Dropbox realisiert werden. Es beinhaltet ein einfach gehaltenes grafisches Werkzeug zur Synchronisation von Dateien und zur kollektiven Zusammenarbeit. Dateien werden zwischen allen angeschlossenen Systemen synchronisiert. Dies können sowohl eigene als auch fremde Rechner sein.

SparkleShare setzt einen eigenen Server mit der Versionsverwaltung Git voraus. Alternativ können Online-Plattformen wie BitBucket 🇬🇧 oder Github genutzt werden. Im Gegensatz zu anderen Anbietern ist bei SparkleShare die Anzahl der Teilnehmer, die Anzahl der Freigaben/Projekte und die Größe des Speicherplatzes theoretisch unbegrenzt – sofern ein eigener Server verwendet wird. Durch die Verwendung von Git arbeitet es jedoch mit Sammlungen von Binärdateien (z.B. Musiktitel oder Videos) nicht sehr effizient.

Momentan gibt es Client-Programme für Linux, Mac OS X und Windows.

Hinweis:

Der SparkleShare-Client basiert auf Mono, ist relativ "tief" in GNOME integriert und hat entsprechend viele Abhängigkeiten zu GTK- und GNOME-Paketen.

Installation

SparkleShare ist in den offiziellen Paketquellen enthalten und kann über folgendes Paket installiert [1] werden:

Paketliste zum Kopieren:

sudo apt-get install sparkleshare 

Oder mit apturl die Pakete installieren. Link: apt://sparkleshare

Manuell

Hierzu wird der aktuelle Quellcode von SparkleShare heruntergeladen und anschließend kompiliert [2]. Vorbereitend müssen folgende Pakete installiert werden:

Paketliste zum Kopieren:

sudo apt-get install gtk-sharp2 mono-runtime mono-devel monodevelop libndesk-dbus1.0-cil-dev nant libnotify-cil-dev libgtk2.0-cil-dev libwebkit-cil-dev intltool libtool python-nautilus libndesk-dbus-glib1.0-cil-dev libappindicator0.1-cil-dev  

Oder mit apturl die Pakete installieren. Link: apt://gtk-sharp2,mono-runtime,mono-devel,monodevelop,libndesk-dbus1.0-cil-dev,nant,libnotify-cil-dev,libgtk2.0-cil-dev,libwebkit-cil-dev,intltool,libtool,python-nautilus,libndesk-dbus-glib1.0-cil-dev,libappindicator0.1-cil-dev

Der Quellcode des Clients steht auf der Projektseite als Archivdatei zur Verfügung, die vor dem Kompilieren noch entpackt [3] muss. Alternativ kann der Quellcode via Git bezogen werden [4]:

git clone git://github.com/hbons/SparkleShare.git 

In das neue Verzeichnis wechseln:

cd SparkleShare 

Kompilieren vorbereiten:

./autogen.sh --prefix=/usr 

Anschließend SparkleShare kompilieren.

Konfiguration

Der Client kann nun bei Ubuntu-Varianten mit einem Anwendungsmenü über "Internet -> SparkleShare" gestartet werden. Es empfiehlt sich, SparkleShare automatisch mit der Anmeldung am Desktop starten zu lassen [5].

Beim ersten Aufruf von SparkleShare wird der Anwender nach dem Namen und der E-Mail-Adresse gefragt. Darauf folgt die Frage nach dem geeigneten Remote-Speicherplatz - also der Server/Ort, mit dem alle Teilnehmer ihre Daten synchronisieren. Hier gibt es mehrere Möglichkeiten:

Eigenen Server einsetzen

Die Entwickler von SparkleShare stellen ein Konfigurationsskript namens dazzle bereit, um sehr komfortabel einen eigenen Server aufzusetzen:

sudo curl https://raw.github.com/hbons/Dazzle/master/dazzle.sh --output /usr/bin/dazzle
sudo chmod +x /usr/bin/dazzle

# Dazzle initialisieren
sudo dazzle setup 

Nun muss noch jeder einzelne Client für den Zugriff auf den Server freigeschaltet werden. Dies geschieht genau wie bei SSH mittels RSA-Keys. Der Client generiert einen solchen automatisch. Mittels Linksklick auf das Tray-Icon von "SparkleShare -> SparkleShare -> ClientID -> Copy to Clipboard" lässt sich dieser in die Zwischenablage kopieren. Dieser muss nun zum Server übertragen werden, z.B. per E-Mail oder als Textdatei per ssh-copy.

sudo dazzle link
# dazzle fragt nun nach dem Key 

Dieser Schritt muss für jeden Client wiederholt werden. Als letztes muss noch ein Projekt angelegt werden:

sudo dazzle create PROJEKTNAME 

Der Server ist nun konfiguriert und an jedem Client kann die Freigabe hinzugefügt werden.

Gravatar-Anfragen abschalten

Standardmäßig versucht SparkleShare den zur eigenen E-Mail-Adresse gehörenden Gravatar zu laden. Dieses Verhalten kann durch durch Hinzufügen folgender Zeile in der Datei ~/.config/sparkleshare/config.xml abgeschaltet werden:

<fetch_avatars>False</fetch_avatars>

Freigabe hinzufügen

An jedem Client muss nun das oben erstellte Projekt hinzugefügt werden. Dazu klickt man auf das Tray-Icon von "SparkleShare -> SparkleShare -> Add Hosted Project...". Nun wählt man "On my own server" und trägt:

ssh://storage@[SERVER-IP_ODER_NAME]
/home/storage/PROJEKTNAME

ein.

Hinweis:

Der Benutzername ist immer "storage". Dieser Benutzer wurde vom Konfigurationsskript angelegt. Dateien werden auf dem Server unter /home/storage/ abgelegt.

Steigt ein Teilnehmer zu einem späteren Zeitpunkt in das Projekt ein, empfiehlt es sich, die Option "Fetch prior history" zu aktivieren. Damit erhält auch dieser Benutzer nachträglich Zugriff auf ältere Versionen der Dateien.

Verschlüsselung einrichten

Optional können die Daten im Repository verschlüsselt abgelegt werden. Das ist vor allem dann interessant, wenn öffentliche Repository-Anbieter genutzt werden sollen. Dabei werden die Daten auf dem Client mittels OpenSSL/AES-256-CBC verschlüsselt, bevor sie auf den Server hochgeladen werden. Clientseitig liegen die Daten immer unverschlüsselt vor.

Hinweis:

Die Datei- und Verzeichnisnamen auf dem Server enthalten weiterhin Klartext, nur die Inhalte selbst sind verschlüsselt!

Beim Einrichten eines Repositorys muss lediglich der Zusatz -crypto" an den Repository-Namen angehängt werden. Beim Einrichten des Clients fragt SparkleShare dann nach einen Passwort, das Grundlage für die Verschlüsselung wird. Das gleiche Passwort muss dann später angegeben werden, wenn weitere Clients auf dieses Repository zugreifen möchten. Das Passwort selbst wird nur lokal unter ~/.git/password abgelegt und sollte ggf. zusätzlich gesichert werden, um die Daten vor Verlust zu schützen.

Beim Einrichten eines eigenen Servers mittels dazzle wird ein verschlüsseltes Repository so angelegt:

1
sudo dazzle create-encrypted PROJECT_NAME

Die Verschlüsselung kann nur für neue Repositorys eingerichtet werden. Wer selbst Hand anlegen möchte, kann eine Verschlüsselung auch mittels GnuPG statt OpenSSL einrichten.

Benutzung

Im Homeverzeichnis des Teilnehmers taucht nun ein neues Verzeichnis ~/SparkleShare auf. Dieses Verzeichnis dient als Sammelpunkt für alle Verzeichnisse, die synchronisiert werden. Da der synchronisierte Ordner auf dem Server in diesem Beispiel PROJEKTNAME lautet, ist der vollständige Pfad ~/SparkleShare/PROJEKTNAME/. Dateien, die unter diesem Ordner verändert, hinzugefügt oder gelöscht werden, werden automatisch synchronisiert.

Wiederherstellen einer älteren Version einer Datei

Über das Tray-Icon hat jeder Benutzer auch Zugriff auf frühere Versionen jeder Datei aus dem Projekt. Um eine ältere Version einer Datei wiederherzustellen, klickt man auf "SparkleShare -> SparkleShare -> Recent changes". Hier sind alle Änderungen aller Teilnehmer chronologisch geordnet. Durch Auswahl der Uhrzeit vor dem Dateinamen öffnet sich ein Dialog mit den verschiedenen Versionen der Datei und sie kann mittels "Restore" unter anderem Dateinamen an einem beliebigen Ort (innerhalb oder außerhalb des Projekts) gespeichert werden.

Hinweis:

Durch "Recent changes" neben dem Dateinamen erhält man nur den aktuellen Stand der Datei. Es muss die Uhrzeit angeklickt werden, um Zugriff auf verschiedene Versionen zu erhalten.

Versionskonflikte

Wird eine Datei gleichzeitig lokal und von einem anderen Teilnehmer geändert, oder legen zwei Teilnehmer gleichzeitig eine Datei mit dem selben Dateinamen im selben Ordner an, kommt es zu einem Versionskonflikt. Der Teilnehmer, der die Datei zuerst speichert, legt automatisch die Version fest. Beim zweiten Teilnehmer, der die Datei zu einem späteren Zeitpunkt unter dem selbem Namen speichert, wird die Datei automatisch während der nächsten Synchronisation umbenannt. Auch diese Version wird aber an alle Teilnehmer synchronisiert.

Problembehebung

Anders als bei der Dropbox können Änderungen nur von den Clients angefragt werden. Der jeweilige Git-Server hat keine Möglichkeit, den Client zu kontaktieren und ihn über Änderungen zu informieren. Dies hat eine Menge Vorteile, insbesondere müssen keine Ports geöffnet werden oder ähnliches. Allerdings bedeutet dies auch, dass jeder Client neue Änderungen erst bekommt, wenn er von sich aus beim Git-Server danach fragt. Dies geschieht automatisch, sobald eine lokale Änderung stattgefunden hat oder alle 3-5 Minuten. Wenn man auf eine Datei wartet, die ein anderer Teilnehmer gerade hinterlegt hat, kann einem dies sehr lange vorkommen. Derzeit ist es noch nicht möglich, eine manuelle Synchronisation zu erzwingen, dies wird aber in späteren Versionen von SparkleShare möglich sein.

Es gibt zwei mögliche Abhilfen: