
Firefox Syncは、デスクトップバージョンとAndroidの両方で、ユーザーがFirefoxがインストールされているさまざまなデバイス間で、履歴、パスワード、ブックマーク、開いているタブ、さらにはアドオンを完全に転送できるサービスです。
Firefox Syncは、認証サービス(FirefoxアカウントAPI)と同期サーバー(Firefox Sync)の2つのエンティティによって実装されます。
パスワード、ブックマーク、その他の人生の楽しみを同期するためにサーバーをセットアップするというアイデアは、ずっと前に生まれました。 職業別では、LastPassやGoogleアカウントなどの公共サービスを本当に信用していません。 私の意見では、個人データはサーバーに保存する必要があります。
さて、十分な歌詞は、セットアップに取りかかりましょう。
更新:
この方法は、バージョン29より古いfirefoxで機能し、同期サーバーバージョン1.5の構成について説明します。
Debianを実行しているサーバーのカスタマイズが提供されます。
いくつかの同期スキームを実装できます。
1. FirefoxアカウントAPI + Firefox Sync Server
2. FirefoxアカウントAPI +同期サーバー
3.アカウントAPI +同期サーバー
私は2番目のオプションに決めました。
サーバーにはapache2 Webサーバーと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 600 /var/www/db.sql
注意してください!
私の構成では、 db.sqlファイルを/ var / www /ディレクトリに配置しました。サーバーは同期にのみ使用され、Apacheはこのファイルを参照しないためです。
他のvirthostsが/ var / wwwを見ている場合は、データベースファイルを別の場所に置きます。
HTTPS経由で同期サーバーに接続します。
これを行うには、Apacheを構成します。
$ cat /etc/apache2/sites-available/sync.domain.com.conf
<VirtualHost *:80> ServerName sync.domain.com Redirect permanent / https://sync.domain.com/ ErrorLog /var/log/apache2/sync/error.log CustomLog /var/log/apache2/sync/access.log combined </VirtualHost> <VirtualHost *:443> Servername sync.domain.com ServerAdmin webmaster@domain.com DocumentRoot /var/www/syncserver WSGIProcessGroup sync.domain.com WSGIDaemonProcess sync.domain.com user=www-data group=www-data processes=2 threads=25 python-path=/var/www/syncserver/local/lib/python2.7/site-packages WSGIPassAuthorization On WSGIScriptAlias / /var/www/syncserver/syncserver.wsgi 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 <Directory /var/www/syncserver> Order deny,allow Allow from all </Directory> </VirtualHost>
自己署名鍵を生成します。
$ cd /etc/apache2/ssl/ $ openssl genrsa -des3 -out server.key 1024 $ openssl req -new -key server.key -out server.csr $ cp server.key sync.domain.com.key $ openssl rsa -in sync.domain.com.key -out server.key $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt $ cp server.crt sync.domain.com.crt $ cp server.key sync.domain.com.key
ログ用のディレクトリを作成します。
$ mkdir /var/log/apache2/sync/ $ touch /var/log/apache2/sync/error-ssl.log $ touch /var/log/apache2/sync/access-ssl.log $ touch /var/log/apache2/sync/error.log $ touch /var/log/apache2/sync/access.log $ chown -R www-data:www-data /var/log/apache2/sync/
新しい仮想ホストをアクティブ化します。
$ a2ensite sync.domain.com
そして、Apacheを再起動します。
service apache2 restart
私たちがすべてを正しければ、
Webサーバーは次のようなものを提供します。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キーはデフォルト値を取ります。
PS
残念ながら、fxa-custom-server-addonを使用してAndroidの携帯電話との同期を設定することはできませんでした。誰かが成功した場合は、コメントを登録解除してください。
ご清聴ありがとうございました。
更新
Godlessの同志の
ここからダウンロード(457.7 MB)。
Proxmoxバックアップ形式の仮想マシンのイメージは、ホストにデプロイするだけです。
また、構成で少数の編集を行う必要があります。
$ cat /home/syncserv/syncserver.ini
... [syncserver] public_url = https://___IP/ ( ) ... secret = _ (head /dev/urandom |md5sum) ...
また、Apache config、新しいオプション(SSLv3およびSSLv2を無効にした-Anisotropicに感謝)も更新しました。
<VirtualHost *:80> ServerName sync.domain.com Redirect permanent / https://sync.domain.com/ ErrorLog /var/log/apache2/sync/error.log CustomLog /var/log/apache2/sync/access.log combined </VirtualHost> <VirtualHost *:443> Servername sync.domain.com ServerAdmin webmaster@domain.com DocumentRoot /home/syncserv WSGIProcessGroup sync.domain.com WSGIDaemonProcess sync.domain.com user=syncserv group=syncserv processes=2 threads=25 python-path=/home/syncserv/local/lib/python2.7/site-packages WSGIPassAuthorization On WSGIScriptAlias / /home/syncserv/syncserver.wsgi ErrorLog /var/log/apache2/sync/error-ssl.log CustomLog /var/log/apache2/sync/access-ssl.log combined SSLEngine on SSLProtocol ALL -SSLv2 -SSLv3 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 <Directory /home/syncserv> Order deny,allow Allow from all </Directory> </VirtualHost>
SQLiteデータベースは/var/lib/sql/db.sqlにあります
habr2014のルートパスワードだけでなく、SSL証明書へのパスフレーズ
誰が気にします-テストし、バグを報告し、必要に応じて修正します。