Firefox Sync Server

By | Maggio 9, 2014

Firefox Sync, originariamente “Mozilla Weave”, è un software che consente agli utenti di sincronizzare parzialmente segnalibri, cronologia, preferenze, password, moduli compilati, add-ons e aprire le schede su più Firefox installati.Mantiene i propri dati (criptati) sui server Mozilla.In questo articolo si vuole creare un proprio server Weave.

Per questa installazione ho utilizzato il database sql-lite predefinito. Più in là, vorrei aggiungere un backend MySQL e utilizzare gunicorn + Nginx per una soluzione un pò più robusta.

 

Fino ad ora sto testando questa impostazione predefinita ed è stata promettente ,veloce,non ho avuto problemi rilevanti,e funziona bene con i miei dispositivi mobili. Un piccolo avvertimento è che su iphone/pad ho trovato solo iCab per sincronizzare bene,ed è il solo modo.Per il momento è più che accettabile per accedere ai miei segnalibri.In futuro,vorrei trovare una soluzione più elegante.

Prima di tutto sono necessarie alcune cose:

sudo aptitude install python-dev mercurial sqlite3 python-virtualenv

Per installare il server:

hg clone https://hg.mozilla.org/services/server-full
cd server-full
make build

 

Per configurare il server, prima accedere al sito Recapcha per ottenere una chiave API, se si desidera utilizzare questa funzione di sicurezza. Quindi, aprire il file conf. Cambiare fallback_node con la disposizione del IP pubblico del server, modificare il percorso Db come si desidera e abilitare/configurare il Captcha, se lo si desidera.

/server-full/etc/sync.conf

[nodes] 
fallback_node = http://www.openserverproject.com:5000/ 

[storage] 
sqluri = sqlite:////path/to/database/file.db 

[auth] 
sqluri = sqlite:////path/to/database/file.db 

[captcha] 
use = true 
public_key = xxxxxxxxxxxxx 
private_key = xxxxxxxxxxxx 
use_ssl = true

Dopo aver testato il server e configurare gli account utente ricordati di disabilitare i nuovi utenti, altrimenti chiunque sarà in grado di utilizzare il server.

[auth]
allow_new_users = false

Per aggiornare il server è possibile utilizzare:

cd /path/to/server-full
hg pull
hg update
make build

È probabile che chi vuole creare un utente per il server deve aggiornare le autorizzazioni del file DB sql-lite di conseguenza. Il file e la sua directory dovrebbero essere scrivibili dall’utente in cui il server è in esecuzione, e inaccessibile ad altri utenti. Si può impostare la umask del processo per assicurare che i file siano sono leggibili solo da l’utente appropriato. Per esempio:

umask 007
bin/paster serve development.ini

Ecco un esempio di script di avvio per /etc/init.d, modificare i nomi delle cartelle /utenti e assicurarsi che la directory PID_FILE vengano concesse le autorizzazioni del caso.

#!/bin/bash

### BEGIN INIT INFO
# Provides:          paster
# Required-Start:    $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the paster server
# Description:       starts paster
### END INIT INFO

PROJECT=/path/to/server-full
#VIRTUALENV=/home/mozilla-sync/src
#PID_DIR=/var/run/
PID_FILE=/var/run/mozilla-sync/firefox-sync.pid
LOG_FILE=/var/log/firefox-sync.log
USER=ffsyncuser
GROUP=ffsyncgrp
PROD_FILE=/path/to/server-full/development.ini
RET_VAL=0

#source $VIRTUALENV/bin/activate

cd $PROJECT

case "$1" in
start)
bin/paster serve \
--daemon \
--pid-file=$PID_FILE \
--log-file=$LOG_FILE \
--user=$USER \
--group=$GROUP \
$PROD_FILE \
start

;;
stop)
bin/paster serve \
--daemon \
--pid-file=$PID_FILE \
--log-file=$LOG_FILE \
--user=$USER \
--group=$GROUP \
$PROD_FILE \
rm -f $PID_FILE
stop

;;
restart)
bin/paster serve \
--daemon \
--pid-file=$PID_FILE \
--log-file=$LOG_FILE \
--user=$USER \
--group=$GROUP \
$PROD_FILE \
restart

;;
status)
bin/paster serve \
--daemon \
--pid-file=$PID_FILE \
--log-file=$LOG_FILE \
--user=$USER \
--group=$GROUP \
status

;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac

exit $RET_VAL