- chalblog - http://blog.is-a-geek.org -

Eigener Firefox Sync-Server auf Ubuntu

Eigener Mozilla Firefox Sync-Server auf Ubuntu [1]Ich glaube jeder kennt das Problem: Viele verschiedene Endgeräte und überall andere Lesezeichen, gespeicherte Passwörter und Formulardaten im Firefox Browser. Ebenfalls hat man Bedenken seine Datenlandschaft an den Mozilla Sync-Server zu übertragen, denn es sind ja auch jegliche Passwörter für diverse Dienste gespeichert. Na dann richten wir uns doch unseren eigenen Sync-Server ein, wodurch wir unsere Daten selbst verwalten können.

Der mit Hilfe dieser Anleitung erstellte Sync-Server bietet eine problemlose Syncronisierung zwischen den Desktop Varianten (auch FF 11), sowie der Android Version von Mozilla Firefox. Ab der Version 4 muss kein Plugin installiert werden.

Synchronisiert werden:

Als SyncServer verwenden wir FSyncMS, da der alte Weave Minimal mit den neuen Versionen von Firefox leider nicht mehr syncen will. Dieser basiert auf dem alten nicht mehr weiterentwickelten Weave Server, enthält jedoch einige Bugfixes und die Möglichkeit der automatischen Accounterstellung.

An dieser Stelle ein großes Dankeschön an den netten Menschen, der sich diese Arbeit angetan hat. Hier kommt ihr zu seinem Blog: http://www.ohnekontur.de/ [2]

Webserver vorbereiten

Die PHP-Scripts, welche den Server darstellen müssen wir über einen Webserver zugänglich machen. Dazu verwenden wir Apache und installieren diesen mit folgender Zeile:

sudo apt-get install apache2

Zusätzlich benötigen wir PHP5 und SQLite:

sudo apt-get install libapache2-mod-php5 php5-sqlite

Server herunterladen und entpacken

Da wir die aktuellste Version verwenden wollen, laden wir FSyncMS direkt beim Entwickler herunter …

wget https://www.dataharbour.de/FSyncMS.tar.gz

… und entpacken das Archiv:

tar xvzf FSyncMS.tar.gz

Den Ordner verschieben wir in das Root-Verzeichnis des Webservers und benennen diesen auch gleich um (bei anderem DocumentRoot anpassen):

sudo mv FSyncMS /var/www/fsyncms

Danach ändert man den Eigentümer der Dateien auf den Apache-User (solltet ihr einen anderen User verwenden, bitte anpassen):

sudo chown -R www-data:www-data /var/www/fsyncms

Apache2 SSL einrichten

Eigentlich werden die Daten schon vor der Übertragung durch den Fuchs selbst verschlüsselt (dazu braucht man ja den Wiederherstellungs-Schlüssel), aber ein bisschen mehr Sicherheit kann nie schaden. Funktioniert SSL bei euch schon oder wollt ihr es einfach nicht nutzen, könnt ihr diesen Abschnitt überspringen.

Das benötigte Modul aktivieren:

sudo a2enmod ssl

Danach erstellen wir ein Verzeichnis für das SSL-Zertifikat:

sudo mkdir /etc/apache2/ssl

SSL-Zertifikat erstellen:

sudo openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem

In der “ports.conf” …

sudo nano /etc/apache2/ports.conf

… muss man Apache dazu bringen, auch am Port 443 zu lauschen. Dazu wird der nachfolgende Part einkommentiert oder eingefügt, wenn er dies nicht schon ist, damit das ganze dann so aussieht:

# Alter the <IfModule mod_ssl.c> section:
<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    NameVirtualHost *:443
    Listen 443
</IfModule>

(nano: speichern mit “Strg+o“, schließen nano mit “Strg+x”)

Jetzt aktiviert man die “default-ssl” Konfiguration:

sudo a2ensite default-ssl

Die Konfigurationsdatei wird anschließend zur Verwendung unseres soeben erstellten Zertifikates angepasst.

sudo nano /etc/apache2/sites-available/default-ssl

