Свой сервер синхронизации для Firefox

Mozilla позволяет развернуть на своем сервере личный Firefox SyncServer. И соответственно в нем держать свои закладки, историю, пароли т.д. У меня есть сервер на Digitalocean (ссылка реферальная) на котором я запускаю docker контейнеры. И соответственно разворачивать SyncServer я так же буду в контейнере. Для этого понадобиться два docker образа: SyncServer и nginx для организации ssl соединения между сервером и браузером. И что бы ими удобно управлять docker-compose.

Итак начнем с установки docker и docker-compose:

 # yum install -y docker docker-compose

Следующим этапом подготовим папки и конфиг docker-compose (не забудьте заменить свой secret и адрес своего домена):

 
# cd ~
# mkdir docker
# mkdir ./docker/nginx
# cd ./docker
# vim docker-compose.yml
version: "2"
services:
  ffsync:
    image: syncserver:latest
    environment:
      - PORT=5000
      - SYNCSERVER_FORCE_WSGI_ENVIRON=true
      - SYNCSERVER_BATCH_UPLOAD_ENABLED=true
      - SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db
      - SYNCSERVER_SECRET=fdsafs543fdsaFF
      - SYNCSERVER_PUBLIC_URL=https://my.domain.ru
    expose:
      - 5000
    restart: always
  nginx:
    image: nginx
    volumes:
      - ./nginx/:/etc/nginx/conf.d/
    ports:
      - 443:443
    environment:
      - NGINX_HOST=my.domain.ru
      - NGINX_PORT=443
    restart: always

Далее создадим конфиг nginx и сгенерируем сертификат:

# cd ./nginx
# openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 10000 -nodes
# vim ffsync.conf
server {
listen 443 ssl;
server_name my.domain.ru;

ssl_certificate /etc/nginx/conf.d/cert.pem;
ssl_certificate_key /etc/nginx/conf.d/key.pem;

location / {
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://ffsync:5000/;
}
}

Запускаем контейнеры:

# cd ..
# docker-compose up -d

Проверяем, что порт 443 слушается и разрешаем его в firewall:

# netstat -ntulp
# firewall-cmd --permanent --add-port=443/tcp --zone=public
# firewall-cmd --reload

Далее настроим наш браузер:
Откроем firefox и введем в поле URL about:config. В поиске найдем identity.sync.tokenserver.uri и изменим его значение на:
https://my.domain.ru/token/1.0/sync/1.5

Обратите внимание, что в эту строку добавляется еще слово token.
После этого перезагружаем браузер и открываем нашу ссылку https://my.domain.ru/token/1.0/sync/1.5
Должны увидеть что-то такое:

После проведенных действий залогинемся в браузере под учеткой Mozilla и нажмем кнопку синхронизации. На этом всё. К сожалению браузер не выдает никаких ошибок, если синхронизация не проходит, поэтому, что бы точно убедиться, что данные нормально синхронизируются, желательно в другом браузере firefox произвести аналогичные настройки и провести синхронизацию. Если данные между браузерами передаются, значит все ок.

Возможные ошибки:
Если вы видите по адресу https://my.domain.ru/token/1.0/sync/1.5 сообщение вида: The public_url setting doesn’t match the application url, нужно добавить строчку в файл конфига
syncserver.ini, который находится в контейнере. Добавим:

[server:main]  
forwarded_allow_ips = *

А так же проверьте еще раз файлы конфигураций на правильность используемых доменных имен.

Добавить комментарий

Ваш адрес email не будет опубликован.