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 = *
А так же проверьте еще раз файлы конфигураций на правильность используемых доменных имен.