Dort kommentieren wir folgende zwei Zeilen aus (“#” davor setzen)…

# SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
# SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

… und fügen diese stattdessen ein:

SSLCertificateFile /etc/apache2/ssl/apache.pem

Zum Abschluss wird Apache neu gestartet:

sudo service apache2 restart

Um die SSL-Einstellungen zu testen, geben wir die Serverip oder Domain mit einem vorangestellten “https://” in die Adresszeile des Browsers ein. Erscheint ein Dialog um das Zertifikat zu akzeptieren funktioniert unser SSL. Dieses Zertifikat sollte vor dem Fortfahren akzeptiert werden, da es sonst Probleme beim Sync geben kann.

https://SERVERIP

SSL Firefox [3]

SSL Firefox

SSL Internetexplorer [4]

SSL Internetexplorer

 

Alias in Apache einrichten

Grundsätzlich ist dies nur eine kosmetische und praktische Korrektur des Pfades unseres Syncservers. Würde man keinen Alias setzen, sieht die korrekte Adresse folgendermaßen aus (Der Slash am Ende ist kein Tippfehler!):

https://DOMAIN_ODER_IP/fsyncms/index.php/

Durch den Alias können wir diese verwenden:

https://DOMAIN_ODER_IP/fsyncms/

Um den Alias zu setzen öffnet man bei nicht aktiviertem SSL die “000-default” (oder einen Anderen Virtualhost):

 sudo nano /etc/apache2/sites-enabled/000-default

Habt ihr SSL aktiviert und wollt dieses auch verwenden, muss der Alias in der “default-ssl” eingetragen werden (oder im SSL Abschnitt eines anderen Virtualhosts):

sudo nano /etc/apache2/sites-enabled/default-ssl

Vor dem Tag, welches den Virtualhost-Block schließt, fügt ihr folgende Zeile ein:

.
.
Alias /fsyncms /var/www/fsyncms/index.php
</VirtualHost>

Danach nur noch Apache neu starten und die Umleitung sollte funktionieren.

sudo service apache2 restart

settings.php anpassen

In dem Settings-File gibt es nur 2 Einstellungen, welche wir anpassen müssen.

Als erstes erlauben wir die automatische Userregistrierung, indem wir …

define("ENABLE_REGISTER",false);

… den Wert auf “true” setzen:

define("ENABLE_REGISTER",true);

Den Pfad zu FSyncMS in der Zeile …

define("FSYNCMS_ROOT","https://DOMAIN_ODER_IP/sync/");

… ändern wir auf den vorhin eingerichteten Alias. In diesem Beispiel verwende ich SSL. Achtung: Den Slash am Ende der URL nicht vergessen!

define("FSYNCMS_ROOT","https://DOMAIN_ODER_IP/fsyncms/");

Erreichbarkeit von außen

Um den Server von außen erreichen zu können, müssen wir natürlich Ports im Router oder in der Firewall freischalten

Für SSL öffnet man das Port 443 und ohne SSL das standard Webserverport 80.

Habt ihr dies vor, würde ich euch empfehlen die automatische Userregistrierung abzuschalten (in der Datei “settings.php”).

User löschen

Der veränderte Syncserver bietet zwar die Möglichkeit User automatisch zu registrieren, aber anscheinend keine diese wieder zu löschen. Man kann jedoch einfach die zuständigen Scripts vom originalen Weave Minimal dazu verwenden, nachdem man diese in den selben Ordner kopiert hat.

Wir wechseln in das Verzeichnis unseres Servers:

cd /var/www/fsyncms

Ihr könnt das File entweder mit wget in der Konsole oder hier [5] herunterladen. In diesem Archiv wurde die “weave_storage.php” schon umbenannt, da wir ansonsten die bereits vorhandene überschreiben würden. Weiters habe ich die “create_user” angepasst, damit auch diese verwendet wird.

sudo wget http://blog.is-a-geek.org/downloads/weave_minimal_partly.tar.gz

Entpacken:

sudo tar xvzf weave_minimal_partly.tar.gz

Das Archiv können wir jetzt löschen:

sudo rm weave_minimal_partly.tar.gz

Den Besitz übergibt man wieder dem Apache-User:

sudo chown -R www-data:www-data /var/www/fsyncms

Und so führt man das “create_user” PHP-Script mit dem User des Apachen aus:

sudo -u www-data /usr/bin/php /var/www/ffsync/create_user

Firefox einrichten

Wie ich schon vorhin angeführt habe, muss ab Version 4 des Firefox kein Plugin mehr zu diesem Zweck installiert werden, da das Syncen schon integriert wurde. Nachfolgend seht ihr den Konfigurationshergang an einigen Beispielen.

Firefox 10 am Windows 7 Desktop

Es werden auch derzeit geöffnete Tabs gesynct. Damit diese nach dem Öffnen auch wieder angezeigt werden, ändern wir in Extras > Einstellungen > Allgemein (Bild 1) das Verhalten von “Wenn Firefox gestartet wird“. Hier wählen wir die Option “Fenster und Tabs der letzten Sitzung anzeigen” (Bild 2).

Firefox Sync Server Bild 1 [6]

Bild 1

Firefox Sync Server Bild 2 [7]

Bild 2

Danach verbinden wir unseren Firefox in Extras > Sync einrichten mit unserem Server (Bild 3). Wir wählen “Neues Benutzerkonto anlegen” (Bild 4) und im darauf folgenden Fenster teilen wir Firefox mit, dass wir unseren eigenen Server verwenden wollen (Bild 5).

Firefox Sync Server Bild 3 [8]

Bild 3

Firefox Sync Server Bild 4 [9]

Bild 4

Firefox Sync Server Bild 5 [10]

Bild 5

Jetzt nur noch eine Email-Adresse, ein Passwort und die URL zum Sync-Server eingeben (Slash am Ende nicht vergessen) (Bild 6) und entweder auf Weiter oder auf den “Sync Einstellungen” Button klicken, solltet ihr nicht alle Daten abgleichen wollen (Bild 7). Haben wir alles richtig gemacht, bestätigt uns der Firefox dies mit “Setup abgeschlossen” (Bild 8).

Firefox Sync Server Bild 6 [11]

Bild 6

Firefox Sync Server Bild 7 [12]

Bild 7

Firefox Sync Server Bild 8 [13]

Bild 8

 

Wiederherstellungsschlüssel sichern

Der Wiederherstellungsschlüssel wird zur lokalen Verschlüsselung (vor dem Sync) verwendet. Diesen speichern wir uns ab, da wir diesen benötigen um weitere Geräte zu unserem Account hinzu zu fügen. In den Firefox Einstellungen wechseln wir auf die Karteikarte “Sync“, klicken dort auf “Benutzerkonto verwalten” und lassen uns mit “Mein Wiederherstellungs-Schlüssel” (Bild 9) den Schlüssel anzeigen (Bild 10).

Firefox Sync Server Bild 9 [14]

Bild 9

Firefox Sync Server Bild 10 [15]

Bild 10

 

Weiteren Firefox 10 Desktop hinzufügen

An einem anderen Gerät klicken wir uns zu Extras > Sync einrichten durch, und wählen “Ich habe bereits ein Benutzerkonto” (Bild 11).

Um ein neues Gerät mit dem Account zu verknüpfen gibt es die Möglichkeit mit einem 3 teiligen Code (wobei man beide Geräte in Reichweite haben muss) oder mit dem Wiederherstellungsschlüssel.

Wir werden unseren vorhin gesicherten Schlüssel verwenden, also klicken wir auf “Ich habe das Gerät nicht bei mir” (Bild 12). Hier dann alle Eingabefelder ausfüllen (Bild 13) und nach dem “Weiter”-Klick ist auch dieser Firefox verbunden.

Firefox Sync Server Bild 11 [16]

Bild 11

Firefox Sync Server Bild 12 [17]

Bild 12

Firefox Sync Server Bild 13 [18]

Bild 13

 

Android Firefox hinzufügen

Die Einrichtung funktioniert analog zur Desktop-Version. Wir öffnen die Einstellungen (Bild 14), und klicken in der Kategorie Sync auf Verbinden (Bild 15).

Firefox Sync Server Bild 14 [19]

Bild 14

Firefox Sync Server Bild 15 [20]

Bild 15

Um wieder unseren Wiederherstellungsschlüessel zu verwenden touchen wir auf “Ich bin nicht in der Nähe meines Computers” (Bild 16) und geben dann unsere Daten ein (Bild 17).

Firefox Sync Server Bild 16 [21]

Bild 16

Firefox Sync Server Bild 17 [22]

Bild 17

 

Vielen Dank an die Entwickler!