User:Flyser/Gobby
This is only a draft version of this article and far from being complete yet.
Gobby ist ein Texteditor, der die Idee des kollaborativen Schreibens unterstützt. Somit ist es möglich, dass mehrere Personen in Echtzeit an demselben Dokument arbeiten.
Eine Entscheidung fällen
Zur Zeit gibt es zwei zueinander inkompatible Versionen, beide mit ihren Vor- und Nachteilen.
0.4
Diese Version ist mit ihrem ersten Release im Jahre 2006 schon etwas angegraut und verfügt über keine undo-Funktion. Als Server Software kommt sobby 0.4 zum Einsatz. Dies ist die letzte stabile Veröffentlichung Gobby. Wenn die zusätzlichen Funktionen von Version 0.5 nicht benötigt werden, dann taugt diese gut als robustes "Arbeitstier".
0.5
Diese Version ist momentan noch in Entwicklung und ist ein kompletter Rewrite mit anderem Protokoll und anderer Benutzeroberfläche als Gobby 0.4. Der herausragende Unterschied ist die – bei herkömmlichen Editoren längst vorausgesetzte – undo-Funktion, sowie die Verwendung von infinoted als Server. Zum momentanen Zeitpunkt gibt es jedoch nur experimentelle Releases (Versionsnummer ab 0.4.90), die der Autor jedoch sehr erfolgreich produktiv einsetzt.
Gobby 0.4
Client
Die letzte stabile Version findet sich im portage und kann mit
root #
emerge -av app-editors/gobby:0
installiert werden.
Server
Auch hier bietet portage eine stabile Version:
root #
emerge -av app-editors/sobby
Gobby 0.5
Client
Die neueste Entwicklerversion ist hardmasked im portage und kann mit
root #
emerge -av app-editors/gobby:0.5
installiert werden.
Server
Der Server heißt infinoted und wird über das server USE-Flag von net-libs/libinfinity installiert:
root #
emerge -av net-libs/libinfinity[server]
Infinoted speichert seine Konfigurationsdatei entsprechend dem freedesktop.org-Standard, also in "~/.config/" oder systemweit in "/etc/xdg/", die Syntax ist ini-ähnlich.
In diesem How-To werden wir den Server so konfigurieren, dass er über das "/etc/init.d/infinoted" gestartet werden kann und dieser dann alle Daten in "/var/lib/infinote/" ablegt.
Auch denkbar wäre infinoted über einen Useraccount auszuführen und die Daten in "/home/user/" abzulegen. Dazu bietet sich "~/.config/" als Konfigurationsverzeichnis an
Minimalistische Konfiguration
Als erstes werden wir das Verzeichnis erstellen, in dem infinoted später die Dateien und Ordner speichert, die man auf dem Server ablegt.
root #
mkdir -p /var/lib/infinote/data
und die Zugriffsberechtigungen anpassen:
root #
chown -R infinote:infinote /var/lib/infinote
Nun ist alles fertig für die erste minimalistische Konfiguration, die im folgenden Schrittweise erweitert und angepasst wird:
[infinoted]
root-directory = /var/lib/infinote/data
autosave-interval = 60
security-policy = no-tls
Es sollte nun möglich sein den Server mit
root #
/etc/init.d/infinoted start
zu starten, mit Gobby 0.5 zu verbinden und Verzeichnisse oder Dateien zu erstellen. Man sollte überprüfen, ob diese auch nach einem Neustart von infinoted erhalten bleiben.
Passwortauthentifizierung
Was beim Verbinden sofort auffällt ist, dass kein Passwort nötig ist um die Daten auf dem Server einzusehen oder zu verändern. Um das zu verhindern gibt es zwei Authentifizierungsmöglichkeiten:
- mit einem Serverpasswort (für alle Benutzer gleich)
- mit Benutzername/Passwort über PAM (Siehe dazu den Abschnitt über PAM Authentifizierung)
Für den Anfang legen wir ein Serverpasswort fest indem wir die folgende Zeile an unsere Konfigurationsdatei fügen:
password = meinSicheresPasswort
Verschlüsselte Verbindung
Nach einem Serverneustart verlangt Gobby nun zwar nach einem Passwort, aber die Verbindung erfolgt gänzlich unverschlüsselt. Um das zu ändern fügen wir die folgenden Zeilen an:
security-policy = require-tls
certificate-file = /etc/xdg/infinoted.cert
key-file = /etc/xdg/infinoted.key
Die Option security-policy hat 3 mögliche Werte: "no-tls", "allow-tls", "require-tls". Mit unserer Konfiguration erlauben wir keinerlei unverschlüsselte Verbindungen mehr.
Bevor wir allerdings die Konfiguration testen können, müssen wir das Zertifikat und den Schlüssel noch von infinoted erzeugen lassen:
root #
infinoted --create-key --create-certificate
Serverseitiger Zugriff auf hochgeladene Daten
Nachdem die Sicherheitsaspekte geklärt sind, möchten wir nun auch serverseitig auf die abgelegten Daten zugreifen. Bei einem Blick in "/var/lib/infinote/data" bemerken wir schnell, dass dort nur XML Repräsentationen der eigentlichen Dateien liegen. Zum Glück erlaubt infinoted es uns auch an die Rohdaten zu gelangen. Dafür erzeugen wir zunächst das Zielverzeichnis:
root #
mkdir /var/lib/infinote/export
root #
chown infinote:infinote /var/lib/infinote/export
und erweitern dann unsere Konfigurationsdatei um:
sync-directory = /var/lib/infinote/export
sync-interval = 60
In diesem Fall werden Dateien bei Änderung spätestens nach 60 Sekunden in "/var/lib/infinote/export" gespeichert.
Komplette Beispielkonfiguration
[infinoted]
root-directory = /var/lib/infinote/data
autosave-interval = 60
sync-directory = /var/lib/infinote/export
sync-interval = 60
password = meinSicheresPasswort
# no-tls, allow-tls oder require-tls:
security-policy = require-tls
certificate-file = /etc/xdg/infinoted.cert
key-file = /etc/xdg/infinoted.key
Erweiterte Konfiguration
PAM Authentifizierung
Script beim Speichern aufrufen
Diese Funktion findet sich erst in infinoted 0.6 oder neuer.