Firefox Sync Syncサーバーのセットアップ

画像



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
      
      





私たちがすべてを正しければ、
 https://sync.domain.com/token/1.0/sync/1.5
      
      



Webサーバーは次のようなものを提供します。



 {"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の同志の労働者の要求に応じて、事前に設定されたmozilla-sync-serverを使用して仮想マシン投稿します

ここからダウンロード(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証明書へのパスフレーズ



誰が気にします-テストし、バグを報告し、必要に応じて修正します。



All Articles