Eigener Firefox Sync Server auf Synology

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

papiga01

Benutzer
Registriert
03. Jan. 2009
Beiträge
75
Reaktionspunkte
0
Punkte
0
Hallo

ich möchte einen eigenen FF Sync Server auf der DS installieren.
Klappt leider nicht ganz, irgenwo hackt es noch...vielleicht "sieht" jemand die Lösung :-)

Folgendes habe ich bereits gemacht:
per Telnet mit root-Rechten eingeloggt:
PHP:
ipkg install py26-mercurial py26-setuptools make
easy_install virtualenv

nun ist virtualenv im Verzeichnis /opt/local/bin angelegt, deshalb füge ich das Verzeichnis in den Path mit ein.
und restarte die Telnet-Sitzung
also
PHP:
vi ~/.profile
   PATH=$PATH:/opt/local/bin

weiter gehts mit

PHP:
mkdir /usr/local/server-full -p
cd /usr/local/server-full
hg clone https://hg.mozilla.org/services/server-full/ .
make build

nun die Konfiguration:
der Port5000 ist schon von der DS belegt, deshalb weiche ich auf den Port 5100 aus.
PHP:
vi /usr/local/server-full/development.ini
	[server:main]
	port = 5100
	[handler_syncserver_errors]
	args = ('/var/log/sync-error.log',)

und

PHP:
vi /usr/local/server-full/etc/sync.conf
	[auth]
	fallback_node = http://localhost:5100/


Sync Server starten mit:
PHP:
/usr/local/server-full/bin/paster serve development.ini

nun am PC Firefox starten und unter Extras->Sync einrichten
Neues Benutzerkonto anlegen
Eigenen Server verwenden email, pw, http://<DS-IP>:5100/ eingeben


Doch dann kommt der Fehler "Bitte geben Sie eine gültige Server-URL ein"

Wer weiß Rat ?
 
in der sync.conf den backend Eintrag verändern in:
backend = services.user.sql.SQLUser ersetzen
und den fallback_node
in [nodes] verschieben.

dann gehts :-)
 
Hier meine komplette Konfiguration:

/usr/local/server-full/development.ini
PHP:
[DEFAULT]
debug = True
translogger = False
profile = False

[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 5100
use_threadpool = True
threadpool_workers = 60

[app:main]
use = egg:SyncServer
configuration = file:%(here)s/etc/sync.conf

#
# logging
#
[loggers]
keys = root,syncserver

[handlers]
keys = global,syncserver,syncserver_errors

[formatters]
keys = generic

[logger_root]
level = WARNING
handlers = global

[logger_syncserver]
qualname = syncserver
level = ERROR
handlers = syncserver,syncserver_errors
propagate = 0

[logger_syncserver_errors]
qualname = syncserver
level = ERROR
handlers = syncserver_errors
propagate = 0


[handler_global]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = generic

[handler_syncserver]
class = StreamHandler
args = (sys.stderr,)
level = INFO
formatter = generic

[handler_syncserver_errors]
class = handlers.RotatingFileHandler
args = ('/var/log/sync-error.log',)
level = ERROR
formatter = generic

[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S



/usr/local/server-full/etc/syno.conf
PHP:
[global]
clean_shutdown = false

[captcha]
use = false
public_key = xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxx
private_key = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
use_ssl = false

[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri = sqlite:////volume1/web/ffsync/test.db
standard_collections = false
use_quota = true
quota_size = 5120
pool_size = 100
pool_recycle = 3600
reset_on_return = true
display_config = true
create_tables = true

[auth]
backend = services.user.sql.SQLUser
sqluri = sqlite:////volume1/web/ffsync/test.db
pool_size = 100
pool_recycle = 3600
create_tables = true

[nodes]
fallback_node = http://localhost:5100/


[host:localhost]
storage.sqluri = sqlite:////volume1/web/ffsync/test.db

[smtp]
host = localhost
port = 25
sender = weave@mozilla.com

[cef]
use = true
file = syslog
vendor = mozilla
version = 0
device_version = 1.3
product = weave


/usr/syno/etc.defaults/rc.d/S99ffsync.sh
PHP:
#!/bin/sh
#
stop() {
     echo "stop Firefox Sync Server"
     kill `cat /var/run/ffsync.pid` && rm /var/run/ffsync.pid
}

start() {
      echo "start Firefox Sync Server"
      /usr/local/server-full/bin/paster serve /usr/local/server-full/development.ini &
      echo $! >/var/run/ffsync.pid
}


case $1 in

start)
        start
        ;;

stop)
        stop
        ;;

restart)
        stop
        sleep 1
        start
        ;;

