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