SparkleShare
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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:
Installation¶
SparkleShare ist in den offiziellen Paketquellen enthalten und kann über folgendes Paket installiert [1] werden:
sparkleshare (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install sparkleshare
Oder mit apturl 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:
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
Befehl zum Installieren der Pakete:
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 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:
Den eigenen Server verwenden - Empfohlen für die meisten Anwender. Voraussetzung hierfür ist allerdings ein eigener Server.
Github - Freier Hosting-Provider für Open-Source-Projekte. Für Software-Entwickler gedacht. Bei einem bezahlten Nutzerkonto ist auch privater Speicherplatz vorhanden.
The Gnome Project - Plattform für Designer und Entwickler von GNOME
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:
Den Client neu starten:
sparkleshare stop && sparkleshare start
Eine Datei mit touch erstellen und direkt wieder löschen
Links¶
Projektseite 🇬🇧
Client Side Encryption 🇬🇧 - SparkleShare-Wiki
SparkleShare 1.1.0 released 🇬🇧 - Blogbeitrag, 06/2013
Git-Server für mehrere Benutzer einrichten 🇩🇪 - Blogbeitrag, 05/2013
Sparkleshare 1.0 ist fertig 🇩🇪 - heise News, 12/2012