Firefox_Sync_logo

Mise à jour : depuis Firefox 29, l'outil de synchronisation a changé afin de correspondre entre autres, aux besoins de Firefox OS. Du coup avec la méthode décrite ci-dessous, il n'est plus possible synchroniser avec un nouveau navigateur de version 29 et plus. Seule la synchronistaion des navigateurs déjà "attachés" au serveur continuera à fonctionner correctement mais jusqu'à quand, impossible de le savoir. Autant dire que cette méthode est obsolète et revolue. La bonne nouvelle c'est que Mozilla propose son nouveau serveur de synchonisation pour l'auto-hébergement, la mauvaise c'est que je ne suis pas parvenu à relier le navigateur et mon serveur. Pour l'heure, je vais donc confier mes données à Mozilla (si on ne peut pas leur faire confiance, à qui peut-on le faire sur le Web ? ), si d'aventure je parviens à une solution viable cela fera l'objet d'un nouvel article.

 

D’aucuns diront que je fais une fixation sur ce fameux serveur. D’aucuns auront raison car je ne suis pas satisfait de son installation et que ça me reprend les jours fériés. Le point délicat, c’est le serveur Apache dont le virtualhost me cause du soucis, le but était de ne pas utiliser plusieurs serveurs web et tant qu’à faire, de ne pas ouvrir de port supplémentaire dans le firewall (TCP 5000). Mais après un test concluant de la solution native, je me suis résolu à l’appliquer telle quelle (avec MySQL et en ajoutant quelques améliorations quand même), tant pis pour le trou supplémentaire dans mon Iptables et tant mieux pour mes jours fériés.

Pré-requis :

  • Un serveur GNU/Linux (ici Debian Squeeze i386)
  • Base de données MySQL
  • Un navigateur Mozilla Firefox (ici Nightly 11)/IceWeasel PC/Mobile (ici 8 )

Conventions :

  • prompt : # commande : exécuter la commande sous le compte root ou précédée de la commande « sudo »
  • prompt : $ commande : exécuter la commande sous le compte utilisateur

 

1. Installation

– Installer les dépendances :

# apt-get install python-dev mercurial python-virtualenv mysql-server build-essential libmysqlclient-dev

– Créer la base de données sync :

# mysql -u root -p
mysql> create database sync;
mysql> grant all on sync.* to sync identified by 'my_password';
mysql> flush privileges;
mysql> exit;

– Aller dans /var/www et télécharger la dernière version du serveur :

# cd /var/www
# hg clone https://hg.mozilla.org/services/server-full

– Renommer le dossier /var/www/server-full en /var/www/sync :

# mv /var/www/server-full /var/www/sync

– Se placer dans le dossier /var/www/sync et compiler le serveur :

# cd sync
# make build

– Installer Mysql-Python

# bin/easy_install Mysql-Python

– Configurer le fichier /var/www/sync/etc/sync.conf pour MySQL (directives [storage] sqluri et [auth] sqluri), le quota – 25 Mio pour prendre large, le serveur web (directive [auth] fallback_node) et SMTP (directive [smtp] sender) :

# nano /var/www/sync/etc/sync.conf
[global]
clean_shutdown = false

[captcha]
use = false
public_key = 6Le8OLwSAAAAAK-wkjNPBtHD41v5OmoNFANIa1JL
private_key = 6Le8OLwSAAAAAEKoqfc-DmoF4HNswD7RNdGwxRij
use_ssl = false

