Если вы пользуетесь браузером 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 такой ошибки не наблюдал.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь