[[Vorlage(Archiviert, )]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] optional [:Archivmanager: Eine Archivdatei entpacken] optional [:Terminal: Ein Terminal öffnen] optional [:Autostart: Automatischer Start von Programmen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(./sparkleshare_logo.png, 48, align=left)]] Mit [https://sparkleshare.org/ SparkleShare] {en} kann ein eigener Online-Datenspeicher oder auch [:Cloud-Dienste: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 [https://bitbucket.org/ BitBucket] {en} oder [github::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. {{{#!vorlage Hinweis Der SparkleShare-Client basiert auf [wikipedia:Mono-Projekt: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: {{{#!vorlage Paketinstallation sparkleshare, universe }}} == Manuell == Hierzu wird der aktuelle Quellcode von SparkleShare heruntergeladen und anschließend kompiliert [2]. Vorbereitend müssen folgende Pakete installiert werden: {{{#!vorlage Paketinstallation 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]: {{{#!vorlage Befehl git clone git://github.com/hbons/SparkleShare.git }}} In das neue Verzeichnis wechseln: {{{#!vorlage Befehl cd SparkleShare }}} Kompilieren vorbereiten: {{{#!vorlage Befehl ./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: {{{#!vorlage Befehl 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'''. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{ False }}} == 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. {{{#!vorlage 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. {{{#!vorlage 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: {{{#!code Befehl 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. {{{#!vorlage 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: {{{#!vorlage Befehl sparkleshare stop && sparkleshare start }}} * Eine Datei mit [:touch:] erstellen und direkt wieder löschen = Links = * [https://sparkleshare.org/ Projektseite] {en} * [github:hbons/SparkleShare/wiki/Client-Side-Encryption:Client Side Encryption] {en} - SparkleShare-Wiki * [http://www.webupd8.org/2013/06/file-sync-app-sparkleshare-110-released.html SparkleShare 1.1.0 released] {en} - Blogbeitrag, 06/2013 * [https://seeseekey.net/blog/99434 Git-Server für mehrere Benutzer einrichten] {de} - Blogbeitrag, 05/2013 * [heise:-1765720:Sparkleshare 1.0 ist fertig] {de} - heise News, 12/2012 * [:Internetanwendungen#Onlinespeicher:] {Übersicht} Übersicht #tag: Netzwerk, GNOME, Server, Kommunikation, Mono