Installer Mozilla Sync Server sur Debian
Mozilla Sync Server est un outil permettant de synchroniser plusieurs installations de Mozilla Firefox. Cet outil était à l'origine appelé Mozilla Weave Server. Ce guide vous aide à l'installer sur Debian.
Ce guide a été testé sur :
- Debian 6.0 Squeeze
Pré-requis
Ce guide nécessite un serveur MySQL disposant du script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.
Ce guide nécessite un serveur Apache 2 avec support du PHP disposant du script a2tools disponible dans mon guide Installer Apache 2 sur Debian.
Important : Pour fonctionner correctement, Mozilla Sync requiert que le serveur Apache 2 soit configuré pour gérer le protocole HTTPS.
Paramètres
Renseignez le nom de domaine ou sera disponible l'application :
DOMAIN="mozsync.domaine-exemple.fr"
Renseignez le nom d'hôte de votre serveur MySQL (si vous ne savez pas de quoi il s'agit, ne modifiez pas cette valeur) :
MYSQL_HOST="localhost"
Si votre serveur MySQL n'est pas local, ce guide effectuera une connexion SSH pour y créer la base de données.
Installation
Installez les modules PHP nécessaires au bon fonctionnement de l'application :
command apt-get install bzip2 php5-mysql mysql-client apg
Créez le dossier destiné à contenir l'installation de l'application :
command mkdir --parent "/opt/${DOMAIN}/public"
Mozilla Sync est composé de 2 éléments distincts :
- reg-server qui se charge de l'enregistrement des utilisateurs.
- sync-server qui se charge de la synchronisation avec Mozilla Firefox.
Création de la base de données
Créez la base de données de reg-serveur :
if [ "${MYSQL_HOST}" = "localhost" ]; then MYSQL_PARAMS=$(command mysql-tools create-domain-db "${DOMAIN}") else command echo "Saisissez le mot de passe de l'utilisateur root MySQL :" command read PASSWORD MYSQL_PARAMS=$(command ssh "root@${MYSQL_HOST}" "command mysql-tools create-domain-db '${DOMAIN}' '$(command cat /etc/mailname)' '${PASSWORD}'") fi
Récupérez les paramètres de la nouvelle base de données :
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Initialisez le contenu de la base de données :
echo ' create table users ( id int(11) NOT NULL PRIMARY KEY auto_increment, username varchar(32), password_hash varbinary(128), email varbinary(64), status tinyint(4) default '1', alert text, reset varbinary(32) default null, reset_expiration datetime ) engine=InnoDB; CREATE TABLE `collections` ( `userid` int(11) NOT NULL, `collectionid` smallint(6) NOT NULL, `name` varchar(32) NOT NULL, PRIMARY KEY (`userid`,`collectionid`), KEY `nameindex` (`userid`,`name`) ) ENGINE=InnoDB; CREATE TABLE `wbo` ( `username` int(11) NOT NULL, `collection` smallint(6) NOT NULL default '\''0'\'', `id` varbinary(64) NOT NULL default '\'\'', `parentid` varbinary(64) default NULL, `predecessorid` varbinary(64) default NULL, `sortindex` int(11) default NULL, `modified` bigint(20) default NULL, `payload` longtext, `payload_size` int(11) default NULL, `ttl` int(11) default '\''2100000000'\'', PRIMARY KEY (`username`,`collection`,`id`), KEY `parentindex` (`username`,`collection`,`parentid`), KEY `modified` (`username`,`collection`,`modified`), KEY `weightindex` (`username`,`collection`,`sortindex`), KEY `predecessorindex` (`username`,`collection`,`predecessorid`), KEY `size_index` (`username`,`payload_size`) ) ENGINE=InnoDB; ' | command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}"
Installation de reg-server
Récupérez le numéro du dernier tag de reg-server :
REVISION="$(command wget --quiet --output-document=- \ "http://hg.mozilla.org/services/reg-server/" \ | command grep --max-count=1 '>changeset<' \ | command cut --delimiter='|' --fields=1 \ | command sed -e 's|^.*href="\([^"]*\)".*$|\1|' \ | command cut --delimiter='/' --fields=5)"
Téléchargez les sources :
command wget "http://hg.mozilla.org/services/reg-server/archive/${REVISION}.tar.bz2" \ --output-document="/tmp/reg-server-${REVISION}.tar.bz2"
Décompressez l'archive :
command tar --directory='/tmp' -xjf "/tmp/reg-server-${REVISION}.tar.bz2"
Déplacez les sources vers leur emplacement final :
command mv "/tmp/reg-server-${REVISION}" "/opt/${DOMAIN}/reg-server"
Créez le fichier de configuration :
command cp "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php.dist" \ "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php"
Générez un mot de passe d'administration (Notez précieusement le mot de passe affiché) :
ADMIN_PASSWORD="$(command apg -q -a 0 -n 1 -M NCL)" echo "${ADMIN_PASSWORD}"
Configurez l'application :
command sed -i \ -e "s|^\(.*'WEAVE_AUTH_ENGINE', '\)[^']*\(.*\)\$|\1mysql\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_HOST', '\)[^']*\(.*\)\$|\1${MYSQL_HOST}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_DB', '\)[^']*\(.*\)\$|\1${MYSQL_DB}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_USER', '\)[^']*\(.*\)\$|\1${MYSQL_USER}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_PASS', '\)[^']*\(.*\)\$|\1${MYSQL_PASSWORD}\2|" \ -e "s/^[#]*\(.*'WEAVE_REGISTER_ADMIN_SECRET', \)null\(.*\)\$/\1'${ADMIN_PASSWORD}'\2/" \ -e "s|^[#]*\(.*'WEAVE_SHA_SALT', '\)[^']*\(.*\)\$|\1$(command apg -m 63 -x 63 -n 1 -a 1 -M SNCL -E "'\"|/&\\")\2|" \ -e "s|^[#]*\(.*'WEAVE_PASSWORD_RESET_EMAIL', '\)[^']*\(.*\)\$|\1no-reply@${DOMAIN}\2|" \ "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php"
Supprimez l'archive téléchargée :
command rm "/tmp/reg-server-${REVISION}.tar.bz2"
Installation de sync-server
Récupérez le numéro du dernier tag de sync-server :
REVISION="$(command wget --quiet --output-document=- \ "http://hg.mozilla.org/services/sync-server/" \ | command grep --max-count=1 '>changeset<' \ | command cut --delimiter='|' --fields=1 \ | command sed -e 's|^.*href="\([^"]*\)".*$|\1|' \ | command cut --delimiter='/' --fields=5)"
Téléchargez les sources :
command wget "http://hg.mozilla.org/services/sync-server/archive/${REVISION}.tar.bz2" \ --output-document="/tmp/sync-server-${REVISION}.tar.bz2"
Décompressez l'archive :
command tar --directory='/tmp' -xjf "/tmp/sync-server-${REVISION}.tar.bz2"
Déplacez les sources vers leur emplacement final :
command mv "/tmp/sync-server-${REVISION}" "/opt/${DOMAIN}/sync-server"
Récupérez la configuration du sync-server :
MYSQL_AUTH_HOST="$(command cat "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php" \ | command grep "WEAVE_MYSQL_AUTH_HOST" \ | command sed -e "s|^.*, '\([^']*\)'.*\$|\1|")" MYSQL_AUTH_DB="$(command cat "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php" \ | command grep "WEAVE_MYSQL_AUTH_DB" \ | command sed -e "s|^.*, '\([^']*\)'.*\$|\1|")" MYSQL_AUTH_USER="$(command cat "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php" \ | command grep "WEAVE_MYSQL_AUTH_USER" \ | command sed -e "s|^.*, '\([^']*\)'.*\$|\1|")" MYSQL_AUTH_PASSWORD="$(command cat "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php" \ | command grep "WEAVE_MYSQL_AUTH_PASS" \ | command sed -e "s|^.*, '\([^']*\)'.*\$|\1|")" WEAVE_SHA_SALT="$(command cat "/opt/${DOMAIN}/reg-server/1.0/weave_user_constants.php" \ | command grep "WEAVE_SHA_SALT" \ | command sed -e "s|^.*, '\([^']*\)'.*\$|\1|")"
Créez le fichier de configuration :
command cp "/opt/${DOMAIN}/sync-server/1.1/default_constants.php.dist" \ "/opt/${DOMAIN}/sync-server/1.1/default_constants.php"
Configurez l'application :
command sed -i \ -e "s|^\(.*'WEAVE_STORAGE_ENGINE', '\)[^']*\(.*\)\$|\1mysql\2|" \ -e "s|^\(.*'WEAVE_MYSQL_STORE_READ_HOST', '\)[^']*\(.*\)\$|\1${MYSQL_HOST}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_STORE_READ_DB', '\)[^']*\(.*\)\$|\1${MYSQL_DB}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_STORE_READ_USER', '\)[^']*\(.*\)\$|\1${MYSQL_USER}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_STORE_READ_PASS', '\)[^']*\(.*\)\$|\1${MYSQL_PASSWORD}\2|" \ -e "s|^\(.*'WEAVE_AUTH_ENGINE', '\)[^']*\(.*\)\$|\1mysql\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_HOST', '\)[^']*\(.*\)\$|\1${MYSQL_AUTH_HOST}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_DB', '\)[^']*\(.*\)\$|\1${MYSQL_AUTH_DB}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_USER', '\)[^']*\(.*\)\$|\1${MYSQL_AUTH_USER}\2|" \ -e "s|^\(.*'WEAVE_MYSQL_AUTH_PASS', '\)[^']*\(.*\)\$|\1${MYSQL_AUTH_PASSWORD}\2|" \ -e "s|^\([ \t]*\)[#]*\(.*'WEAVE_SHA_SALT', '\)[^']*\(.*\)\$|\1\2${WEAVE_SHA_SALT}\3|" \ "/opt/${DOMAIN}/sync-server/1.1/default_constants.php"
Afin de corriger un bug dans le serveur, commentez une ligne d'erreur :
command sed -i \ -e 's|.*no standard locale available.*|//&|' \ -e 's|.*Database Unavailable.*|//&|' \ "/opt/${DOMAIN}/sync-server/1.1/weave_user/mysql.php"
Supprimez l'archive téléchargée :
command rm "/tmp/sync-server-${REVISION}.tar.bz2"
Configuration du serveur HTTP
Mettez en place la configuration Apache 2 adéquate à l'aide de a2tools :
command a2tools add-ssl-custom "${DOMAIN}" " DocumentRoot /opt/${DOMAIN}/public/ <Directory \"/opt/${DOMAIN}/\"> Options Indexes FollowSymLinks AllowOverride none Order allow,deny Allow from all </Directory> Alias /1.0 /opt/${DOMAIN}/sync-server/1.1/index.php Alias /user/1.0 /opt/${DOMAIN}/reg-server/1.0/index.php Alias /user/1 /opt/${DOMAIN}/reg-server/1.0/index.php Alias /misc/1.0/captcha_html /opt/${DOMAIN}/reg-server/1.0/captcha.php Alias /weave-registration-static /opt/${DOMAIN}/reg-server/1.0/static Alias /weave-password-reset /opt/${DOMAIN}/reg-server/1.0/forgot_password.php " /etc/apache2/ssl/key.pem /etc/apache2/ssl/cert.pem
Rappel : Mozilla Sync Server nécessite une connexion HTTPS, d'où la nécessiter de disposer d'un certificat SSL (key.pem et cert.pem).
Utilisation
En premier lieu, ajoutez à Mozilla Firefox l'extension :
Important : A partir de Mozilla Firefox 4.0, Sync est intégré directement dans le navigateur. L'installation de l'extension devient inutile.
Une fois l'extension installée :
- allez dans le menu "Outils -> Set up Sync",
- cliquez sur le bouton "Créer un nouveau compte",
- Renseignez vos informations personnelles,
- Pour l'option Serveur, choisissez l'option "Utiliser un serveur personnalisé".
- Dans le champ "URL du serveur", saisissez l'adresse de votre serveur (par exemple : https://mozsync.domaine-exemple.fr),
- Cliquez sur "Suivant",
- Notez précieusement la clef de synchronisation qui vous est alors affichée.
- Cliquez sur "Suivant",
- Cliquez sur "Terminer".
Vous disposez maintenant d'un compte sur votre serveur Mozilla Sync.
Grâce à la clef de synchronisation, vous pouvez synchroniser plusieurs ordinateurs, vous retrouverez ainsi favoris, et mots de passe enregistrés sur tous vos ordinateurs.
Remerciements
- Merci à la fondation Mozilla pour tous les merveilleux logiciels qu'ils fournissent.
- Merci aux développeurs de Mozilla Sync.
- Merci aux auteurs de Labs/Weave/User/1.0/Setup.
- Merci aux auteurs de Labs/Weave/Sync/1.0/Setup
- Merci à E-CARIA pour l'article Installer un serveur Weave sous Windows : base de données MySQL et code PHP.