*)
        echo "usage: $0 { start | stop | restart }" >&2
        exit 1
        ;;

esac
 
wenn es nun vollständig und getestet ist, dann wäre es etwas für unser Wiki :) schiebst es rüber?

Itari
 
ja, kann ich machen wenn ich fertig bin.

Momentan möchte ich Firefox sqlite durch mysql ersetzen.
Eine Voraussetzung ist dabei das mysql_config installiert ist.
mysql_config kann ich durch
ipkg install mysql5
installieren, aber dann "beißen" sich die Synology-MySQL und die IPKG-MySQL und es läuft keine der beiden :rolleyes:

Kann man die Synology-MySQL durch die IPKG-MySQL ersetzen?
 
installieren, aber dann "beißen" sich die Synology-MySQL und die IPKG-MySQL und es läuft keine der beiden :rolleyes:

Kann man die Synology-MySQL durch die IPKG-MySQL ersetzen?

Entweder man entscheidet sich für eine der beiden Datenbankserver oder man gibt denen jeweils eine andere Port-Nummer und beim Aufruf (connect) verwendet man dann die Port-Nummer, die man gerade haben möchte.

Itari
 
hab einen Fehler entdeckt:
PHP:
[nodes]
fallback_node = http://localhost:5100/
muss
PHP:
[nodes]
fallback_node = http://<DISKSTATION_IP>:5100/
heißen.

Die Funktionalität ist nun gegeben.

Bevor es ins Wiki geht, kann sich noch ein Sicherheitsexperte überlegen ob es ok ist, wenn alles unter root läuft insbesondere die datenbank im Verzeichnis volume1/web/ffsync oder ob man einen eigenen user anlegen sollte oder gar nobody nimmt?
 
Dienste sollten grundsätzlich nicht als root laufen. Im Falle von ausnutzbaren Lücken hat ein Angreifer ansonsten direkt Komplettzugriff aufs System
 
============================================
Installation und Konfiguration eines eigenen Firefox Sync Server
============================================

Mit dem Sync-Server kann man
  • Lesezeichen
  • Passwörter
  • Einstellungen
  • Chronik
  • Tabs

des Firefox Browsers mit der Diskstation syncronisieren.

Vorteil:
  • Eigene Daten bleiben auf *eigenen* Server gespeichert
  • Backup
  • Daten sind auf andere Browser (anderer PC, Handy usw.) übertragbar


