Thiết lập Firefox Sync Server trên Debian 9

Những thứ cần chuẩn bị:

  • Phiên bản vps Debian 8, Debian 9 hoặc Ubuntu 16.04
  • Một người dùng với quyền sudo.

Firefox Sync là một tính năng đồng bộ hóa trình duyệt cho phép bạn chia sẻ dữ liệu và tùy chọn của mình (chẳng hạn như dấu trang, lịch sử, mật khẩu, tab đang mở và tiện ích bổ sung đã cài đặt) trên tất cả các thiết bị của bạn. Mozilla cũng cung cấp một ứng dụng “synchronization serve” để sử dụng với Firefox Sync cho người dùng và doanh nghiệp muốn lưu trữ dữ liệu đồng bộ hóa của riêng họ. Bài viết này hướng dẫn bạn cách thiết lập Mozilla Sync Server.

1. Cài đặt các gói cần thiết

Cập nhật hệ thống:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Để xây dựng và chạy Sync Server, bạn sẽ cần cài đặt các gói sau:

  • python-dev
  • git
  • build-essential (Trình biên dịch C ++, trình biên dịch GCC, thực hiện và các công cụ cần thiết khác).
  • sqlite3 (nếu bạn muốn sử dụng cơ sở dữ liệu MySQL thay thế SQLite, bạn có thể thay thế sqlite3 bằng mariadb-serverhoặc mysql-server).
  • nginx(máy chủ web). Tùy thuộc vào bạn để chọn máy chủ web bạn muốn sử dụng từ apache2 hoặc nginx).

Cài đặt các gói:

sudo apt-get install -y git git-core python-dev python-virtualenv build-essential sqlite3 nginx

2. Xây dựng máy chủ

Mình sẽ sao chép kho lưu trữ Git của máy chủ đồng bộ hóa bằng cách nhập lệnh sau và sau đó nhập thư mục:

git clone https://github.com/mozilla-services/syncserver
cd syncserver

Chạy lệnh xây dựng sẽ tải xuống các phụ thuộc và biên dịch mã.

make build

3. Cấu hình máy chủ đồng bộ hóa

Cấu hình của máy chủ đồng bộ hóa rất đơn giản, chỉ có một số tham số cần thay đổi trong tệp cấu hình ( ./syncserver.ini).

Mở tệp cấu hình bằng trình soạn thảo văn bản yêu thích của bạn (ví dụ nano ./syncserver.ini).

[server:main]
use = egg:gunicorn
host = 0.0.0.0
port = 5000
workers = 1
timeout = 30

[app:main]
use = egg:syncserver

[syncserver]
# This must be edited to point to the public URL of your server,
# i.e. the URL as seen by Firefox.
public_url = http://localhost:5000/

# This defines the database in which to store all server data.
#sqluri = sqlite:////tmp/syncserver.db

# This is a secret key used for signing authentication tokens.
# It should be long and randomly-generated.
# The following command will give a suitable value on *nix systems:
#
#    head -c 20 /dev/urandom | sha1sum
#
# If not specified then the server will generate a temporary one at startup.
#secret = INSERT_SECRET_KEY_HERE

# Set this to "false" to disable new-user signups on the server.
# Only request by existing accounts will be honoured.
# allow_new_users = false

# Set this to "true" to work around a mismatch between public_url and
# the application URL as seen by python, which can happen in certain reverse-
# proxy hosting setups.  It will overwrite the WSGI environ dict with the
# details from public_url.  This could have security implications if e.g.
# you tell the app that it's on HTTPS but it's really on HTTP, so it should
# only be used as a last resort and after careful checking of server config.
force_wsgi_environ = false

[browserid]
# Uncomment and edit the following to use a local BrowserID verifier
# rather than posting assertions to the mozilla-hosted verifier.
# Audiences should be set to your public_url without a trailing slash.
#backend = tokenserver.verifiers.LocalVerifier
#audiences = https://localhost:5000

# By default, syncserver will accept identity assertions issues by
# any server. You can restrict this by setting the below to a list
# of allowed issuer domains.
#allowed_issuers = www.mysite.com myfriendsdomain.org

Địa chỉ máy chủ của bạn phải được chỉ định thông qua tham số public_url:

public_url = http://fsync.example.com

Lưu ý : giá trị mặc định của public_url“http: // localhost: 5000 /” sẽ hoạt động cho mục đích thử nghiệm trên máy cục bộ của bạn.

