Το Firefox Sync είναι μια δυνατότητα συγχρονισμού του προγράμματος περιήγησης που σας επιτρέπει να μοιράζεστε τα δεδομένα και τις προτιμήσεις σας (όπως τους σελιδοδείκτες, το ιστορικό, τους κωδικούς πρόσβασης, τις ανοιχτές καρτέλες και τα εγκατεστημένα πρόσθετα) σε όλες τις συσκευές σας. Η Mozilla προσφέρει επίσης μια εφαρμογή "διακομιστή συγχρονισμού" για χρήση με το Firefox Sync για χρήστες και επιχειρήσεις που προτιμούν να φιλοξενούν τα δικά τους δεδομένα συγχρονισμού. Αυτό το άρθρο σας δείχνει πώς να ρυθμίσετε το Mozilla Sync Server.
Προαπαιτούμενα
- Μια πρόσφατα αναπτυγμένη παρουσία διακομιστή Vultr Debian 8, Debian 9 ή Ubuntu 16.04.
- Ένας χρήστης sudo .
Εγκαταστήστε τα απαραίτητα πακέτα
Ενημερώστε το σύστημα:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Για να δημιουργήσετε και να εκτελέσετε το Sync Server, θα χρειαστεί να εγκαταστήσετε αυτά τα πακέτα:
python-dev
git
build-essential
(C++ compiler, GCC compiler, make και άλλα απαιτούμενα εργαλεία).
sqlite3
(αν θέλετε να χρησιμοποιήσετε μια βάση δεδομένων MySQL αντί για SQLite
, μπορείτε να αντικαταστήσετε το sqlite3
πακέτο με mariadb-server
ή mysql-server
).
nginx
(διακομιστής Ιστού. Εναπόκειται σε εσάς να επιλέξετε από ποιον διακομιστή ιστού θέλετε να χρησιμοποιήσετε apache2
ή nginx
).
Εγκαταστήστε τα πακέτα:
sudo apt-get install -y git git-core python-dev python-virtualenv build-essential sqlite3 nginx
Κατασκευή του διακομιστή
Θα κλωνοποιήσουμε το αποθετήριο Git του διακομιστή συγχρονισμού πληκτρολογώντας την ακόλουθη εντολή και μετά εισάγουμε το φάκελο:
git clone https://github.com/mozilla-services/syncserver
cd syncserver
Εκτελέστε την εντολή build που θα κατεβάσει τις εξαρτήσεις και θα μεταγλωττίσει τον κώδικα.
make build
Συγχρονισμός διαμόρφωσης διακομιστή
Η διαμόρφωση του διακομιστή συγχρονισμού είναι πολύ απλή, υπάρχουν μόνο μερικές παράμετροι για αλλαγή στο αρχείο διαμόρφωσης ( ./syncserver.ini
).
Ανοίξτε το αρχείο διαμόρφωσης με τον αγαπημένο σας επεξεργαστή κειμένου (για παράδειγμα 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
Η διεύθυνση του διακομιστή σας πρέπει να καθοριστεί μέσω της παραμέτρου public_url
:
public_url = http://fsync.example.com
Σημείωση : η προεπιλεγμένη τιμή του public_url
"http://localhost:5000/" θα λειτουργήσει για σκοπούς δοκιμής στον τοπικό σας υπολογιστή.
Στην sqluri
επιλογή, θα αποσχολιάσουμε και θα βάλουμε την τοποθεσία ή URI
που θα επιτρέψει στον διακομιστή να συνδέσει τη βάση δεδομένων και να αποθηκεύσει τις πληροφορίες:
sqluri = sqlite:////path/to/database/file.db
Εάν θέλετε να χρησιμοποιήσετε άλλο τύπο DB:
sqluri = pymysql://username:[email protected]/sync
Για την secret
παράμετρο " ", θα πρέπει να δημιουργήσουμε ένα μυστικό κλειδί για διακριτικά ελέγχου ταυτότητας:
head -c 20 /dev/urandom | sha1sum
Καταργήστε το σχόλιο της γραμμής της μυστικής παραμέτρου και, στη συνέχεια, αντιγράψτε/επικολλήστε τη συμβολοσειρά που επιστράφηκε στη μυστική παράμετρο:
secret = db8a203aed5fe3e4594d4b75990acb76242efd35
Σημείωση : Εάν δεν βάλετε τίποτα σε αυτήν την παράμετρο, ο διακομιστής θα δημιουργήσει ένα, αλλά θα είναι διαφορετικό κάθε φορά που γίνεται επανεκκίνηση του διακομιστή.
Για την allow\_new\_users
παράμετρο " ", αφαιρέστε την από το σχόλιο και ορίστε την έτσι ώστε true
να επιτρέπει στον λογαριασμό μας να συνδεθεί στον διακομιστή μας για πρώτη φορά:
allow_new_users = true
Στη συνέχεια θα τροποποιήσουμε την audiences
παράμετρο " " και θα βάλουμε το ίδιο πράγμα με την public_uri
παράμετρο " " χωρίς να ξεχάσουμε να αποσχολιάσουμε τη γραμμή:
audiences = http://fsync.example.com
Τέλος, απλώς προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου σας:
forwarded_allow_ips = *
Αυτή η γραμμή θα σας βοηθήσει να αποφύγετε μηνύματα λάθους και ζητήματα εξουσιοδότησης.
Εκκίνηση του διακομιστή συγχρονισμού
Για να ξεκινήσετε τον διακομιστή συγχρονισμού, μπορείτε είτε να ξεκινήσετε την ακόλουθη εντολή:
./path/to/syncserver/local/bin/gunicorn --threads 4 --paste /path/to/syncserver/syncserver.ini &
... ή αυτό:
make serve &
Η πρώτη επιλογή επιτρέπει την επιλογή της θέσης του αρχείου διαμόρφωσης. και επίσης να βάλουμε το όρισμα --threads 4
, το οποίο επιτρέπει την εκχώρηση περισσότερης ισχύος στον διακομιστή συγχρονισμού.
Για να ξεκινήσετε τον διακομιστή κάθε φορά που εκκινείται η παρουσία σας, μπορείτε να προσθέσετε την ακόλουθη γραμμή στο crontab σας πληκτρολογώντας την crontab -e
εντολή:
@reboot ./path/to/syncserver/local/bin/gunicorn --paste /path/to/syncserver/syncserver.ini &
Διαμόρφωση διακομιστή Ιστού
Μπορείτε να χρησιμοποιήσετε διαφορετικούς διακομιστές Ιστού που είναι συμβατοί με το WSGI
πρωτόκολλο. Για παράδειγμα:
Nginx
με το uWSGI.
Apache
σε συνδυασμό με το mod_wsgi.
Nginx
Για το Nginx, πρέπει να χρησιμοποιήσετε τον ενσωματωμένο διακομιστή μεσολάβησης του Nginx όπως φαίνεται παρακάτω:
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
Είναι δυνατό για τους χρήστες Nginx να χρησιμοποιούν μόνο την υποδοχή WSGI.
Εγκατάσταση uWSGI
μέσω Pip:
pip install uwsgi
Εγκαταστήστε uWSGI
μέσω λήψης tarball πηγής:
wget https://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make
Σημείωση : Μετά την κατασκευή, θα έχετε ένα uwsgi
δυαδικό αρχείο στον τρέχοντα κατάλογο.
Μόλις εγκατασταθεί, ξεκινήστε με τις ακόλουθες επιλογές:
uwsgi --plugins python27 --manage-script-name \
--mount /<location>=/path/to/syncserver/syncserver.wsgi \
--socket /path/to/uwsgi.sock
Στη συνέχεια, χρησιμοποιήστε την ακόλουθη διαμόρφωση Nginx:
location /<location>/ {
include uwsgi_params;
uwsgi_pass unix:/path/to/uwsgi.sock;
}
Απάχης
Εγκατάσταση mod_wsgi
:
apt-get install libapache2-mod-wsgi
Στη συνέχεια χρησιμοποιήστε τον ακόλουθο vhost:
<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>
Αφού εγκατασταθεί και διαμορφωθεί ο διακομιστής, θα πρέπει να ρυθμίσετε τις παραμέτρους του προγράμματος-πελάτη Firefox για επιτραπέζιους υπολογιστές ώστε να συνομιλεί με τον νέο σας διακομιστή συγχρονισμού. Πριν ξεκινήσετε, εάν είστε ήδη συνδεδεμένοι με διακομιστές Firefox Sync, πρέπει να αποσυνδεθείτε. Διαφορετικά, η σύνδεση με τον νέο διακομιστή ενδέχεται να μην λειτουργεί.
Αρχικά, ανοίξτε μια νέα καρτέλα και εισαγάγετε την ακόλουθη διεύθυνση:
about:config
Στη γραμμή αναζήτησης, εισαγάγετε identity.sync.tokenserver.uri
και αλλάξτε την τιμή του στη διεύθυνση URL του διακομιστή σας με μια διαδρομή token/1.0/sync/1.5
:
http://sync.example.com/token/1.0/sync/1.5