Voraussetzung:

  1. telnet zur Diskstation als root
  2. PHP:
    ipkg install py26-mercurial py26-setuptools make
  3. PHP:
    easy_install virtualenv
  4. PHP:
    cd ~
  5. PHP:
    vi .profile
    direkt unter PATH, dies einfügen
    HTML:
    PATH=$PATH:/opt/local/bin
  6. PHP:
    vi /etc/profile
    direkt unter PATH, dies einfügen
    HTML:
    PATH=$PATH:/opt/local/bin
  7. telnet verlassen
    PHP:
    exit
    und erneut als root einloggen!
  8. PHP:
    mkdir /usr/local/server-full -p
  9. PHP:
    cd /usr/local/server-full
  10. PHP:
    hg clone https://hg.mozilla.org/services/server-full/ .
  11. PHP:
    make build
    warten...
  12. PHP:
    vi /usr/local/server-full/development.ini
    und folgende Veränderung durchführen:
    Rich (BBCode):
        [server:main]
        port = 5100
        [handler_syncserver_errors]
        args = ('/var/log/sync-error.log',)
  13. PHP:
    vi /usr/local/server-full/etc/sync.conf
    und folgende Veränderung durchführen:
    Rich (BBCode):
        [storage]
        sqluri = sqlite:////volume1/web/ffsync/test.db
        quota_size = 25600
        [auth]
        backend = services.user.sql.SQLUser
        sqluri = sqlite:////volume1/web/ffsync/test.db
        [nodes]
        fallback_node = http://<IP_DER_Diskstation>:5100/
  14. PHP:
     mkdir /volume1/web/ffsync -p
  15. PHP:
    touch /usr/syno/etc.defaults/rc.d/S99ffsync.sh && chmod 755 /usr/syno/etc.defaults/rc.d/S99ffsync.sh
  16. PHP:
    vi /usr/syno/etc.defaults/rc.d/S99ffsync.sh
    Rich (BBCode):
    #!/bin/sh
    #
    stop() {
         echo "stop Firefox Sync Server"
         kill `cat /var/run/ffsync.pid` && rm /var/run/ffsync.pid
    }
    
    start() {
          echo "start Firefox Sync Server"
          /usr/local/server-full/bin/paster serve /usr/local/server-full/development.ini &
          echo $! >/var/run/ffsync.pid
    }
    
    
    case $1 in
    
    start)
            start
            ;;
    
    stop)
            stop
            ;;
    
    restart)
            stop
            sleep 1
            start
            ;;
    
    *)
            echo "usage: $0 { start | stop | restart }" >&2
            exit 1
            ;;
    
    esac

  17. PHP:
    reboot
Der Server ist nun installiert und konfiguriert und sollte nach dem reboot laufen.

Nun Firefox-Browser öffnen, unter
  1. Extras->Sync einrichten....->Neues Benuter Konto anlegen
  2. beliebige email eingeben
  3. beliebiges passwort eingeben
  4. http://<DISKSTATION_IP>:5100/
  5. "Weiter" klicken
Es ist geschafft :-) Der Browser sollte mit dem Server kommunizieren.

Fehlersuche:
im Browser-Adressleiste about:sync-log eingeben.



=======================================================================================
OPTIONAL:
Mit wenigen Änderungen, kann man den Server statt root auch mit einem unpriviligierten User betreiben.
=======================================================================================
In der Diskstation erstellt man den user (ffsync) und die Gruppe (daemons) und weist diesen User der Gruppe zu.
Man braucht keine besonderen Datei Lese/Schreibrechte.
  1. Telnet einloggen als root
  2. PHP:
    vi /etc/passwd
    in der Zeile ffsync verändert man /sbin/nologin in /bin/ash
    PHP:
    vi /usr/local/server-full/development.ini
    Verzeichnis anpassen
    Rich (BBCode):
    [handler_syncserver_errors]
        args = ('/var/log/ffsync/sync-error.log',)
  3. PHP:
    chown ffsync:daemons /volume1/web/ffsync -R
  4. PHP:
    mkdir /var/log/ffsync -p
  5. PHP:
    chown ffsync:daemons /var/log/ffsync
  6. PHP:
    mkdir /var/run/ffsync -p
  7. PHP:
    chmod ffsync:daemons /var/run/ffsync
  8. PHP:
    vi /usr/syno/etc.defaults/rc.d/S99ffsync.sh
    Rich (BBCode):
    #!/bin/sh
    #
    PIDFILE=/var/run/ffsync/ffsync.pid
    MESSAGELOG=/var/log/ffsync/sync-messages.log
    PASTER=/usr/local/server-full/bin/paster
    DEVINI=/usr/local/server-full/development.ini
    USER=ffsync
    GROUP=root
    
    
    stop() {
        $PASTER serve $DEVINI --user=$USER --group=$GROUP --pid-file=$PIDFILE --log-file=$MESSAGELOG --stop-daemon
    }
    
    start() {
    
        $PASTER serve $DEVINI --user=$USER --group=$GROUP --pid-file=$PIDFILE --log-file=$MESSAGELOG --daemon
    }
    
    
    case $1 in
    
    start)
            start
            ;;
    
    stop)
            stop
            ;;
    
    restart)
            stop
            sleep 1
            start
            ;;
    
    *)
            echo "usage: $0 { start | stop | restart }" >&2
            exit 1
            ;;
    esac