Trong sqluri, mình sẽ bỏ ghi chú và đặt vị trí hoặc URI điều đó sẽ cho phép máy chủ kết nối cơ sở dữ liệu và lưu trữ thông tin:

sqluri = sqlite:////path/to/database/file.db

Nếu bạn muốn sử dụng một loại DB khác:

sqluri = pymysql://username:password@db.example.com/sync

Đối với secret “”, sẽ phải tạo khóa bí mật cho mã thông báo xác thực:

head -c 20 /dev/urandom | sha1sum

Bỏ ghi chú dòng của tham số và sau đó sao chép / dán chuỗi trả về vào tham số bí mật:

secret = db8a203aed5fe3e4594d4b75990acb76242efd35

Lưu ý : Nếu bạn không đặt bất kỳ thứ gì vào tham số này, máy chủ sẽ tạo một tham số nhưng nó sẽ khác mỗi khi máy chủ được khởi động lại.

Đối với allow\_new\_users, hãy bỏ ghi chú và đặt nó là true để cho phép tài khoản của chúng tôi kết nối với máy chủ của chúng tôi lần đầu tiên:

allow_new_users = true

Sau đó, sẽ sửa đổi audiencest

audiences = http://fsync.example.com

Cuối cùng, chỉ cần thêm dòng sau vào cuối tệp của bạn:

forwarded_allow_ips = *

Dòng này sẽ giúp bạn tránh các thông báo lỗi và các vấn đề về ủy quyền.

4. Khởi động máy chủ đồng bộ hóa

Để khởi động máy chủ đồng bộ hóa, bạn có thể khởi chạy lệnh sau:

./path/to/syncserver/local/bin/gunicorn --threads 4 --paste /path/to/syncserver/syncserver.ini &

… hoặc cái này:

make serve &

Tùy chọn đầu tiên cho phép chọn vị trí của tệp cấu hình; và cũng để đặt đối số --threads 4, cho phép gán nhiều quyền hơn cho máy chủ đồng bộ hóa.

Để khởi động máy chủ mỗi khi phiên bản của bạn khởi động, bạn có thể thêm dòng sau vào crontab của mình bằng cách gõ crontab -elệnh:

@reboot ./path/to/syncserver/local/bin/gunicorn --paste /path/to/syncserver/syncserver.ini &

5. Cấu hình máy chủ web

Bạn có thể sử dụng các máy chủ web khác nhau tương thích với WSGI. Ví dụ:

  • Nginx với uWSGI.
  • Apache kết hợp với mod_wsgi.

Nginx

Đối với Nginx, bạn phải sử dụng proxy tích hợp của Nginx như hình dưới đây:

server {
        listen  80;
        server_name fsync.example.com;

        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://127.0.0.1:5000/;
        }
}

Nginx + uWSGI

Người dùng Nginx chỉ có thể sử dụng ổ cắm WSGI.

Cài đặt uWSGIqua Pip:

pip install uwsgi

Cài đặt uWSGIt thông qua tarball:

wget https://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make

Lưu ý : Sau khi xây dựng, bạn sẽ có một uwsgi trong thư mục hiện tại.

Sau khi cài đặt, hãy khởi động nó với các tùy chọn sau:

uwsgi --plugins python27 --manage-script-name \
--mount /<location>=/path/to/syncserver/syncserver.wsgi \
--socket /path/to/uwsgi.sock

Sau đó, sử dụng cấu hình Nginx sau:

location /<location>/ {
  include uwsgi_params;
  uwsgi_pass unix:/path/to/uwsgi.sock;
}

Apache

Cài đặt mod_wsgi:

apt-get install libapache2-mod-wsgi

Sau đó sử dụng vhost sau:

<VirtualHost *:80>
  ServerName sync.example.com
  DocumentRoot /path/to/syncserver
  WSGIProcessGroup sync
  WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25 python-path=/path/to/syncserver/local/lib/python2.7/site-packages/
  WSGIPassAuthorization On
  WSGIScriptAlias / /path/to/syncserver/syncserver.wsgi
  CustomLog /var/log/apache2/sync.example.com-access.log combined
  ErrorLog  /var/log/apache2/sync.example.com-error.log
</VirtualHost>

6. Định cấu hình máy khách (Firefox)

Trước tiên, hãy mở một tab mới và nhập địa chỉ sau:

about:config

Trong thanh tìm kiếm, hãy nhập identity.sync.tokenserver.uri và thay đổi giá trị của nó thành URL của máy chủ của bạn với đường dẫn token/1.0/sync/1.5:

http://sync.example.com/token/1.0/sync/1.5

Leave a Reply