Debian MozillaSync: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(37 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Allgemein=
==Allgemein==
Mittels Mozilla Firefox Sync Addon (https://addons.mozilla.org/de/firefox/addon/10868/) und dem hier vorgestellten Mozilla Syncserver (Weave) kann auf elegante und sichere Art und Weise (https-Übertragung) die Bookmarks, Passwörter und geöffnete Tabs synchronisiert werden.  
[[Bild:Mozilla-Sync.png|left]] Mozilla Firefox Sync ist seit Version 4 von Firefox fester Bestandteil des Browser's. Mit Firefox-Version 29 wurde das Protokoll geändert, sodass seit dieser Version die Serverversion 1.5 verwendet werden muss. Neben der Serverkomponente wurde die Authentifizierung der User geändert. Es ist nun ein Mozilla-Konto erforerderlich, ooder der optionale Accounting-Server. Auf dem Server wird der hier vorgestellte Firefox Syncserver (ehemals Weave) verwendet, um die Bookmarks, History, Passwörter und geöffnete Tabs zwischen verschiendenne Installationen zu synchronisieren.  


Der komplette Syncdiesnt besteht aus zwei Teilen. Der Sync-Server kümmert sich um die Synchronisation der Firefox-Daten. Der reg-server kümmert sich um die User authorisierung. Sämtliche Sync- und userdaten werden in einer MySQL-Datenbank abgelegt.
Das Anlegen eines neuen Accounts, Änderung des Passwortes usw. wird komplett vom Client erledigt. Nach der Serverinstallation ist keinerlei Eingriff diesbezüglich am Server erforderlich.  
Die Installation ist leider etwas aufwändiger, da kein Debian Paket zur Verfügung steht.


Voraussetzung:
* [[Debian_Apache2|→ Webserver]]
* [[Debian_MySQL|→ SQL-Server]]




=Installation=
Voraussetzung für Synchronisation via Internet:
==Download==
* Webserver
Download Verzeichnis erstellen und downloaden:
* OpenSSL mit Wildcard Zertifkat
mkdir /usr/local/src/mozilla_sync
cd /usr/local/src/mozilla_sync
wget http://hg.mozilla.org/services/sync-server/archive/fc6beddf7e61.tar.gz -O sync-server.tar.gz
wget http://hg.mozilla.org/services/reg-server/archive/0a3be81af7cc.tar.gz -O reg-server.tar.gz
entpacken:
tar -xvf sync-server.tar.gz
tar -xvf reg-server.tar.gz
Verschieben auf den Webserver und Rechte anpassen:
mkdir /var/www/weave
mv sync-server-fc6beddf7e61 /var/www/weave/sync-server
mv reg-server-0a3be81af7cc /var/www/weave/reg-server
chown -R root:www-data /var/www/weave




==MySQL-Datenbank anlegen:==
==Installation==
Datenbank und User anlegen:
  apt-get install make python-dev git-core python-virtualenv g++
  mysql -u root -p
  cd /opt/
Passwort '''''sql_root_pwd''''' eingeben, wenn danach gefragt wird. Dann folgende Befehle eingeben ('''''mozillasync_pwd''''' mit dem gew. Datenbank Passwort ersetzen):
  git clone https://github.com/mozilla-services/syncserver
  CREATE DATABASE weave;
  cd syncserver
  GRANT ALL PRIVILEGES ON weave.* TO weave@localhost IDENTIFIED BY ''''''mozillasync_pwd'''''';
  make build
exit
  mkdir db
 
SQL-Template angelegen, das anschließend die nötigen Tabellen in der SQL Datenbank erzeugt.
  vi weave.sql
Folgende Zeilen einfügen:
  CREATE TABLE `users` (
  id int(11) NOT NULL PRIMARY KEY auto_increment,
  username varbinary(32) NOT NULL,
  password_hash varbinary(128) default NULL,
  email varbinary(64) default NULL,
  status tinyint(4) default '1',
  alert text,
  reset varchar(32),
  reset_expiration datetime
  ) ENGINE=InnoDB;
   
   
CREATE TABLE `collections` (
  `userid` int(11) NOT NULL,
  `collectionid` smallint(6) NOT NULL,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`userid`,`collectionid`),
  KEY `nameindex` (`userid`,`name`)
) ENGINE=InnoDB;


CREATE TABLE `wbo` (
==Konfiguration==
  `username` int(11) NOT NULL,
===Sync-Server===
  `collection` smallint(6) NOT NULL default '0',
Das Konfigurationfile des Syncservers befinden sich im Ordner /opt/syncserver/.
  `id` varbinary(64) NOT NULL default '',
  cd /opt/syncserver/
  `parentid` varbinary(64) default NULL,
  `predecessorid` varbinary(64) default NULL,
  `sortindex` int(11) default NULL,
  `modified` bigint(20) default NULL,
  `payload` longtext,
  `payload_size` int(11) default NULL,
  PRIMARY KEY (`username`,`collection`,`id`),
  KEY `parentindex` (`username`,`collection`,`parentid`),
  KEY `modified` (`username`,`collection`,`modified`),
  KEY `weightindex` (`username`,`collection`,`sortindex`),
  KEY `predecessorindex` (`username`,`collection`,`predecessorid`),
  KEY `size_index` (`username`,`payload_size`)
) ENGINE=InnoDB;


Datenbank Template importieren ('''''sql_root_pwd''''' erforderlich):
Festlegen des SQLite Datenbankfiles zum Speichern der Syncdaten und eines Schlüssels für die Verschlüsselung der Datenbank:
  mysql -u root -p weave <weave.sql


Schlüssel:
head -c 20 /dev/urandom | sha1sum
die Ausgabe sieht z.B. folgendermaßen aus:
8c76e8b050abd0fffb0a986146282fe328be2e92 -
D.h. '''SYNC_SECRET'''=8c76e8b050abd0fffb0a986146282fe328be2e92


=Konfiguration=
Konfigfile anpassen:
Reg-Server:
vi syncserver.ini
  cd /var/www/weave/reg-server/1.0
Folgende Änderungen durchführen:
  cp weave_user_constants.php.dist weave_user_constants.php
  [syncserver]
vi weave_user_constants.php
sqluri = sqlite:////opt/syncserver/db/syncserver.db
Nach "# ***** END LICENSE BLOCK *****" folgende Zeilen einfügen und '''''mozillasync_pwd''''' mit dem beim Erstellen der Datenbank angegebenem Datenbank Passwort ersetzen:
  secret = '''SYNC_SECRET'''
  define('WEAVE_AUTH_ENGINE', 'mysql');
Syncserver nur aus dem lokalen Netzwerk erreichbar:
  define('WEAVE_MYSQL_AUTH_PASS', '''''mozillasync_pwd''''');
  public_url = http://'''IP_des_Server''':5000
  define('WEAVE_SHA_SALT', ''''''Weave_Salt'''''');
Syncserver aus dem Internet erreichbar:
  public_url = https://ffsync.'''domain.org'''
  force_wsgi_environ = true


{{Achtung|
===Optional: Syncserver aus dem Internet erreichbar===
Für den Parameter '''''WEAVE_SHA_SALT''''' eine beliebige sehr lange (mind. 10 Zeichen) Text/Zahlenkombination '''''Weave_Salt''''' eingeben. Dies ist enorm wichtig für die verwendete SHA256-Verschlüsselung}}
Mit obigen Einstellungen ist der Syncserver im lokalen Netzwerk unter der Adresse http://'''''IP_des_SERVER''''':5000 erreichbar. Mittels Apache Reverse Proxy ist es möglich, den Syncserver auch aus dem Internet erreichbar zu machen und die Daten SSL verschlüsselt zu übertragen.
 
  vi /etc/apache2/sites-enabled/ffsync_https.conf
 
Folgende Zeilen einfügen:
Sync-Server:
*Apache 2.2:
cd /var/www/weave/sync-server/1.0
cp default_constants.php.dist default_constants.php
vi default_constants.php
Nach "# ***** END LICENSE BLOCK *****" folgende Zeilen einfügen und '''''mozillasync_pwd''''' mit dem beim Erstellen der Datenbank angegebenem Datenbank Passwort ersetzen:
define('WEAVE_STORAGE_ENGINE', 'mysql');
define('WEAVE_MYSQL_STORE_READ_PASS', '''''mozillasync_pwd''''');
define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_PASS', '''''mozillasync_pwd''''');
define('WEAVE_SHA_SALT', ''''''Weave_Salt'''''');
{{Hinweis|
Für den Parameter '''''WEAVE_SHA_SALT''''' den selben '''''Weave_Salt''''' eingeben, wie oben beim Reg-Server. Ansonsten kann der Syncserver den User später nicht authentifizieren und die Synchronisation scheitert.}}
 
 
=Apache Virtualhost=
Da der Zugriff auf den Syncserver über einen Standard Apache Virtualhost erfolgt, wird dieser hier angelegt:
  vi /etc/apache2/sites-enabled/mozilla-sync_https.conf