==========================================================================================
OPTIONAL2:
Standardmäßig hat der Sync-Server eine eigene Datenbank, sqlite. Es ist möglich stattdessen auch MySQL zu benutzen.
==========================================================================================
==========================================================================================
OPTIONAL3:
Standardmäßig hat der Syncserver einen eigenen Webserver. Man kann auch einen Apache benutzen.
==========================================================================================


Links:
http://docs.services.mozilla.com/howtos/run-sync.html#building-the-server
 

Anhänge

Moin moin,

da darf man ruhigen Gewissens auch mal ein dickes Lob aussprechen! Werde ich bei Gelegenheit auf jeden Fall einmal ausprobieren! Dann kann man sich endlich einmal von allen Alternativen im Netz trennen (Firefox/Xmarks/.../etc.), denn ich will eigentlich gar nicht wissen wo meine Daten gespeichert sind.

Vielen vielen Dank schon mal
Grüße Flostére
 
Ganz großes Tennis, papiga01! Vielen Dank für die Mühe und die tolle Anleitung. Wird sicher einigen hier massiv weiter helfen. :) *thumbsup*
 
@papiga01:
Deine Anleitung wäre auch was für's Synology Wiki :)
 
Moin moin,

da darf man ruhigen Gewissens auch mal ein dickes Lob aussprechen! Werde ich bei Gelegenheit auf jeden Fall einmal ausprobieren! Dann kann man sich endlich einmal von allen Alternativen im Netz trennen (Firefox/Xmarks/.../etc.), denn ich will eigentlich gar nicht wissen wo meine Daten gespeichert sind.

Vielen vielen Dank schon mal
Grüße Flostére

Ich bedanke mich ebenfalls ganz sehr! Spitze so was! Ich möchte auch viel mehr Cloud Dienste auf meine eigene DS legen, leider bleibt mir ja der Zugang zu CalDav und co. auf der DS107 verwährt :(

So mit muss ich meine Daten zu Google, MS und co. bringen :mad:

Wenn ich Zeit finde werde ich die FFSync auch sofort einrichten :)
 
Danke für die Blumen :o
Hab auch ne Textdatei angehängt in der Hoffnung dem WIKI-Schreiber das Leben angenehmer zu machen - Freiwillige vor ;)
Demnächst gibts ne weitere Anleitung...
 
Hab auch ne Textdatei angehängt in der Hoffnung dem WIKI-Schreiber das Leben angenehmer zu machen - Freiwillige vor ;)

Du könntest dich doch im Wiki registrieren und das gleich selbst erledigen :)
Aber viell. findet sich auch einer der das übernehmen möchte.
 
@papiga01
Sehr gute Beschreibung. Hat bei mir auf einer 207+ auf Anhieb mit FF11 funktioniert.
Danke

kotto
 
Hallo,

klappt bei jemanden die Syncronisierung vom Internet auf die Syno?
Im eigenen 192.-Netz habe ich keine Probleme aber z.B aus dem Büro klappt es nicht.

Kotto
 
Vielen Dank für die tolle Anleitung!

Ich habe leider weder Ahnung von Serveranwendungen noch von LINUX im Allgemeinen. Darum habe ich die Anleitung einfach mal "blind" abgetippt. Hat funktioniert! :-)

Nun habe ich aber noch 3 Fragen.
1) Wie kann ich die ganzen Einstellungen wieder zurücknehmen, so dass quasi wieder der ursprüngliche Zustand meiner DS (vor der Serverinstallation) vorliegt?
2) Worin läge der Vorteil der optionalen Konfiguration "mit einem unpriviligierten User"? Es wird wohl mit der Sicherheit zu tun haben, aber wie genau?
3) Die Anleitung für die Konfiguration "mit einem unpriviligierten User" hat bei mir leider nicht funktioniert. Was kann da schief gelaufen sein?


Vielen Dank und schöne Grüße,
Solari
 
Find ich ja ziemlich cool. Die Idee und die Umsetzung. Nutze nur leider keinen Firefox mehr. Bin auch chrome gegangen. Geht da sowas nicht auch?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat