Warning, this article has been created more than 6 month ago. The information it contains may not be up to date. Héberger les marques pages Firefox - French version Written by Mirabellette / 21 may 2018 / 2 comments Contrairement à ce qui a été écrit, syncserver héberge également les préférences, les mots de passe, les onglets, les marques pages, les addons et l'historique. Introduction Afin d'avancer dans mon projet d'indépendance numérique, j'ai décidé d'héberger moi même les marques-pages Firefox. J'utilise le navigateur Firefox de la fondation Mozilla et la fondation a mis à disposition sur Github le dépôt qui contient le nécessaire pour héberger les marques pages. Syncserver héberge uniquement les marques pages, il ne s'occupe pas de l'authentification. Cela signifie qu'en utilisant Syncserver, vous devrez toujours vous authentifiez auprès de Firefox puis vous récupérerez les marques-pages sur le serveur de votre choix. Pour également gérer le processus d'authentification, il faut installer Firefox Accounts Server. Syncserver a été assez pénible à déployer pour deux raisons. La première est que l'on ne trouve pas beaucoup d'information sur son fonctionnement, sur ce qu'il fait avec un dépôt Github assez brut de fonderie. La seconde est qu'il manque des éléments basique qui rendent le travail de déploiement un peu fastidieux. Pour déployer Syncserver correctement et faire ce tutorial, cela m'a pris environ 15 heures. Dans tous les cas, cela fonctionne désormais et vous avez désormais la possibilité de lire cet article. J'espère que vous le trouverai utile. :) Le dépôt Github n'est pas très active, une version en 2018, 2017, 2016 et deux versions en 2015 et 2014. Pour suivre les mises-à-jours, vous pouvez ajouter le lien dudépôt à votre agrégateur RSS. Si l'on se réfère au passé, les mises-à-jours ne devraient pas être trop fréquentes. Configurer Syncserver L'installation a été faite sur une Debian Stretch 9.1 Pour compiler l'application, vous devez pouvoir vous connectez à internet ou à un dépôt Python afin de télécharger toutes les dépendances présentes dans le fichier requirements.txt Installation des dépendences adduser --system --shell /usr/sbin/nologin --no-create-home firefox apt-get install python-dev git-core python-virtualenv g++ sqlite cd /opt sudo -u firefox git clone https://github.com/mozilla-services/syncserver Configuration de base La configuration de Syncserver se trouve dans le fichier syncserver.ini. Vous devez le modifier avant de compiler l'application sans quoi les paramètres ne seront pas pris en compte. Dans le fichier syncserver.ini, vous pouvez modifier la section [server:main] si le besoin s'en fait sentir. La configuration de base est fonctionnelle pour cette partie là. Afin de vous facilitez la vie, j'ai créé un fichier syncserver.ini presque bien configuré. Vous pouvez le trouver à cette adresse here (quelques modifications sont toujours nécessaires). Le paramètre public_url. Modifiez ce paramètre afin qu'il corresponde à l'url publique à travers laquelle sera accessible Syncserver même s'il s'agit d'une machine virtuelle ou un conteneur placé derrière un reverse proxy. public_url = https://example.com Le paramètre sqluri. J'ai décidé d'utiliser une base de données de type Sqlite pour conserver les marques pages car il utilise un moteur de base de données facile à sauvegarder. Vous pouvez choisir la base de données avec le moteur que vous voulez. Attention, si vous n'en définissez aucun, les marques pages seront stockés en mémoire RAM et supprimer au redémarrage de la machine. Pour utiliser une base de données Sqlite, vous devez remplacer le paramètre sqluri = sqlite:////tmp/syncserver.db by : sqluri = sqlite:////opt/syncserver/syncserver_data.db *//// signifie chemin absolu Le paramètre secret. Il est très vivement recommandé de générer une clé secrête. Cette clé est utilisé par les tokens d'authentification. Si vous ne le faites pas, Syncserver générera lui-même cette clé à chaque démarrage. Il peut arriver que la clé générée automatiquement soit faible, en cas de faible disponibilité de valeurs aléatoires. Pour générer une clé de façon solide, vous pouvez utiliser la commande suivante. head -c 20 /dev/urandom | sha1sum Le paramètre allowed_issuers. Dans le cas où vous utilisez le système d'authentification par défaut, vous pouvez n'autoriser que celui de Firefox ou bien le votre si vous en avez un à disposition. allowed_issuers = api.accounts.firefox.com Le paramètre force_wsgi_environ. J'ai configuré le serveur derrière un reverse proxy Apache2. J'ai fais quelques essais avec la valeur false mais cela ne fonctionnait pas. J'ai par conséquence créé une erreur sur le dépôt Github officiel du projet. On m'a alors conseillé de changer la valeur pour true, cela a fonctionne pour moi. force_wsgi_environ = true Compilation de l'application et démarrage de l'application chown -R firefox:firefox /opt/syncserver cd /opt/syncserver sudo -H -u firefox make build sudo -H -u firefox make test Après cela, si vous executez la commande sudo -u firefox make serve, vous devriez voir quelques lignes indiquant que Syncserver est correctement lancé et écoute sur le port par défaut (si c'est le cas). Pour information, vous ne verrez pas de texte si la synchronisation de vos marques pages fonctionne ou non. Une fois que syncserver a bien collecté les marques-page de votre navigateur. Vous pouvez modifier le fichier syncserver.ini et changer le paramètre allowed_issuers = api.accounts.firefox.com pour allowed_issuers = false afin d'être certain d'être le seul utilisateur du logiciel. Mise-à-jour Après avoir compilé l'application, vous devriez mainteant voir deux répertoires: syncserver.egg-info et local. Dans le cas où vous souhaitez mettre à jour Syncserver, vous devrez penser à bien les supprimer. rm -r syncserver.egg-info rm -r local Apache2 virtualhost J'ai créé un virtualhost basique de type reverse proxy avec Apache2. Il redirige juste les flux vers l'adresse ip de votre choix. Vous pouvez trouver le script ici. Je n'ai pas eu besoin de le configurer avec wsgi car je redirige tous les flux directement vers le daemon python. Configuration du navigateur La procédure varie un petit peu selon que vous utilisiez Firefox sur mobile ou ordinateur de bureau. Cela peut également ne pas fonctionner pour les versions très anciennes du navigateur. Je vais uniquement présenté le processus pour la version bureau. Plus d'informations pour la configuration des autres versions accessibles ici Saissisez “about:config” dans le champs url de votre navigateur Vous devriez voir un écran d'avertissement, confirmer votre choix. Faite une recherche pour la clé qui porte le nom “identity.sync.tokenserver.uri”. Double cliquer sur la ligne et remplacer la valeur attribuée à cette clé par la valeur selon l'image et le texte ci-dessous. La syntaxe de la valeur doit être la suivante https://example.com/token/1.0/sync/1.5. Bien que la version actuelle soit la version 1.8, le chemin vers le fichier est resté avec la valeur token/1.0/sync/1.5 ... * en cas de soucis, la valeur originale de votre navigateur est celle qui est affichée dans l'image ci-dessus: https://token.services.mozilla.com/1.0/sync/1.5 Déconnectez vous de votre compte Firefox puis redémarrez Mozilla Firefox afin que les modifications soient prises en compte. Une fois que la navigateur a redémarré, reconnectez-vous à votre compte firefox. Durcissement de la configuration et nettoyage Verrouillage de Syncserver Comme vous pouvez le voir, vous pouvez désormais enregistrer vos marques-pages sur le Syncserver de votre choix. Il est probable que vous souhaitiez limité l'accès à Syncserver à vous-même. Pour éviter qu'une autre personne puisse enregistrer ses données sur votre Syncserver, vous devez modifier le fichier syncserver.ini en modifiant le paramètre allow_new_users = false, supprimer les deux répetoires syncserver.egg-info et local et compilez une nouvelle fois l'application. vim syncserver.ini rm -r syncserver.egg-info rm -r local sudo -u firefox make build Script Systemd De façon surprenante, il n'y a pas de script Systemd, there is no Systemd script mis-à-disposition par le dépôt officiel. Vous pouvez utiliser celui que j'ai créé ici. Vous devez le mettre dans le répertoire /etc/systemd/system/ et executer systemctl daemon-reload then systemctl enable syncserver.service pour l'activer. Après cela, Syncserver démarrera automatiquement à chaque démarrage de la machine. Nettoyage Si vous avez installé le programme make et g++ pour compiler l'application, vous pouvez désormais le supprimer. apt purge make g++ Bien sur, configurer le pare-feu correctement Sources Page wiki officiel du projet Page wiki à propos de la mise-à-jour de Syncserver depuis Firefox 29 Page du dépôt Github Page wiki de ArchiLinux au sujet de Syncserver Le lien vers la demande de support que j'ai faite sur le dépôt Github Réseaux sociaux Si vous avez trouvé cet article interessant, vous pouvez vous abonnez au flux rss du blog et de me suivre sur Mastodon. Comme à l'usage, si vous pensez que cela peut intéresser une personne, vous pouvez le lui partager.