Если вы пользуетесь браузером Mozilla Firefox (Iceweasel), то наверняка знаете о прекраснейшей возможности — синхронизации данных: паролей, закладок, настроек, дополнений и т.д. А обладая собственным сервером на ос линукс, вы можете с лёгкостью организовать своё собственное хранилище.
В версии 1.0 сервис полностью был заменяемым. То есть, в настройках браузера вы могли указать адрес вашего сервера и регистрация аккаунта, и хранение данных производились на вашем сервере. Но начиная с версии 1.5 — сервис синхронизации является лишь частью сервисов Mozilla. Можно по-прежнему настроить свой сервис синхронизации, но регистрация аккаунта будет произведена через сайт Мозилли. А храниться данные будут у вас на сервере. :)
Правда, можно запустить сразу Mozilla Accounts у себя на сервере. Но это, возможно, будет рассмотрено в следующей статье.
Также рекомендую вам в обязательном порядке создать пользователя, от имени которого будет запускаться сервис синхронизации Firefox.
Содержание статьи:
- 1 Установка компонентов
- 2 Настройка Sync Server
- 3 Связка с nginx
- 4 Запуск sync server при помощи screen
- 5 Настройка синхронизации в Firefox
- 6 Обновление Firefox sync server
Установка компонентов
Установите необходимые компоненты:
# aptitude install python-dev git-core python-virtualenv
Теперь вы можете приступить к сборке сервиса из исходных файлов. Но сначала их нужно скопировать посредством git.
# git clone https://github.com/mozilla-services/syncserver
Переходим в папку с исходниками.
# cd syncserver
И собираем…
# make build
Настройка Sync Server
Мой сайт, через который будут синхронизироваться данные, работает по протоколу https, а в качестве веб-сервера выступает nginx. Все запросы на синхронизацию проксируются от nginx к сервису синхронизации. Поэтому и конфигурационные параметры будут приведены с учётом этого.
Конфигурационный файл — syncserver.ini. Откройте его в вашем любимом текстовом редакторе и измените следующие параметры.
[syncserver] public_url = https://mysite.com/dir/
Здесь следует указать, по какому адресу будет доступен сервис синхронизации. Смело вписывайте адрес вашего домена (с https, если поддерживается). Также можно указать путь, как у меня в примере.
sqluri = sqlite:////path/to/database/file.db
Это путь к файлу базы данных в формате SQLite. Файл с данными можно хранить в домашнем каталоге пользователя, от имени которого запускается сервис.
Далее потребуется указать секретный ключ. Выполните в консоли следующую команду:
# head -c 20 /dev/urandom | sha1sum
Команда сгенерирует случайным образом секретный ключ. Раскомментируйте параметр secret и укажите полученный ключ. Например, так:
secret = db8a203aed5fe3e4594d4b75990acb76242efd35
Связка с nginx
Теперь организуем работу сервиса синхронизации и nginx.
Директиву [server:main] в конфигурационном файле syncserver.ini преобразуйте так:
[server:main] use = egg:gunicorn host = 127.0.0.1 port = 5000 workers = 2 timeout = 60
После чего откройте конфигурационный файл nginx с вашим сайтом, добавьте туда следующий location:
server { ... location /dir { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_read_timeout 120; proxy_connect_timeout 10; proxy_pass http://127.0.0.1:5000/; } ... }
И перезапустите nginx. Затем запустите сервис синхронизации:
# local/bin/pserve syncserver.ini
Запуск sync server при помощи screen
Для удобства запуска сервиса синхронизации создайте в папке с сервисом файл .sh с произвольным именем и запишите туда следующее:
#!/bin/bash screen -A -d -m -S ffsync make serve
Это и будет вашим скриптом запуска. :) Останется только запустить его и сервис будет работать в свёрнутом режиме. Развернуть окно можно будет командой screen -x ffsync.
Настройка синхронизации в Firefox
В новой вкладке откройте страницу about:config, напечатав адрес в адресной строке. И найдите параметр services.sync.tokenServerURI. В значении этого параметра нужно будет указать адрес вашего сервера. Например, так:
services.sync.tokenServerURI: http://sync.example.com/token/1.0/sync/1.5
При этом, заменять здесь следует только http://sync.example.com/. Если сервис синхронизации у вас настроен на папку, типа http://sync.example.com/dir/, то этот путь и следует указывать совместно с token/1.0/sync/1.5.
Обновление Firefox sync server
Периодически сервис будет нуждаться в обновлении. А обновлять его можно, выполняя последовательно команды:
cd /path/to/syncserver git stash # сохранить любые локальные в конфигурационный файл git pull # получить последние обновления от github git stash pop # заново применить локальные изменения из конфигурационного файла make build # вытянуть любые обновлённые зависимости
UPD 30.05.2015: В качестве теста, попробовал установить firefox sync на разделе с файловой системой btrfs. Но всякий раз возникала проблема с базой в sqlite. На разделе с ext4 такой ошибки не наблюдал.