[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri = mysql://sync:my_password@localhost/sync
standard_collections = false
use_quota = true
quota_size = 25120
pool_size = 100
pool_recycle = 3600
reset_on_return = true
display_config = true
create_tables = true

[auth]
backend = services.user.sql.SQLUser
sqluri = mysql://sync:my_password@localhost/sync
pool_size = 100
pool_recycle = 3600
create_tables = true
fallback_node = http://my_server.net:5000/

[smtp]
host = localhost
port = 25
sender = my_account@email.net

[cef]
use = true
file = syslog
vendor = mozilla
version = 0
device_version = 1.3
product = weave

– Configurer le fichier /var/www/sync/development.ini pour changer l’emplacement des logs :

# nano /var/www/sync/development.ini
[DEFAULT]
debug = True
translogger = False
profile = False

[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 5000
use_threadpool = True
threadpool_workers = 60

[app:main]
use = egg:SyncServer
configuration = file:%(here)s/etc/sync.conf

#
# logging
#
[loggers]
keys = root,syncserver

[handlers]
keys = global,syncserver,syncserver_errors

[formatters]
keys = generic

[logger_root]
level = WARNING
handlers = global

[logger_syncserver]
qualname = syncserver
level = ERROR
handlers = syncserver,syncserver_errors
propagate = 0

[logger_syncserver_errors]
qualname = syncserver
level = ERROR
handlers = syncserver_errors
propagate = 0

[handler_global]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = generic

[handler_syncserver]
class = StreamHandler
args = (sys.stderr,)
level = INFO
formatter = generic

[handler_syncserver_errors]
class = handlers.RotatingFileHandler
args = ('/var/log/sync/sync-error.log',)
level = ERROR
formatter = generic

[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S

– Créer le dossier des logs /var/log/sync :

# mkdir /var/log/sync

– Créer un group sync :

# groupadd sync

– A ce stade, une petite modification par rapport au précédent tutoriel car nous allons cette fois créer un utilisateur weave que nous ajoutons à ce groupe (car le compte sync existait déjà sur mon serveur et étant lié à un exécutable du même nom, il mettait le bazar dans mes scripts) :

# useradd -d /var/www/sync -g sync -r -s /bin/bash weave

– Donner les droits sur les dossiers /var/www/sync et /var/log/sync à l’utilisateur/groupe sync :

# chown -R weave:sync /var/www/sync
# chown -R weave:sync /var/log/sync

– Ajouter une règle IPTABLES ouvrant le port TCP 5000 :

# iptables -A INPUT -p tcp -m tcp --dport 5000 -j ACCEPT

– Démarrer le serveur sync en arrière-plan pour le tester :

$ cd /var/www/sync
$ bin/paster serve development.ini &

– Si tout fonctionne, créer un script pour démarrer automatiquement le service :

# nano /etc/init.d/sync-server.sh
#!/bin/bash 

### BEGIN INIT INFO
# Provides:          Mozilla Sync HomeServer
# Required-Start:    $syslog $network
# Required-Stop:     $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Mozilla Sync HomeServer initscript
# Description:       Mozilla Sync HomeServer
### END INIT INFO
 
MESSAGELOG=/var/log/sync/sync-messages.log
PID=`pidof -x -o %PPID paster`
 
case "$1" in
  start)
    echo "Starting Mozilla Sync HomeServer"
    [ ! -d $MESSAGEDIR ] && mkdir -p $MESSAGEDIR
    su weave -c "cd /var/www/sync/ && bin/paster serve development.ini &>$MESSAGELOG &"
    ;;
  stop)
    echo "Stopping Mozilla Sync HomeServer"
    kill $PID &>/dev/null
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0

– Rendre le script exécutable et ajouter le service :

# chmod 755 /etc/init.d/sync-server.sh
# insserv sync-server.sh

Pour le reste, référez-vous à l’article précédent.

Sources :

 

Mozilla Sync

Mise à jour 06/12/2011 : Suite à la mise en ligne d’une version modifiée de ce tutoriel n’utilisant pas le serveur Apache, je précise que si le tutoriel suivant est parfaitement fonctionnel, je préfère pour ma part ne pas l’utiliser pour les raisons décrites dans l’article sus-nommé. C’est vous qui voyez, y’en a qui ont essayé…

Suite au précédent article qui décrivait l’installation du serveur Sync minimal (et au fait qu’il n’était plus maintenu au profit de la version complète qui a été réécrite en Python), j’aborde ici l’installation du serveur Sync complet derrière un serveur Apache avec utilisation d’une base données MySQL.

 

Pré-requis :

  • Un serveur GNU/Linux (ici Debian Squeeze i386)
  • Serveur Web (ici Apache 2) avec support HTTPS
  • Base de données MySQL
  • Un navigateur Mozilla Firefox/IceWeasel PC/Mobile

Conventions :

  • prompt : # commande : exécuter la commande sous le compte root ou précédée de la commande « sudo »
  • prompt : $ commande : exécuter la commande sous le compte utilisateur

 

1. Installation

– Installer les dépendances :

# apt-get install python-dev mercurial python-virtualenv mysql-server build-essential libmysqlclient-dev libapache2-mod-wsgi

– Créer la base de données sync :

# mysql -u root -p
mysql> create database sync;
mysql> grant all on sync.* to sync identified by 'my_password';
mysql> flush privileges;
mysql> exit;

– Aller dans /var/www et télécharger la dernière version du serveur :

# cd /var/www
# hg clone https://hg.mozilla.org/services/server-full

– Renommer le dossier /var/www/server-full en /var/www/sync :

# mv /var/www/server-full /var/www/sync

– Se placer dans le dossier /var/www/sync et compiler le serveur :

# cd sync
# make build

– Installer Mysql-Python

# bin/easy_install Mysql-Python

Dans sa version actuelle, le serveur Sync embarque son propre serveur Web mais celui-ci n’est pas conçu pour supporter une forte charge (ce qui n’est pas très pénalisant dans notre cas) mais surtout ne semble pas posséder de mode chiffré. Nous allons donc faire fonctionner le serveur Sync derrière un serveur Apache en mode SSL via le mode WSGI. A noter que NGINX et Lighttpd sont aussi supportés (voir la doc Mozilla).

– Le mode WSGI ayant été installé avec les dépendances, il ne reste plus qu’à l’activer si nécessaire :

# a2enmod wsgi

– Créer un group sync et ajouter l’utilisateur sync à ce groupe :

# groupadd sync
# usermod -G sync sync

– Configurer le fichier /var/www/sync/etc/sync.conf pour Apache et MySQL (directives [storage] sqluri et [auth] sqluri), Apache 2 (directive [auth] fallback_node) et SMTP (directive [smtp] sender) :

# nano /var/www/sync/etc/sync.conf
[global]
clean_shutdown = false

[captcha]
use = false
public_key = 6Le8OLwSAAAAAK-wkjNPBtHD41v5OmoNFANIa1JL
private_key = 6Le8OLwSAAAAAEKoqfc-DmoF4HNswD7RNdGwxRij
use_ssl = false

[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri =  mysql://sync:my_password@localhost/sync
standard_collections = false
use_quota = true
quota_size = 5120
pool_size = 100
pool_recycle = 3600
reset_on_return = true
display_config = true
create_tables = true

[auth]
backend = services.auth.sql.SQLAuth
sqluri = mysql://sync:my_password@localhost/sync
pool_size = 100
pool_recycle = 3600
create_tables = true
fallback_node = https://my_server.net/

[smtp]
host = localhost
port = 25
sender = my_account@email.net

[cef]
use = true
file = syslog
vendor = mozilla
version = 0
device_version = 1.3
product = weave

– Configurer le Virtualhost Apache :

# nano /etc/apache2/sites-available/sync
ServerAdmin my_account@email.net
ServerName my_server.net
DocumentRoot /var/www/sync

      Order deny,allow
      Allow from all
      Options -Indexes

WSGIProcessGroup sync
WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25
WSGIPassAuthorization On
WSGIScriptAlias / /var/www/sync/sync.wsgi

ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

– Activer le Virtualhost et recharger la configuration d’Apache :

# a2ensite sync
# service apache2 reload

 

2. Ajout d’un Firefox PC / Mobile

2.1. Firefox PC

– Ouvrir les Options/Paramètres de Firefox, allez dans l’onglet Sync et cliquer sur le bouton Configurer Firefox Sync

– Choisir Créer un nouveau compte

– Configurer les options de synchronisation (bouton en bas à gauche) et valider (Attention à ne pas écraser vos marque-pages par mégarde !) :

Options de configuration Sync

– Renseigner les champs suivants :

Compte : my_account@email.net
Mot de passe : my_password
serveur (Utiliser un serveur personnalisé…) : https://my_server.net/

Détails du compte

Pensez à noter la clé de synchronisation après avoir validé les paramètres de connexion, elle sera demandée pour se connecter au compte depuis un autre Firefox.

2.2. Firefox Mobile

Une fois le compte créer et les données stockées sur le serveur, la configuration de Firefox Mobile se fait la manière suivante.

– Aller dans les paramètres, activer Sync et appuyer sur le bouton Connecter :

Paramètres Firefox Mobile
– Appuyer sur le lien Je n’ai pas accès à mon ordinateur pour l’instant… :

Connexion Firefox Mobile Sync – Renseigner les champs suivants :

Compte : my_account@email.net
Mot de passe : my_password
Serveur (Utiliser un serveur personnalisé…) : https://my_server.net/
Clé de synchronisation : bd54sb5e1fd64gv76vs5gv16qse1vsd5

Infos-Connexion-Firefox-Mobile-Sync 2

– La synchronisation est maintenant activée :

Firefox Mobile Sync Activé

 

Sources :

 

Firefox_Sync_logo

Mise à jour 21/08/2011 : Le serveur dont l’installation est décrite ici n’étant plus supporté, j’ai détaillé l’installation du nouveau serveur dans cet article.

Mise à jour 16/08/2011 : Comète m’a fait remarqué dans les commentaires que le serveur minimal n’est plus maintenu depuis 1 mois, je vous redirige donc vers le tutoriel de Mozilla pour plus d’infos. Je vais tester le nouveau serveur sous peu et réécrirai l’article si nécessaire.

Si je n’avais qu’une seule extension Firefox à garder ce serait Xmarks parce qu’avec 3 PC et un mobile, impossible de synchroniser mes centaines de favoris et dizaines de mots de passe sans elle. Cette extension est un véritable bijou et je pèse mes mots. Elle a cependant un défaut de taille, les données sont stockées sur les serveurs de la société. Le fait est que confier ses données personnelles, qui plus est ses mots de passe, à une société tierce est une très mauvaise idée. La confidentialité de celles-ci étant toute relative pour des raisons de politique d’utilisation du service  (l’affaire Dropbox en est une illustration) ou plus implacable et sournois, pour des motifs de sécurité intérieure (cf. les déclarations de Microsoft concernant le Patriot Act). Mon mauvais esprit aurait donc souhaité le disparition pure et simple de Xmarks suite à leur problème financiers afin qu’ils libèrent leur logiciel et que tout un chacun puisse installer son propre serveur Xmarks (A noter que Xmarks proposait quand même une méthode de stockage perso via WebDAV ou FTP grâce à l’extension Xmarks BYOS – Bring Your Own Server). Heureusement pour eux mais pas pour nous, Lastpass les a rachetés et Xmarks continue donc son bonhomme de chemin (Xmarks BYOS a par contre disparu…). Venons-en maintenant au sujet qui nous intéresse : Mozilla Sync. Même si la fondation Mozilla est au-dessus de tout soupçon concernant les question de vie privée, elle n’en reste pas moins soumise aux législations en vigueur, si vos données sont stockées sur des serveurs américains, le Patriot Act s’y appliquera. Voici donc un moyen relativement simple d’installer à la maison son propre serveur Mozilla Sync.

Pré-requis :

  • Un serveur GNU/Linux (ici Debian Squeeze i386)
  • Serveur Web (ici Apache 2) avec support HTTPS
  • Un navigateur Mozilla Firefox/IceWeasel PC/Mobile

Conventions :

  • prompt : # commande : exécuter la commande sous le compte root ou précédée de la commande « sudo »
  • prompt : $ commande : exécuter la commande sous le compte utilisateur

Je le précise d’emblée, il s’agit ici d’installer le serveur dit « Minimal » créer par Toby Elliott suite au hack de Fazal Majid qui n’arrivait pas à installer le serveur complet (ceux qui ont essayé comprendrons aisément…).

 

1. Installation

 – Télécharger la dernière version de Weave Minimal dans /tmp :

# cd /tmp
# wget http://people.mozilla.com/~telliott/weave_minimal.tgz

 – Extraire le contenu de l’archive :

# tar zxvf weave_minimal.tgz

 – Renommer le dossier en weave et le déplacer dans /var/www :

# mv weave_minimal weave
# mv weave /var/www/

 – Modifier les droits et propriétaires du dossier et des fichiers :

# chown -R www-data:www-data /var/www/weave
# chmod -R 755 /var/www/weave

 – Éditer le fichier de configuration d’Apache /etc/apache2/apache2.conf (à adapter selon votre distribution et/ou l’existence de Virtualhosts) et ajouter les lignes suivantes afin de créer un alias  :

Alias /weave/ "/var/www/weave/index.php/"
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

 – Se rendre à l’adresse https://my_server.net/weave/1.0/blah/info/collection, un pop-up apparait.

 – Entrer le login « blah » et n’importe quel mot de passe afin de créer la base de données

 – Vérifier que la base de données a bien été créée (fichier /var/www/weave/weave.db) :

# ls -la /var/www/weave

Le script /var/www/weave/create_user sert à créer et supprimer les utilisateur ainsi qu’à changer le mot de passe.

 – Créer un utilisateur (la suite de chiffres et de lettres correspond à la clé de synchronisation, il faut absolument la copier en lieu sûr) :

# php /var/www/weave/create_user
(c)reate, (d)elete or change (p)assword: c
Please enter email: my_account@email.net
Please enter password: my_password
bd54sb5e1fd64gv76vs5gv16qse1vsd5 created

Le serveur est maintenant installé et actif.

 

2. Ajout d’un Firefox PC / Mobile

2.1. Firefox PC

 – Ouvrir Firefox PC, entrer l’adresse about:config et changer la valeur de la clé services.sync.serverURL par : https://my_server.net/weave/ (Noter le / à la fin de l’adresse)

 – Ouvrir un nouvel onglet, entrer l’adresse https://my_server.net/weave/ et valider le certificat de manière permanente.

 – Ouvrir les Options/Paramètres de Firefox, allez dans l’onglet Sync et cliquer sur le bouton Configurer Firefox Sync

 – Choisir j’ai déjà un compte – se connecter

 – Configurer les options de synchronisation (bouton en bas à gauche) et valider (Attention à ne pas écraser vos marque-pages par mégarde !):

Options de configuration Sync

– Cliquer sur le lien Je n’ai pas l’appareil avec moi et renseigner les champs :

Compte : my_account@email.net
Mot de passe : my_password
serveur (Utiliser un serveur personnalisé…) : https://my_server.net/weave/
clé de synchronisation : bd54sb5e1fd64gv76vs5gv16qse1vsd5

Paramètres de connexion Sync

 2.2. Firefox Mobile

Le configuration de Firefox Mobile se fait la même manière que sur le version de bureau.

 – Aller dans les paramètres, activer Sync et appuyer sur le bouton Connecter :

Paramètres Firefox Mobile
 – Appuyer sur le lien Je n’ai pas accès à mon ordinateur pour l’instant… :

 Connexion Firefox Mobile Sync – Renseigner les champs comme précédemment :

Infos Connexion Firefox Mobile Sync

 – La synchronisation est maintenant activée :

Firefox Mobile Sync Activé

Un point de plus pour moi dans le match qui m’oppose au Minitel 2.0 !