[Из песочницы] Настройка своего сервера синхронизации Firefox Sync
Firefox Sync, это служба, которая позволяет пользователям переносить полностью свою историю, пароли, закладки, открытые вкладки и даже дополнения между различными устройствами, на которых установлен браузер Firefox, как для десктопной версии, так и для Android.
Firefox Sync реализуется двумя сущностями — сервисом авторизации (Firefox account API) и сервером синхронизации (Firefox Sync).
Давно возникла идея настроить свой сервер для синхронизации паролей, закладок и прочих радостей жизни. По роду деятельности, не очень доверяю публичным сервисам, таким, как LastPass или Google Account. На мой взгляд, приватные данные должны храниться на своем сервере.
Ну да хватит лирики, приступим к настройке.
UPDATE: Этот способ работает для firefox старше версии 29 и описывает конфигурирование сервера синхронизации версии 1.5.
Настройка предлагается для сервера под управлением ОС Debian.Есть возможность реализации нескольких схем синхронизации:1. Firefox account API + Firefox Sync Server2. Firefox account API + свой Sync Server3. Свой account API + свой Sync Server
Я остановился на втором варианте.
Предполагается, что на сервере уже стоит веб-сервер apache2 и сервер баз данных mysql. Последнее, впрочем, необязательно, поскольку я не нашел способа вменяемо подружить сервер синхронизации с БД mysql, и использовал sqlite. При использовании mysql коннектор периодически отваливался от базы данных.
Пусть наш сервер синхронизации будет доступен по адресу sync.domain.com.
Установим необходимые пакеты:
$ sudo apt-get install python-dev git-core python-virtualenv libapache2-mod-wsgi Установку сервера синхронизации будем вести в директорию /var/www/ $ cd /var/www/ $ git clone https://github.com/mozilla-services/syncserver $ cd syncserver $ make build Произведем базовое конфигурирование сервера: $ cat syncserver.ini [server: main] use = egg: Paste#http host = 0.0.0.0 port = 5000
[app: main] use = egg: syncserver
[syncserver] public_url = https://sync.domain.com/
sqluri = sqlite:////var/www/db.sql secret = your_server_key your_server_key может быть любой фразой, я ее сгенерировал так:
head /dev/urandom |md5sum Создадим файл для базы данных: $ touch /var/www/db.sql Поправим права на директорию: $ chown -R www-data: www-data /var/www/ $ chmod 777 /var/www/db.sql ОБРАТИТЕ ВНИМАНИЕ! В своей конфигурации я расположил файл db.sql в директории /var/www/, поскольку сервер используется только для синхронизации, и apache не смотрит на этот файл.
В случае, если в /var/www у вас смотрят другие виртхосты, поместите файл с БД куда-нибудь в другое место.
Обращаться к sync-серверу будем по HTTPS.Для этого настроим apache.
$ cat /etc/apache2/sites-available/sync.domain.com.conf
ErrorLog /var/log/apache2/sync/error-ssl.log CustomLog /var/log/apache2/sync/access-ssl.log combined
SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES128-SHA256: AES128-GCM-SHA256: RC4: HIGH:! MD5:! aNULL:! EDH
SSLCertificateFile /etc/apache2/ssl/sync.domain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/sync.domain.com.key
service apache2 restart Если мы все сделали правильно, то при обращении к https://sync.domain.com/token/1.0/sync/1.5 веб-сервер отдаст нам нечто вроде: {«status»: «error», «errors»: [{«location»: «body», «name»:», «description»: «Unauthorized»}]} Обязательно добавьте свой сертификат в исключения браузера, иначе синхронизация не заработает! Осталось настроить сам браузер.
Заходим в about: config, и меняем значение ключа services.sync.tokenServerURI на
https://sync.domain.com/token/1.0/sync/1.5 После этого авторизуемся в Меню → Настройки → Синхронизация, используя аккаунт Mozilla, и пользуемся.Кстати, если мы отключимся от аккаунта синхронизации, то ключ services.sync.tokenServerURI примет значение по умолчанию.P.S. К сожалению, не удалось настроить синхронизацию с мобильным телефоном на Android, используя fxa-custom-server-addon, если у кого-то получится — отпишитесь, пожалуйста, в комментарии.
Всем спасибо за внимание.