{{tag>firefox sync serveur install}} ====== Installer un serveur sync 1.5 ====== Déclarer un nouveau nom dans votre domaine, il sera nécessaire pour la configuration de l’hôte virtuel Apache. Cloner les sources disponibles sur github https://github.com/mozilla-services/syncserver $ cd /srv $ sudo mkdir ffsync $ sudo chown yoann:yoann ffsync $ git clone https://github.com/mozilla-services/syncserver ffsync Construire l'application $ cd ffsync $ make build ===== Configurer ===== ==== Base de données ==== Sync utilise l'ORM SQLAlchemy, plusieurs systèmes de base de données peuvent être choisis en fonction du serveur de production. Dans mon cas, un serveur de base de données MySQL s’exécutant déjà, je fais le choix de l'utiliser. Via le client mysql: * Créer la base de données * Créer l'utilisateur ayant les droits sur la base Modifier ensuite la configuration du serveur sync via le fichier **syncserver.ini**: # This defines the database in which to store all server data. sqluri = pymysql://user:password@localhost/ffsync ===== Configuration du serveur Apache ===== Charger le module **wsgi** $ sudo apt-get install libapache2-mod-wsgi $ sudo a2enmod wsgi Créer l'utilisateur et le groupe système sync $ sudo addgroup --system sync $ adduser --system --no-create-home --ingroup sync sync Dans mon cas l'utilisateur **sync** existait mais pas le groupe. Créer le groupe système et ajouter l'utilisateur préexistant au groupe sync avec la commande **sudo adduser sync sync** Changer le propriétaire du répertoire de l'application $ sudo chown sync:sync -R ./ffsync Créer le fichier de configuration de l’hôte virtuel apache. Le plus simple étant de créer un de fichier de configuration avec le nom FQDN de l’hôte virtuel suffixé par conf dans le répertoire **/etc/apache2/sites-available**. Ci dessous mon fichier de configuration calqué sur la documentation officielle: ServerName vhost1.tld DocumentRoot "/srv/ffsync" # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on SSLCertificateFile /etc/certificat/fullchain.pem SSLCertificateKeyFile /etc/certificat/privkey.pem WSGIProcessGroup sync WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25 python-path=/srv/ffsync/local/lib/python2.7/site-packages/ WSGIPassAuthorization On WSGIScriptAlias / /srv/ffsync/syncserver.wsgi CustomLog /var/log/apache2/ffsync.phobos-net.fr-access.log combined ErrorLog /var/log/apache2/ffsync.phobos-net.fr-error.log Require all granted Dans le fichier de configuration du serveur sync **syncserver.ini**, modifier la valeur de la variable **public_url** et indiquer le nom de domaine associé à votre hôte virtuel apache: public_url = https://vhost1.tld Tester la configuration Apache et activer l’hôte virtuel: $ sudo apache2ctl configtest $ sudo a2ensite ffsync $ sudo service apache2 reload Via le navigateur saisir l'URL pour vérifier que le serveur répond https://vhost1.domain/ Si tout se passe normalement le message **it works!** apparaît. Dans cas où aucune réponse n'est retournée, penser a vérifier l'état du pare-feu, il doit autoriser https: $ sudo ufw status Si ce n'est pas le cas: $ sudo ufw allow https ===== Mettre à jour syncserver ===== Entrer dans le répertoire de clonage du projet git: $ cd ./ffsync Les commandes ci-dessous permettent de mettre à jour le serveur sync: $ git stash # sauvegarde les modifications apportées aux fichiers conf locaux $ git pull # fusionne les modifications commit depuis github $ git stash pop # ré-applique les configurations locales $ make build ===== Paramétrer les navigateurs clients ===== Paramétrer les navigateurs clients pour qu'ils utilisent votre serveur sync. Dans la barre d'URL taper **about:config** dans la barre de recherche taper **sync** modifier la valeur de la variable identity.sync.tokenserver.uri = https://vhost1.tld/token/1.0/sync/1.5 ===== Test du serveur ===== * Consulter l'URL https://vhost1.tld/token/1.0/sync/1.5, des données JSON doivent être produites par le serveur avec un contenu équivalent: {"status": "error", "errors": [{"location": "body", "name": "", "description": "Unauthorized"}]} * Créer un compte Firefox, une fois authentifié sur le navigateur, lancer la synchro * Vérifier que dans la base mysql l'utilisateur existe (entrée dans la table users) ===== Problèmes rencontrés ===== ==== Coté serveur ==== La synchronisation ne fonctionne pas, le journal d'erreurs Apache pour l’hôte virtuel remonte les messages suivants: [Fri Jun 16 08:08:50 2017] [error] SNIMissingWarning [Fri Jun 16 08:08:50 2017] [error] /srv/ffsync/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:132: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings [Fri Jun 16 08:08:50 2017] [error] InsecurePlatformWarning Le message d'erreur mentionne un lien https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2 décrivant la procédure pour mettre a jour un module python: $ cd ffsync/local/bin $ . activate $ pip install urllib3[secure] $ deactivate $ cd ../.. $ sudo chown -R sync:sync local La synchronisation en fonctionne pas sous android, le périphérique apparaît sur le compte mais les options de synchronisations restent grisées et pas de synchronisation. Cela peut être du a l'utilisation d'un certificat auto-signé. Le problème a été réglé après utilisation d'un certificat Let's Encrypt. ==== Côté client mobile ==== Une fois authentifié depuis le navigateur du mobile, la synchronisation ne fonctionne toujours pas: * Vérifier la syntaxe de l'URI du paramètre **identity.sync.tokenserver.uri** * Se déconnecter et désinstaller/réinstaller Firefox * Se reconnecter Après ces modifications la synchronisation a fini par se faire. Concernant le débogage du client mobile, il est possible d'afficher les erreurs via **adb** adb logcat | grep FxAccounts ===== Références ===== * https://docs.services.mozilla.com/howtos/run-sync-1.5.html * https://blog.x1fr.com/post/2015/06/Firefox-Sync-Token-Server-Android-Selfsigned-Certificate * https://support.mozilla.org/fr/questions/1122333 * https://themimitoof.fr/installer-serveur-firefox-sync/ * https://www.sla99.fr/2018/03/13/mise-place-dun-serveur-de-synchro-firefox/ * https://www.pofilo.fr/post/2019/03/24-syncserver/