Deblan blog

Installer un serveur Sync (Firefox) à la maison

Dans ma conquête vers auto-suffisance et pour écarter encore plus mes données persos des USA, j'ai décidé d'installer mon propre serveur de synchronisation pour Firefox.

Pour rappel, Firefox permet de synchroniser vos terminaux par le biais d'une fonction "Sync". Ainsi vous concervez les mêmes marque-pages, historique, modules complémentaires, etc. entre les différents terminaux que vous manipulez.

Par défaut, ce sont sur des serveurs à Mozilla où les données sont enregistrées. Elles sont évidément chiffrées mais stockées on ne sait pas trop où....enfin si, aux USA. Certains diront que tant que c'est chiffré, on s'en fiche vers où elles partent et c'est à moitié vraie. Cependant, le jour où l'ago de chiffrement sera cassé, ces données aujourd'hui indéchiffrables le deviendront et je préfère les savoir chez moi.

Comment installer son propre serveur Sync ? C'est très simple et voici les étapes de configuration.

Voici mes contraintes :

  • Un domaine dédié (sync.deblan.org)
  • Transactions HTTP chiffrées (HTTPS)

Pour rappel, je travail sur Debian et j'ai déjà un serveur web Apache installé.

Étape 1 : installation des paquets nécessaires
$ su - 
# aptitude update
# aptitude install python-dev mercurial sqlite3 python-virtualenv libssl-dev libapache2-mod-wsgi
# aptitude clean
# a2enmod wsgi
# service apache2 restart
Étape 2 : installation de Sync server

Dans ma procédure de création de vhost pour Apache, je génère systématiquement un nouvel utiliseur unix. Dans le cas de Sync, il s'appel "websync". Son répertoire personnel est chez moi : "/services/web/www/sync.deblan.org".

# su - websync
$ mkdir public_html logs databases
$ chmod 700 logs databases
$ hg clone https://hg.mozilla.org/services/server-full
$ cd server-full
$ make build
Étape 3 : configuration de Sync server

Dans le répertoire server-full/" se trouve un fichier "development.ini". Éditez-le et ajoutez ces informations. Ici je vais conserver SQLite pour enregistrer les données.

# De base, Sync server permet à n'importe qui de s'inscrire pour synchroniser ses données.
# Vous pouvez activez un Captcha pour bloquer les bots
# Passez simplement use à true
[captcha]
use = false
public_key = 6Le8OLwSAAAAAK-wkjNPBtHD4Iv50moNFANIalJL
private_key = 6Le8OLwSAAAAAEKoqfc-DmoF4HNswD7RNdGwxRij
use_ssl = true

[storage]
backend = syncstorage.storage.sql.SQLStorage
# À modifier selon vos répertoires
sqluri = sqlite:////services/web/www/sync.deblan.org/databases/storage.db
standard_collections = false
use_quota = true
# Un quota de 25Mo : par défaut à 5Mo
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
# À modifier selon vos répertoires
sqluri = sqlite:////services/web/www/sync.deblan.org/databases/auth.db
create_tables = true
pool_size = 100
pool_recycle = 3600
create_tables = true
# Décommentez la ligne suivante pour ne pas autoriser d'inscription.
# Note : il est nécessaire des les autoriser le temps d'ajouter votre compte
# allow_new_users = false

[nodes]
# Nécessaire pour que ça puisse fonctionner...
fallback_node = https://sync.deblan.org/

[smtp]
host = localhost
port = 25
sender = no-reply@deblan.fr

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

[reset_codes]
backend = services.resetcodes.rc_sql.ResetCodeSQL
# À modifier selon vos répertoires
sqluri = sqlite:////services/web/www/sync.deblan.org/databases/reset.db
create_tables = True
Étape 4 : configuration d'Apache

Dans ce Vhost, j'utilise le module WSGI (pour jouer avec Python) mais également Suexec pour ma politique de sécurité. J'ai également des certificats SSL qui ne sont pas ceux par défaut. Il ne faut donc pas faire un "bête" copié/collé car ça ne va pas fonctionner.

# cat /etc/apache2/sites-available/sync.deblan.org.443 
<IfModule mod_ssl.c>
<VirtualHost *:443>
	# À modifier
	ServerName sync.deblan.org
	# À modifier (public_html est un répertoire vide)
	# /var/www/service-web/www/ == /services/web/www/ (contraintes php-fastcgi)
	# @see http://www.deblan.tv/post/407/Serveur-web-Debian-Apache2-et-FastCGI
	DocumentRoot /var/www/service-web/www/sync.deblan.org/public_html
	SuexecUserGroup websync webgroup
	ErrorLog /services/web/logs/sync.deblan.org.log
	CustomLog /services/web/logs/sync.deblan.org.log combined
	CustomLog /services/web/logs/sync.deblan.org.log trafic

	WSGIProcessGroup sync
	# Modifier "websync" selon le user créé pour l'occasion
	WSGIDaemonProcess sync user=websync group=websync processes=2 threads=25
	WSGIPassAuthorization On
	# À modifier selon vos répertoires
	WSGIScriptAlias / /services/web/www/sync.deblan.org/server-full/sync.wsgi

	# À modifier selon vos répertoires
	<Directory /var/www/service-web/www/sync.deblan.org>
		Options -Indexes SymLinksIfOwnerMatch MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
		Options +ExecCGI
	</Directory>

	# Ne fonctionnera pas tel quel chez vous
	SSLEngine on
	SSLCertificateFile    /etc/apache2/ssl/deblan/org/deblanorg.crt
	SSLCertificateKeyFile /etc/apache2/ssl/deblan/org/deblanorg.key
	SSLCACertificateFile  /etc/apache2/ssl/deblan/org/GandiStandardSSLCA.pem

	BrowserMatch MSIE [2-6] \
		nokeepalive ssl-unclean-shutdown \
		downgrade-1.0 force-response-1.0
	BrowserMatch MSIE [17-9] ssl-unclean-shutdown
</VirtualHost>
</IfModule>
# a2ensite sync.deblan.org.443
# service apache2 reload

Il ne reste plus qu'à supprimer et recréer un compte Sync en spécifiant que vous utilisez un serveur personnel. Si tout se passe bien, les bases de données SQLite vont être générées. En cas de problème, il "suffira" de regarder ce que les logs racontent coté serveur et de regarder ceux présents chez vous via : about:sync-log.


  • hma
    • ,
    • simon ,ton idée est très intéressante mais un peu compliquée
      mais tous ceci ne coûte rien ?
  • Simon
    • ,
    • Ça me coûte une machine chez moi mais elle existait déjà puisque je m'auto-héberge depuis plusieurs années maintenant.

Ajouter un commentaire

Vous pouvez utiliser du markdown.Afficher l'aide.