Sync auf eigenem Server / Synology NAS - mobiles Gerät

  • Hallo,

    ich habe SYNC auf meinem Synology NAS installiert. Funktioniert auch für die Synchronisation zwischen zwei Rechnern. Aber leider nicht für die Synchronisation auf einem Android.

    Wenn ich den Server aufrufe über http://192.168.2.102:8132/token/1.0/sync/1.5 bekomme ich auch auf dem Android im Browser die korrekte Antwort {"status": "error", "errors": [{"location": "body", "name": "", "description": "Unauthorized"}]}.

    Aber der Sync funktioniert leider trotzdem nicht.

    Ich bin nach der Firefox Anleitung gegangen: https://docs.services.mozilla.com/howtos/run-sync-1.5.html, die auf den Blog Artikel verlinkt: http://www.ncalexander.net/blog/2014/07/0…osted-services/

    Wenn ich das so mach wie beschrieben, erscheint beim Abschicken des Logins oder der Registrierung ein roter Balken mit "Kann nicht mit Netzwerk verbinden".

    Jemand eine Idee oder hat das schon mal jemand zum Laufen gebracht?

  • Ich hab das Problem inzwischen gelöst, in dem ich Firefox noch mal deinstalliert und neu installiert habe (musste die APK für Version 43 ziehen, weil das Add-On inzwischen nicht mehr geht mit der aktuellen 44er Version). Ich hatte am Anfang manuell mit der config rum gespielt und da vermutlich irgendwo eine falsche Adresse eingetragen.

    Nun konnte ich alles fertig einrichten. Im Android unter Konto zeigt er mir an "Letzte Synchronisierung vor 2 Minuten". Aber in den Einstellungen im Firefox steht "Letzte Synchronisierung: Nie". Und leider kommt auch nichts an. Sprich es wird einfach nichts synchronisiert. Vielleicht hat doch noch jemand eine Idee.

  • Code
    01-30 16:14:40.958    8680-8698/? E/FxAccounts﹕ firefox :: FxAccountSyncAdapter :: Failed to get token.01-30 16:14:40.998    8680-8698/? E/FxAccounts﹕ firefox :: FxAccountSyncAdapter :: Got exception syncing.    org.mozilla.gecko.tokenserver.TokenServerException            at org.mozilla.gecko.tokenserver.TokenServerClient.processResponse(TokenServerClient.java:219)            at org.mozilla.gecko.tokenserver.TokenServerClient$TokenFetchResourceDelegate.handleHttpResponse(TokenServerClient.java:280)            at org.mozilla.gecko.sync.net.BaseResource.execute(BaseResource.java:309)            at org.mozilla.gecko.sync.net.BaseResource.go(BaseResource.java:340)            at org.mozilla.gecko.sync.net.BaseResource.get(BaseResource.java:346)            at org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter.syncWithAssertion$1a55e242(FxAccountSyncAdapter.java:373)            at org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter$3.handleMarried(FxAccountSyncAdapter.java:542)            at org.mozilla.gecko.fxa.authenticator.FxADefaultLoginStateMachineDelegate.handleFinal(FxADefaultLoginStateMachineDelegate.java:81)            at org.mozilla.gecko.fxa.login.FxAccountLoginStateMachine$ExecuteDelegate.handleTransition(FxAccountLoginStateMachine.java:64)            at org.mozilla.gecko.fxa.login.Cohabiting$1.handleSuccess(Cohabiting.java:28)            at org.mozilla.gecko.background.fxa.FxAccountClient10$10.handleSuccess$2637ceed(FxAccountClient10.java:770)            at org.mozilla.gecko.background.fxa.FxAccountClient10$ResourceDelegate$2.run(FxAccountClient10.java:291)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)            at java.lang.Thread.run(Thread.java:841)
  • Hallo,

    ich habe das gleiche Problem!

    Firefox Sync 1.5 läuft auf der Synology und den Desktop PCs ohne Probleme.
    Aber die Synchronisation will mit Firefox 44 unter Android einfach nicht funktionieren.

    Angeblich muss man ab Version 44 ja nur noch unter about:config den Parameter "identity.sync.tokenserver.uri" ändern.
    Dort habe ich auch den gleichen Wert eingetragen wie auf meinen Desktop Rechnern (https://ffsync.<XYZ>.selfhost.de/token/1.0/sync/1.5).
    Doch leider wird nichts synchronisiert...

    Ich werde mal versuchen, Firefox neu zu installieren, aber besonders hoffnungsvoll bin ich nicht.
    Das Blöde ist auch, dass man unter Android keine Sync Logs hat wie auf dem Dektop (about:sync-logs).

    Schöne Grüße,
    Eddie.

  • Ich hab mir noch mal die Logs angeschaut. Offenbar entsteht ein Problem beim Matching der public_url und der application_url:

    Code
    02-21 10:54:54.470  10640-12715/? W/FxAccounts﹕ firefox :: TokenServerClient :: The public_url setting doesn't match the application url.    This will almost certainly cause authentication failures!    public_url setting is: http://192.168.2.102:8132    application url is:    http://192.168.2.102    You can disable this check by setting the force_wsgi_environ    option in your config file, but do so at your own risk.02-21 10:54:54.500  10640-12730/? E/FxAccounts﹕ firefox :: FxAccountSyncAdapter :: Failed to get token.    org.mozilla.gecko.tokenserver.TokenServerException            at org.mozilla.gecko.tokenserver.TokenServerClient.processResponse(TokenServerClient.java:219)            at org.mozilla.gecko.tokenserver.TokenServerClient$TokenFetchResourceDelegate.handleHttpResponse(TokenServerClient.java:280)            at org.mozilla.gecko.sync.net.BaseResource.execute(BaseResource.java:309)            at org.mozilla.gecko.sync.net.BaseResource.go(BaseResource.java:340)            at org.mozilla.gecko.sync.net.BaseResource.get(BaseResource.java:346)            at org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter.syncWithAssertion$1a55e242(FxAccountSyncAdapter.java:373)            at org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter$3.handleMarried(FxAccountSyncAdapter.java:542)            at org.mozilla.gecko.fxa.authenticator.FxADefaultLoginStateMachineDelegate.handleFinal(FxADefaultLoginStateMachineDelegate.java:81)            at org.mozilla.gecko.fxa.login.FxAccountLoginStateMachine$ExecuteDelegate.handleTransition(FxAccountLoginStateMachine.java:64)            at org.mozilla.gecko.fxa.login.Cohabiting$1.handleSuccess(Cohabiting.java:28)            at org.mozilla.gecko.background.fxa.FxAccountClient10$10.handleSuccess$2637ceed(FxAccountClient10.java:770)            at org.mozilla.gecko.background.fxa.FxAccountClient10$ResourceDelegate$2.run(FxAccountClient10.java:291)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)            at java.lang.Thread.run(Thread.java:841)

    Komisch ist auf jeden Fall, dass der Server von Windows aus aufgerufen richtig funktioniert.
    Offenbar ist das Problem bei Firefox bekannt: https://github.com/mozilla-services/syncserver/issues/48
    Hier wurde offenbar auch schon etwas geändert: https://github.com/mozilla-servic…bf9437cf5052ae9
    Aber das ist das Firefox Projekt. Das Package, das SynoCommunity zur Verfügung stellt hat bereits ein leicht modifizierte Datei. Bei mir liegt sie unter /volume1/@appstore/ffsync/env/lib/python2.7/site-packages/syncserver/__init__.py Da die Dateien nicht identisch sind, würde ich da gleich zwei mal nicht reinfingern. Die Änderungen werden ja vermutlich irgendwann auch im Syno Package auftauchen.

    Man kann in der /usr/local/ffsync/var/ffsync.ini den Key force_wsgi_environ auf true stellen:

    Code
    force_wsgi_environ = true


    Danach funktioniert der Sync. Aber das ganze könnte unsicher sein:

    Zitat

    # 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.

    Bei Syno Community steht folgendes bezüglich dem Fehler:

    Zitat

    When the server log shows the following error The public_url setting doesn't match the application url., this is usually caused when the value for tokenServerURI on the client does not match the value for public_url in the configuration file. You might need to restart your client after changing the configured values.

    Hab dann noch mal ins about:config geguckt. Da gibt es den Key

    Code
    identity.sync.tokenserver.uri

    Da steht bei mir unter Android folgende URL drin: https://token.services.mozilla.com/1.0/sync/1.5

    Im Firefox unter Windows hingegen steht für meine Serveradresse: http://192.168.2.102:8132/token/1.0/sync/1.5

    Hab dann noch mal den Blogpost den Firefox verlinkt raus gesucht, um nach zu sehen, welcher der richtige Key ist. Und da steht seit kurzem: THIS BLOG POST IS DEPRECATED:

    Zitat

    The documentation at https://docs.services.mozilla.com/howtos/run-sync-1.5.html and https://docs.services.mozilla.com/howtos/run-fxa.html has been updated and is now the canonical documentation for configuring custom servers in Firefox for Android.

    Cool - so getan wie beschrieben. Ergebnis -> gleiche Fehlermeldung wieder im Log und kein Sync möglich.

    Mein Fazit: Mit Firefox 44 brauchts kein Addon mehr. Denn die Anmeldung geht jetzt auch so wunderbar, wenn man vorher den Key identity.sync.tokenserver.uri richtig füllt. Aber das Problem mit dem Matching von public_url und application_url besteht weiterhin. Weiterhin seltsam ist, warum sich Windows Clients verbinden können und Android Clients nicht. Laut Syno Community liegt das an falschen Einstellungen im Client - aber laut der neuen Beschreibung von Firefox, sollte der Android Client ja auf jeden Fall richtig konfiguriert sein. Möglicherweise liegt es am Syno Community Package und das Original funktioniert: Keine Ahnung. Hab keine Möglichkeit das mal zu testen. Wäre aber sehr interessant.

    Notlösung wäre wie oben beschrieben, die ffsync.ini anzupassen. Das funktioniert immerhin! Aber damit ist ein Sicherheitsrisiko verbunden. Allerdings werden auch dann keine Lesezeichen gesynct :mrgreen: - keine Ahnung warum. Alles andere wird gesynct..

  • Vielen Dank für die ausführliche Antwort!

    Zitat von Gegengift


    Notlösung wäre wie oben beschrieben, die ffsync.ini anzupassen. Das funktioniert immerhin! Aber damit ist ein Sicherheitsrisiko verbunden. Allerdings werden auch dann keine Lesezeichen gesynct :mrgreen: - keine Ahnung warum. Alles andere wird gesynct..


    Auch das geht bei mir leider nicht, denn ich hatte den Wert von "force_wsgi_environ" laut dieser Anleitung sowieso schon auf true gesetzt!

    Aber ich betreibe FF Sync auch hinter einem Reverse Proxy (meine Vorgehensweise siehe im Synology Forum).

  • So, hab's jetzt endlich hinbekommen.
    Dafür musste ich allerdings erstmal mein LG G3 rooten, um die Firefox Sync Logs zu lesen!

    Letztendlich lag es am fehlenden SSL Zertifikat!
    Nachdem ich eines über StartSSL erstellt und in die Disk Station importiert hatte (siehe hier und hier), ging auch das Synchronisieren.

    Das war vielleicht mal eine schwere Geburt!

    Jetzt aber funktioniert endlich der Sync auf all meinen Geräten...

  • Man kann die Logs auch ohne Root verfolgen. Es gibt dafür auch Apps aber die hab ich nicht probiert. Ich mach es mit dem SDK und Android Studio. Es reicht aber das SDK:

    • Man läd sich die ZIP oder exe runter entpackt / installiert das SDK
    • Man startet den enthaltenen SDK Manager. Dann alles abwählen und nur "Platform-Tools" und "USB Driver" auswählen zum Installieren
    • Man verbindet das Device per USB und stellt die Entwickleroptionen unter Optionen auf an und schaltet USB-Debugging ein
    • Nun geht man im SDK in den Ordner Platform-tools und macht unter Windows Strg-Shift-Rechtsklick und wählt "Eingabeaufforderung hier öffnen"
    • adb.exe logcat eingeben und die Logs fliegen einem entgegen - man kanns natürlich auch filtern: http://developer.android.com/tools/help/logcat.html