Firefox Sync

Logo Firefox Sync

Environnement

  • Conteneur LXC Proxmox
  • Ubuntu 18.04
  • Reverse-proxy qui redirige les requêtes HTTPS vers le serveur Sync

Installation

Installer Python, Virtualenv, SQLite, Git et les outils de compilation :

apt install python-dev git-core python-virtualenv g++ sqlite3

Télécharger la dernière version du serveur et la compiler :

cd /opt
git clone https://github.com/mozilla-services/syncserver
cd syncserver
make build

Configuration

Créer un utilisateur sans privilège pour lancer le serveur :

useradd -s /usr/sbin/nologin -r -M syncserver
chown syncserver:www-data -R /opt/syncserver
chmod 750 -R /opt/syncserver

Tester l'installation du serveur :

make test

Générer une clé secrète pour signer les jetons d'authentification :

head -c 20 /dev/urandom | sha1sum

Éditer le fichier /opt/syncserver/syncserver.ini de la manière suivante :

cp -p /opt/syncserver/syncserver.ini /opt/syncserver/syncserver.ini.bak
nano /opt/syncserver/syncserver.ini
[syncserver]
public_url = https://sync.domaine.lan/
identity_provider = https://sync.domaine.lan/
sqluri = sqlite:////opt/syncserver/syncserver.db
secret = cle_secrete_de_signature_des_jetons_d_authentification

Démarrer le serveur :

make serve

Dans Firefox, saisir about:config dans la barre d'adresse et modifier la valeur identity.sync.tokenserver.uri comme suit :

identity.sync.tokenserver.uri       https://sync.domaine.lan/token/1.0/sync/1.5

Dans Firefox, créer un compte (si besoin) et lancer la synchronisation.

Une fois tous les comptes synchronisés, pour éviter que d'autres comptes utilisent le serveur, dans le fichier /opt/syncserver/syncserver.ini, décommenter le paramètre allow_new_users = false :

nano /opt/syncserver/syncserver.ini
[syncserver]
allow_new_users = false

Créer un service Systemd pour démarrer automatiquement le serveur :

nano /etc/systemd/system/syncserver.service
[Unit]
Description=A gunicorn server running Mozilla's Firefox sync server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
User=syncserver
Group=www-data
Umask=007
Restart=on-abort
WorkingDirectory=/opt/syncserver
ExecStart=/opt/syncserver/local/bin/gunicorn --daemon --paste /opt/syncserver/syncserver.ini
ExecStop=/usr/bin/pkill --pidfile /var/run/syncserver.pid
PIDFile=/var/run/syncserver.pid
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Mise à jour

cd /opt/syncserver
git stash
git pull
git stash pop
make build

Supprimer les données sur les serveurs Mozilla (à exécuter sur le serveur Sync) :

pip install PyFxA
python /opt/syncserver/bin/delete_user_data.py user@domaine.lan 

Sources

https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html#run-your-own-sync-1-5-server

https://github.com/mozilla-services/syncserver

https://keans.de/firefox-sync.html