Installation d’un serveur Firefox Sync

Installation d’un serveur Firefox Sync
Jérémie Kassianoff
1 novembre 2013
5 min de lecture

Firefox Sync sur votre serveur personnel! Configurer Firefox Sync avec Sqlite/Mysql sous Debian7. Pré-requis : avoir Firefox et le système Debian 7.

Cas d'usage concret

Vous voulez synchroniser vos données Firefox sans dépendre des serveurs Mozilla : voici comment installer votre propre serveur Firefox Sync.

Mozilla propose un service « Sync » performant et gratuit au sein leurs propres serveurs mais Mozilla nous laisse aussi la possibilité de créer notre serveur de synchronisation personnel.
Dans cet article, le serveur personnel Firefox Sync est installé sur Debian 7.

Présentation de Firefox Sync

Un serveur personnel Firefox Sync permet de sauvegarder l’ensemble de la configuration de votre navigateur Firefox via une synchronisation des objets ci-dessous :

  • Les marque-pages
  • Les historiques de navigation
  • Les préférences
  • Les mots de passe
  • Les formulaires pré-remplis
  • Les derniers onglets ouverts
  • Les modules complémentaires

L’ensemble de votre configuration ne vous quittera plus et vos données sont entre vos mains.
Pratique si l’on dispose de plusieurs appareils (smartphone, pc portable, pc de bureau)!

Installation de Firefox Sync

Téléchargement des pré-requis :

bash
apt-get install python-dev mercurial sqlite3 python-virtualenv libssl-dev

Téléchargement du serveur personnel Firefox Sync :

bash
cd /var/www/
clone https://hg.mozilla.org/services/server-full
cd server-full
make build

Faire un test pour s’assurer que tout fonctionne :

bash
make test

Configuration de Firefox Sync :

Rendez-vous dans le fichier de configuration :

bash
nano etc/sync.conf

Les lignes à modifier sont  :

ini
[nodes]
fallback_node = http://votre_nom_dns:5000/

storage

sqluri = sqlite:////chemin/de/votre_base/nom_du_fichier.db

auth

sqluri = sqlite:////chemin/de/votre_base/nom_du_fichier.db

Par défaut le serveur Firefox Sync utilise SQLite, si vous souhaitez utiliser MySql voici la procédure :

Installation de MySql :

bash
apt-get insall mysql-server

Ajouter une base de donnée dans MySql :

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

Installation de « mysql-python » dans le dossier server-full :

bash
bin/easy_install Mysql-Python

Modification de fichier de configuration pour mysql :

ini
[nodes]
fallback_node = http://votre_nom_dns:5000/

storage

sqluri = mysql:////ffsync:mon_mot_de_passe@localhost/ffsync

auth

sqluri = mysql:////ffsync:mon_mot_de_pass@localhost/ffsync

Fin du paramétrage du fichier de configuration avec MySql.

Dans votre fichier de configuration la ligne suivante permet la création d’utilisateur :
(Dès que vos utilisateurs seront ajoutés, je vous conseille de la mettre à « false » rapidement.)

bash
 [auth]
allow_new_users=true

Envoi d’email de récupération du mot de passe Firefox Sync :

bash
 [smtp]
host = localhost
port = 25
sender = [email protected]

Lancement du serveur Firefox Sync :

bash
bin/paster serve development.ini
==> Starting server in PID 29951.
==> serving on 0.0.0.0:5000 view at http://127.0.0.1:5000

Le serveur fonctionne ! Cependant la tâche doit être lancée manuellement.
Voyons comment automatiser la tâche avec un script au démarrage du système .

Création d’un groupe et d’un utilisateur pour le lancement du script :

Création d’un groupe pour le lancement de Firefox Sync :

bash
groupadd sync

Création d’un utilisateur dans le groupe « sync » pour le lancement de Firefox Sync :

bash
useradd -d /var/www/server-full -g sync -r -s /bin/bash firefox

Création d’un dossier de log pour firefox :

bash
mkdir /var/log/firefox

Donner les droits sur les dossiers « server-full » et « /var/log/firefox »:

bash
chown -R firefox:sync /var/www/server-full && chown -R firefox:sync /var/log/firefox

Création du script de lancement de Firfox Sync :

bash
nano /etc/init.d/ffsync.sh

Écrire ceci dans le fichier :

bash
 #!/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/firefox/sync-messages.log
PID=`pidof -x -o %PPID paster`
case "$1" in
  start)
    echo "Starting Mozilla Sync HomeServer"
    [ ! -d $MESSAGEDIR ] && mkdir -p $MESSAGEDIR
    su firefox -c "cd /var/www/server-full/ && 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 exécutable le script :

bash
chmod +x ffsync.sh

Ajouter le script au démarrage du système :

bash
insserv ffsync.sh

Pour faire un test rien ne vaut un redémarrage système !
Pour s’assurer que le lancement est effectif :

bash
netstat -tan
=> tcp  0  0 0.0.0.0:5000  0.0.0.0:*               LISTEN

Configuration du client firefox Sync

Sous Windows appuyez sur la touche « ALT » et sur la barre du menu « outils » puis « configurez sync« :

Sélectionner « créer un nouveau compte » (exemple) :

C’est terminé ! N’oubliez pas de désactiver l’inscription utilisateur dans le fichier de configuration.
Les logs vous renseignerons pour tous les problèmes qui surviendront( /var/log/firefox/).
Profitez bien de votre serveur Firefox Sync.

Conclusion

J'ai détaillé ici la mise en place d'un serveur Firefox Sync personnel sous Debian 7, avec le choix entre une base SQLite ou MySQL, ainsi que la création d'un script de démarrage automatique du service. Héberger soi-même la synchronisation de son navigateur permet de garder la main sur ses marque-pages, mots de passe et historiques plutôt que de dépendre des serveurs de Mozilla. Une fois le compte créé côté client, je recommande de désactiver rapidement l'inscription libre des nouveaux utilisateurs pour sécuriser le serveur.