Folgende Zeile eingeben (den ServerName mozillasync.domain.org anpassen):
  <VirtualHost *:443>
  <VirtualHost *:443>
    SSLEngine On
     ServerName '''''ffsync.domain.org'''''
    SSLKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
     ProxyRequests Off
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
     <Proxy *>
     ServerName mozillasync.domain.org
     DocumentRoot /var/www/weave
    Alias /1.0      /var/www/weave/sync-server/1.0/index.php
    Alias /user/1.0 /var/www/weave/reg-server/1.0/index.php
    Alias /user/1  /var/www/weave/reg-server/1.0/index.php
    Alias /misc/1.0/captcha_html    /var/www/weave/reg-server/1.0/captcha.php
    Alias /misc/1/captcha_html      /var/www/weave/reg-server/1.0/captcha.php
    Alias /weave-registration-static /var/www/weave/reg-server/1.0/static
    Alias /weave-password-reset      /var/www/weave/reg-server/1.0/forgot_password.php
    CustomLog /var/log/apache2/mozilla-sync/access.log combined
    ErrorLog /var/log/apache2/mozilla-sync/error.log
    DirectoryIndex index.php index.html index.htm
    ServerSignature Off
     <Directory "/var/www/weave/">
      Options Indexes FollowSymLinks
      AllowOverride none
       Order allow,deny
       Order allow,deny
       Allow from all
       Allow from all
     </Directory>
     </Proxy>
    ProxyPass / http://'''''IP_des_SERVER''''':5000/
    <Location />
      ProxyPassReverse /
    </Location>
    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem
</VirtualHost>
*Apache 2.4:
<VirtualHost *:443>
    ServerName '''''ffsync.domain.org'''''
    ProxyRequests Off
    <Proxy *>
      Require all granted
    </Proxy>
    ProxyPass / http://'''''IP_des_SERVER''''':5000/
    <Location />
      ProxyPassReverse /
    </Location>
    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem
  </VirtualHost>
  </VirtualHost>
Dieser Virtualhost verwendet eigene Access- und Error- Logfiles. Für diese wird ein eigenes Unterverzeichnis angelegt:
mkdir /var/log/apache2/mozilla-sync


Apache neu starten:
Apache2 neu starten:
  /etc/init.d/apache2 restart
  /etc/init.d/apache2 restart




=Client Installation und Konfiguration=
==Systemd Unit==
{{Hinweis|
vi /etc/systemd/system/firefox-sync.service
Damit die spätere Synchronisation funktioniert, muss die Adresse des Syncserver's (https://mozillasync.domain.org) einmalig im Mozilla Firefox (an jedem PC) eingegeben werden und das (selbstsignierte) Apache2 Zertifikat dauerhaft gespeichert werden. Es empfiehlt sich dies noch vor der Installation des Plugins durchzuführen.}}
Folgende Zeilen einfügen:
[Unit]
Description=Firefox Sync Server
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=simple
User=firefox-sync
Group=firefox-sync
Umask=007
Restart=on-abort
ExecStart=/opt/syncserver/local/bin/gunicorn --paste /opt/syncserver/syncserver.ini
[Install]
WantedBy=multi-user.target
 
Autostart des Syncserver beim Systemstart:
systemctl enable --now firefox-sync
 


==Syncserver starten==
service firefox-sync start


Das Firefox Sync-Plugin kann von dieser Seite: https://addons.mozilla.org/de/firefox/addon/10868/ heruntergeladen und installiert werden.
[[Bild:Mozilla-Sync1.png]]
* Den grünen Button '''''+ Add to Firefox''''' anklicken
* Installation bestätigen und anschließend Firefox neu starten, wie vom Plugin Installer gefordert.


==Client Konfiguration==
Für die Synchronisation ist ein Mozilla-Account erforderlich.


* Einrichtung des Sync-Kontos
Um einen eigenen Server für die Synchronisation zu verwenden, muss die URL des Sycnservers vor der eigentlichen Synckonfiguration eingerichtet werden:
*Firefox starten
falls unter Einstellungen/Sync bereits eine Synchronisation eingerichtet ist, diese trennen
*Adresse about:config eingeben
*Unter Suchen: services.sync.tokenServerURI eingeben
*Den Eintrag identity.sync.tokenserver.uri durch doppelcklick bearbeiten
**Server nur lokal erreichbar (siehe Konfiguration Sync-Server): Adresse: http://'''IP_des_Server'''/token/1.0/sync/1.5 eingeben
**Server aus dem Internet erreichbar (siehe Konfiguration Sync-Server): Adresse: https://ffsync.'''domaian.org'''/token/1.0/sync/1.5 eingeben
*Firefox neu starten
Synchronisation konfigurieren:
*Firefox Menü Extras/Einstellungen auswählen
*Sync anklicken
*Firefox Konto neu erstellen:
**Link Konto erstellen anklicken
**Emailadresse und Passwort vergeben und Geburtsjahr auswählen
**Haken bei "Auswählen, was synchronisiert werden soll" anklicken
**Registrieren anwählen
**Nach der Bestätigung wird eine Mail an die angegeben Mailadresse gesendet.
**Den Bestätigen Link in der Mail anklicken, um die Email-Adresse zu bestätigen
**Je nach Bedarf auswählen, welche Daten synchronisiert werden sollen: Tabs, Lesezeichen, Passwörter, Chronik, Add-ons, Einstellungn, Gerätename
*Vorhandenes Firefox Konto:
**Link Anmelden anklicken
**Emailadresse und Passwort des Mozilla-Kontos eingeben
**Verwalten anklicken
**Je nach Bedarf auswählen, welche Daten synchronisiert werden sollen: Tabs, Lesezeichen, Passwörter, Chronik, Add-ons, Einstellungn, Gerätename


==Firefox Sync Degug Log==
In Firefox folgende Url eingeben: about:config


* Synchronisation mit weiterem PC
Wenn die Synchronisierung fehlerfrei funktioniert, sollten keine Log-Einträge vorhanden sein. Falls welche vorhanden sind, können diese Hinweise für die Fehlerursache liefern.

Aktuelle Version vom 6. Juli 2020, 17:43 Uhr

Allgemein

Mozilla-Sync.png

Mozilla Firefox Sync ist seit Version 4 von Firefox fester Bestandteil des Browser's. Mit Firefox-Version 29 wurde das Protokoll geändert, sodass seit dieser Version die Serverversion 1.5 verwendet werden muss. Neben der Serverkomponente wurde die Authentifizierung der User geändert. Es ist nun ein Mozilla-Konto erforerderlich, ooder der optionale Accounting-Server. Auf dem Server wird der hier vorgestellte Firefox Syncserver (ehemals Weave) verwendet, um die Bookmarks, History, Passwörter und geöffnete Tabs zwischen verschiendenne Installationen zu synchronisieren.

Das Anlegen eines neuen Accounts, Änderung des Passwortes usw. wird komplett vom Client erledigt. Nach der Serverinstallation ist keinerlei Eingriff diesbezüglich am Server erforderlich.


Voraussetzung für Synchronisation via Internet:

  • Webserver
  • OpenSSL mit Wildcard Zertifkat


Installation

apt-get install make python-dev git-core python-virtualenv g++
cd /opt/
git clone https://github.com/mozilla-services/syncserver
cd syncserver
make build
mkdir db

Konfiguration

Sync-Server

Das Konfigurationfile des Syncservers befinden sich im Ordner /opt/syncserver/.

cd /opt/syncserver/

Festlegen des SQLite Datenbankfiles zum Speichern der Syncdaten und eines Schlüssels für die Verschlüsselung der Datenbank:

Schlüssel:

head -c 20 /dev/urandom | sha1sum

die Ausgabe sieht z.B. folgendermaßen aus:

8c76e8b050abd0fffb0a986146282fe328be2e92 -

D.h. SYNC_SECRET=8c76e8b050abd0fffb0a986146282fe328be2e92

Konfigfile anpassen:

vi syncserver.ini

Folgende Änderungen durchführen:

[syncserver]
sqluri = sqlite:////opt/syncserver/db/syncserver.db
secret = SYNC_SECRET

Syncserver nur aus dem lokalen Netzwerk erreichbar:

public_url = http://IP_des_Server:5000

Syncserver aus dem Internet erreichbar:

public_url = https://ffsync.domain.org
force_wsgi_environ = true

Optional: Syncserver aus dem Internet erreichbar

Mit obigen Einstellungen ist der Syncserver im lokalen Netzwerk unter der Adresse http://IP_des_SERVER:5000 erreichbar. Mittels Apache Reverse Proxy ist es möglich, den Syncserver auch aus dem Internet erreichbar zu machen und die Daten SSL verschlüsselt zu übertragen.

vi /etc/apache2/sites-enabled/ffsync_https.conf

Folgende Zeilen einfügen:

  • Apache 2.2:
<VirtualHost *:443>
   ServerName ffsync.domain.org
   ProxyRequests Off
   <Proxy *>
      Order allow,deny
      Allow from all
   </Proxy>
   ProxyPass / http://IP_des_SERVER:5000/
   <Location />
      ProxyPassReverse /
   </Location>
   SSLEngine on
   SSLProxyEngine On
   SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem
</VirtualHost>
  • Apache 2.4:
<VirtualHost *:443>
   ServerName ffsync.domain.org
   ProxyRequests Off
   <Proxy *>
      Require all granted
   </Proxy>
   ProxyPass / http://IP_des_SERVER:5000/
   <Location />
      ProxyPassReverse /
   </Location>
   SSLEngine on
   SSLProxyEngine On
   SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem
</VirtualHost>

Apache2 neu starten:

/etc/init.d/apache2 restart


Systemd Unit

vi /etc/systemd/system/firefox-sync.service

Folgende Zeilen einfügen:

[Unit]
Description=Firefox Sync Server
After=syslog.target network.target remote-fs.target nss-lookup.target 
[Service]
Type=simple
User=firefox-sync
Group=firefox-sync
Umask=007
Restart=on-abort
ExecStart=/opt/syncserver/local/bin/gunicorn --paste /opt/syncserver/syncserver.ini

[Install]
WantedBy=multi-user.target

Autostart des Syncserver beim Systemstart:

systemctl enable --now firefox-sync


Syncserver starten

service firefox-sync start


Client Konfiguration

Für die Synchronisation ist ein Mozilla-Account erforderlich.

Um einen eigenen Server für die Synchronisation zu verwenden, muss die URL des Sycnservers vor der eigentlichen Synckonfiguration eingerichtet werden:

  • Firefox starten

falls unter Einstellungen/Sync bereits eine Synchronisation eingerichtet ist, diese trennen

  • Adresse about:config eingeben
  • Unter Suchen: services.sync.tokenServerURI eingeben
  • Den Eintrag identity.sync.tokenserver.uri durch doppelcklick bearbeiten
    • Server nur lokal erreichbar (siehe Konfiguration Sync-Server): Adresse: http://IP_des_Server/token/1.0/sync/1.5 eingeben
    • Server aus dem Internet erreichbar (siehe Konfiguration Sync-Server): Adresse: https://ffsync.domaian.org/token/1.0/sync/1.5 eingeben
  • Firefox neu starten

Synchronisation konfigurieren:

  • Firefox Menü Extras/Einstellungen auswählen
  • Sync anklicken
  • Firefox Konto neu erstellen:
    • Link Konto erstellen anklicken
    • Emailadresse und Passwort vergeben und Geburtsjahr auswählen
    • Haken bei "Auswählen, was synchronisiert werden soll" anklicken
    • Registrieren anwählen
    • Nach der Bestätigung wird eine Mail an die angegeben Mailadresse gesendet.
    • Den Bestätigen Link in der Mail anklicken, um die Email-Adresse zu bestätigen
    • Je nach Bedarf auswählen, welche Daten synchronisiert werden sollen: Tabs, Lesezeichen, Passwörter, Chronik, Add-ons, Einstellungn, Gerätename
  • Vorhandenes Firefox Konto:
    • Link Anmelden anklicken
    • Emailadresse und Passwort des Mozilla-Kontos eingeben
    • Verwalten anklicken
    • Je nach Bedarf auswählen, welche Daten synchronisiert werden sollen: Tabs, Lesezeichen, Passwörter, Chronik, Add-ons, Einstellungn, Gerätename

Firefox Sync Degug Log

In Firefox folgende Url eingeben: about:config

Wenn die Synchronisierung fehlerfrei funktioniert, sollten keine Log-Einträge vorhanden sein. Falls welche vorhanden sind, können diese Hinweise für die Fehlerursache liefern.