Firefox Sync Server in einem Freenas Jail

Ich möchte auf FreeNAS 12 einen Firefox Sync Server installieren damit die die Bookmarks und Cookies zwischen zwei Rechner lokal in meinem eigenen Netzwerk austauschen kann ohne diese Daten auf externen Servern zu speichern.

Auch hier möchte ich die Funktion von FreeNAS nutzen so einen Prozess in einem eigenen Jail ablaufen zu lassen. Meine Notizen lehnen sich im wesentlichen an diesem Forenbeitrag

Ich starte von einem normalen Standard Jail auf FreeNAS mit DNS Eintrag und wechsele über die FreenAS Oberfläche auf eine Shell

pkg update
pkg upgrade
pkg install gmake python py27-pip py27-virtualenv py27-sqlite3 git
mkdir -p /usr/local/www/ffsync
mkdir -p /usr/local/www/ffsync/logs
cd /usr/local/www/ffsync
git clone https://github.com/mozilla-services/syncserver
cd ./syncserver

An dieser stelle hilft das gennnante Dokument leider nicht weiter das es auf einer älteren FreeNAS Version basiert bei dem python-27 der Standard war. Startet man den gmake Befehl bekommt man eine Fehlermeldung das virtuealenv nicht installiert ist. Der Aufruf von “python” ruft aber python3 auf.

    rm /usr/local/bin/python 
    cd /usr/local/bin
    ln -s python2.7 python 

Dann geht es weiter

    cd /usr/local/www/ffsync/syncserver
    gmake serve

Der Sync Server wird compiliert und auch gleich gestartet. Das brechen wir erstmal mit CTRL-C ab. Dann erzeugen wir das “Geheimnis” und passen die syncserver.ini an

     head -c 20 /dev/urandom | sha1sum
     vi syncserver.ini
       host = ffsync.yourdomain.tld
       secret = 31........237d43f64104cea
       public_url = http://ffsync.your.domain:5000/

Um den Server zu einfacher stoppen zu können starte ich zuerst im Vordergrund

/usr/local/www/ffsync/syncserver/local/bin/gunicorn --log-file=/usr/local/www/ffsync/logs/ffsync.log --paste /usr/local/www/ffsync/syncserver/syncserver.ini

Wenn man jetzt mit dem Browser auf die public_url geht sollte man eine Meldung “it works!” erhalten. Die Konfiguration des Browswer für den Sync Server überspringe ich an dieser Stelle. Nach einem ersten Sync sollte dann in “about:config” unter dem Eintrag “services.sync.lastSync” die aktuelle Uhrzeit stehen.

Da ich hier in meinem eigenen Netz bin verzichte ich erstmal auf ein NGinx Frontend mit https. Dies sollte man natürlich in weniger freundlichen Umgebungen auf jeden Fall einrichten.

Fehlt jetzt noch der “Autostart” des Dienstes. Um es einfach zu machen werde ich den Dienst wir hier beschreiben über einen cron Eintrag starten

crontab -l
@reboot /usr/local/www/ffsync/syncserver/local/bin/gunicorn --daemon --log-file=/usr/local/www/ffsync/logs/ffsync.log --paste /usr/local/www/ffsync/syncserver/syncserver.ini