* 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ằngmariadb-server
hoặcmysql-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ặcnginx
).
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 audiences
t
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 -e
lệ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 uWSGI
qua Pip:
pip install uwsgi
Cài đặt uWSGI
t 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