Neuer Firefox-Syncserver (Rust) in Docker mit MariaDB-Datenbank

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Also vom Screenshot her sieht's gut aus...

Du hast recht, steht da. Ist aber ein Schreibfehler und mir gar nicht aufgefallen. Grundsätzlich muss es so lauten:
Code:
http(s)://servername.domain.tld:(port)/1.0/sync/1.5

Ich bin aber auch nicht sicher, ob's überhaupt einen Unterschied macht.

Eine Frage: Von welchem Gerät aus versuchst du zu syncen?
 

starmagoo

Benutzer
Mitglied seit
07. Apr 2022
Beiträge
41
Punkte für Reaktionen
9
Punkte
8
Ohne den zweiten "/" bekomme ich eine Fehlermeldung.
 

Anhänge

  • 2023-01-05_12h00_02.png
    2023-01-05_12h00_02.png
    5,6 KB · Aufrufe: 17

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Äh, das ist jetzt die Ausgabe für die Sync-URL, oder? Wenn das so ist, dann ist das richtig.

Du fragst direkt den Sync-Server ohne Firefox-Konto, bist also "unauthorized".

Das bekomme ich auch, wenn ich meine URL direkt aufrufe.

Wie sieht denn damit deine Synchronisation aus? Setz mal in "about:config" den Wert "services.sync.log.appender.file.logOnSuccess" auf "true", dann siehst du auch Logs für erfolgreiche Syncs.
 
  • Like
Reaktionen: plang.pl

starmagoo

Benutzer
Mitglied seit
07. Apr 2022
Beiträge
41
Punkte für Reaktionen
9
Punkte
8
Sieht gut aus, es war wohl ein Denkfehler bei mir.
Danke für die Hinweise!

Code:
1672955106789    Sync.LogManager    DEBUG    Flushing file log
1672955106789    Sync.SyncScheduler    DEBUG    Next sync in 600000 ms. (why=schedule)
1672955106798    Sync.RemoteTabs    DEBUG    Processing client: {"id":"xyz","type":"client","name":"xyz Firefox auf xyz","clientType":"desktop","lastModified":1672925514870,"tabs":[]}
1672955106799    Sync.RemoteTabs    INFO    Final tab list has 1 clients with 129 tabs.
1672955107407    FirefoxAccounts    INFO    Polling device commands.
1672955107407    Sync.Service    DEBUG    User-Agent: Firefox/108.0.1 (Windows NT 10.0; Win64; x64) FxSync/1.110.0.20221215175817.desktop
1672955107407    Sync.Service    INFO    Starting sync at 2023-01-05 22:45:07 in browser session bXBtSBhHs9X4
1672955107407    Sync.SyncScheduler    DEBUG    Clearing sync triggers and the global score.
1672955107409    Sync.Status    INFO    Resetting Status.
1672955107409    Sync.Status    DEBUG    Status.service: success.status_ok => success.status_ok
1672955107410    FirefoxAccounts    TRACE    not checking freshness of profile as it remains recent
1672955107411    Services.Common.RESTRequest    DEBUG    GET request to https://api.accounts.firefox.com/v1/account/device/commands?index=0
1672955107419    Sync.Resource    DEBUG    GET success 200 https://ffsync.mydomain.com/1.5/4/info/collections
1672955107419    Sync.Service    DEBUG    Fetching server configuration: https://ffsync.mydomain.com/1.5/4/info/configuration
1672955107420    FirefoxAccounts    TRACE    not checking freshness of profile as it remains recent
1672955107703    Services.Common.RESTRequest    DEBUG    GET https://api.accounts.firefox.com/v1/account/device/commands?index=0 200
1672955107703    Hawk    DEBUG    (Response) /account/device/commands?index=0: code: 200 - Status text: OK
1672955107703    Hawk    DEBUG    Clock offset vs https://api.accounts.firefox.com/v1: -703
1672955107706    Sync.Resource    DEBUG    GET success 200 https://ffsync.mydomain.com/1.5/4/info/configuration
1672955107706    Sync.Service    DEBUG    Fetching global metadata record
1672955107706    Sync.Service    DEBUG    Weave Version: 1.110.0 Local Storage: 5 Remote Storage: 5
1672955107706    Sync.Service    DEBUG    Fetching and verifying -- or generating -- symmetric keys.
1672955107706    Sync.Service    INFO    Testing info/collections: {"tabs":1672955106.95,"meta":1672873926.54,"crypto":1672873925.47,"clients":1672921836.46}
1672955107706    Sync.CollectionKeyManager    INFO    Testing for updateNeeded. Last modified: 1672873925.47
1672955107707    Sync.Synchronizer    DEBUG    Refreshing client list.
1672955107707    Sync.Engine.Clients    DEBUG    Resetting clients last sync time
1672955107710    FirefoxAccounts    TRACE    not checking freshness of profile as it remains recent
1672955107730    Sync.Collection    DEBUG    GET success 200 https://ffsync.mydomain.com/1.5/4/storage/clients?full=1&limit=1000
1672955107737    Sync.Engine.Clients    INFO    Records: 0 applied, 0 successfully, 0 failed to apply, 0 newly failed to apply, 2 reconciled.
1672955107737    Sync.Engine.Clients    DEBUG    Refreshing the known stale clients list
1672955107739    Sync.Engine.Clients    INFO    Uploading 0 outgoing records
1672955107740    Sync.Synchronizer    INFO    Updating enabled engines: 2 clients.
1672955107741    Sync.Synchronizer    INFO    Syncing all enabled engines.
1672955107799    FirefoxAccounts    TRACE    not checking freshness of profile as it remains recent
1672955107867    Sync.Collection    DEBUG    GET success 200 https://ffsync.mydomain.com/1.5/4/storage/tabs?full=1&limit=1000
1672955107875    Sync.Engine.Tabs    INFO    Records: 2 applied, 2 successfully, 0 failed to apply, 0 newly failed to apply, 0 reconciled.
1672955107882    Sync.Engine.Tabs    INFO    Uploading 1 outgoing records
1672955107891    Services.Common.RESTRequest    DEBUG    GET https://api.accounts.firefox.com/v1/account/device/commands?index=0 200
1672955107891    Hawk    DEBUG    (Response) /account/device/commands?index=0: code: 200 - Status text: OK
1672955107891    Hawk    DEBUG    Clock offset vs https://api.accounts.firefox.com/v1: -891
1672955107891    Sync.Engine.Tabs    INFO    Posting 1 records of 36823 bytes with batch=true
1672955107891    FirefoxAccounts    TRACE    not checking freshness of profile as it remains recent
1672955107892    Sync.Collection    DEBUG    POST Length: 36823
1672955107918    Sync.Collection    DEBUG    POST success 200 https://ffsync.mydomain.com/1.5/4/storage/tabs?batch=true&commit=true
1672955107921    Sync.RemoteTabs    INFO    Generating tab list with filter
1672955107921    Sync.Doctor    INFO    Skipping check of tabs - disabled via preferences
1672955107921    Sync.Doctor    INFO    Skipping validation: no engines qualify
1672955107921    Sync.Status    DEBUG    Status.sync: success.sync => success.sync
1672955107921    Sync.Status    DEBUG    Status.service: success.status_ok => success.status_ok
1672955107922    Sync.Synchronizer    INFO    Sync completed at 2023-01-05 22:45:07 after 0.51 secs.
1672955107922    Sync.Declined    DEBUG    Handling remote declined: []
1672955107922    Sync.Declined    DEBUG    Handling local declined: []
1672955107923    Sync.Declined    DEBUG    Declined changed? false
1672955107923    Sync.Service    INFO    No change to declined engines. Not reuploading meta/global.
 
  • Like
Reaktionen: Adama

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Das sieht beim Überfliegen gut aus. Im Zweifel kannst du ja noch mal schauen, ob du succes-Logs bekommst.
 

Esel08

Benutzer
Mitglied seit
10. Jul 2014
Beiträge
281
Punkte für Reaktionen
6
Punkte
24
@Adama

So versuche jetzt auch diesen Rast Server aufzusetzen, hoffe es klappt.
Eine Frage habe ich , welxhe Rechte braucht der User sync_rs auf die Datenbank ??

Danke Dir
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Die Rechte, die du mit "GRANT ALL PRIVILEGES ON" setzt, umfassen alle Rechte auf die Datenbanken bis auf GRANT
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ich habe da jetzt auch mal rangewagt und eine Testinstallation versucht.
Allerdings scheint der Container keine Verbindung zur MariaDB zu bekommen.
Ich habe eine MariaDB im Docker am Laufen. Aus anderen Containern heraus spreche ich sie allerdings immer mit einer Verlinkung an.
Ich habe folgendes getan:
Eine Datei mit dem Namen ".env" angelegt:
cat .env
COMPOSE_PROJECT_NAME=firefoxsync
MYSQL_USER=firefox
MYSQL_PASS=F1r€F0X
SYNC_MASTER_SECRET=Kt6R2xJWTJh8Y5R+xL9I7fREXcpI0aB37MrS6ubyxkYbT6B6kQ9AwBiOFDKaMSD6
METRICS_HASH_SECRET=Kt6R2xJWTJh8Y5R+xL9I7fREXcpI0aB37MrS6ubyxkYbT6B6kQ9AwBiOFDKaMSD6
DATABASE_SERVER=mariadb
DATABASE_PORT=3306
EXTERNAL_PORT=7080

und eine mit dem Namen "docker-compose.yml"
version: "3.8"

services:
firefox-sync:
image: mozilla/syncstorage-rs:0.13.1
network_mode: bridge
container_name: firefoxsync
environment:
SYNC_HOST: 0.0.0.0
SYNC_HUMAN_LOGS: 1
SYNC_MASTER_SECRET: Kt6R2xJWTJh8Y5R+xL9I7fREXcpI0aB37MrS6ubyxkYbT6B6kQ9AwBiOFDKaMSD6
SYNC_DATABASE_URL: mysql://firefox:F1r€F0X@$mariadb:3306/syncstorage_rs
SYNC_TOKENSERVER__ENABLED: "true"
SYNC_TOKENSERVER__RUN_MIGRATIONS: "true"
SYNC_TOKENSERVER__NODE_TYPE: mysql
SYNC_TOKENSERVER__DATABASE_URL: mysql://firefox:F1r€F0X@mariadb:3306/tokenserver_rs
SYNC_TOKENSERVER__FXA_EMAIL_DOMAIN: api.accounts.firefox.com
SYNC_TOKENSERVER__FXA_OAUTH_SERVER_URL: https://oauth.accounts.firefox.com/v1
SYNC_TOKENSERVER__FXA_METRICS_HASH_SECRET: Kt6R2xJWTJh8Y5R+xL9I7fREXcpI0aB37MrS6ubyxkYbT6B6kQ9AwBiOFDKaMSD6
SYNC_TOKENSERVER__ADDITIONAL_BLOCKING_THREADS_FOR_FXA_REQUESTS: 2
ports:
- 7080:8000
restart: always

Der Hostname meiner MariaDB ist "mariadb" und beide Container befinden sich im Bridge-Netzwerk

Dann via ssh in das Verzeichnis gewechselt und "docker-compose up -d" ausgeführt. Bereits da wird gemeckert, dass eine Variable fehlt:
1.png

Die Container Logs sehen auch nicht gut aus:
2.png

Und letzten Endes wird auch nix in die DB geschrieben. Die DB ist leer und nach dem Erststart schlägt auch der SQL-Befehl fehl:
3.png


Was läuft hier falsch? Ich habe noch nie mit Docker Compose gearbeitet. Also vermutlich läuft alles falsch :ROFLMAO:
 
Zuletzt bearbeitet:

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Ich hab' ja bei dem Konstrukt zuerst die Onboard-MariaDB genutzt. In deinem Fall musst du die Docker-MariaDB mit einem Bein in deine Bridge stellen.

Das Ansprechen mit Container-Namen geht aber nur, wenn du ein eigenes Netz im Docker erzeugst. Ich hab für meine neue MariaDB-Docker einfach eine eigene Bridge erzeugt und die Container, die sie nutzen sollen, da mit reingehängt.

Außerdem hat sich eine Variable im Syncserver geändert: https://www.synology-forum.de/threa...ker-mit-mariadb-datenbank.123662/post-1034819

Die musst du im Compose-File anpassen.
 
  • Like
Reaktionen: plang.pl

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
ok. Dank dir so weit. Mit einer Verlinkung kann man das doch auch lösen, oder? Wie lege ich diese in der yml an?
Also ich meine das hier:
Screenshot 2023-01-09 185829.png
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Ich glaub ja, aber das hab ich noch nicht gemacht...

Ich meine auch gelesen zu haben, dass das veraltet wäre. Aber wie gesagt, ich hab mich bisher nicht mit beschäftigt.

Edit: https://docs.docker.com/network/links/
 
  • Like
Reaktionen: plang.pl

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ok. Mal schauen. Dann muss ich eben demnächst mal in einer Nacht und Nebel-Aktion alle Container mit Zugriff auf den SQL-Server fix umstellen :ROFLMAO:
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Das geht einfacher als du befürchtest...

Ich hab ja die lokale MariaDB weggeschmissen und auf eine Docker-Instanz mit der aktuellen Version umgestellt.

Das ging letztendlich problemlos. Erst hatte ich die neue Instanz quasi extern angesprochen und dann einfach auf eine neue Bridge umgehängt. Dann die Einstellungen der Container geändert und wieder gestartet.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Naja letzten Endes muss ich folgendes tun, wenn ich das richtig verstanden habe:
-ein Bridge Netz erzeugen
-da die MariaDB und alle Container, die darauf Zugriff brauchen rein knallen
-dann kann ich die MariaDB mit dem Hostname ansprechen
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
So kann man das sagen.

Ein Container kann auch in mehreren Netzen stehen. Meine MariaDB hat eine eigene Bridge, in der sind auch der FFSync_RS und Nextcloud. Außerdem hängt sie auch im Paperless-Netzwerk, damit auch Paperless per Namen zugreifen kann.
 
  • Like
Reaktionen: plang.pl

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ich hab jetz mal meine ganzen "SQL-Container" in ein manuell erstelltes Bridged-Network geschmissen. Links fliegen da ja automatisch raus, was ich nicht wusste. Jetz hab ich eben fix meine 6 Container neu erstellt und es funktioniert bei denen mit der Hostname-Auflösung.
Nur der Firefox-Sync will nicht. Er wird halt via Compose im Standard-Bridge erstellt und kann von daher logischerweise den Hostname nich auflösen.
Wenn ich dann via Portainer oder Docker-UI das Network ändere, geht's dennoch nicht. Wahrscheinlich muss ich das direkt im Stack machen. Eventuell hab ich morgen noch mal Lust. Jedenfalls danke schon mal so weit.
So sieht aktuell der Log aus:
Screenshot 2023-01-21 213554.png
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
  • Like
Reaktionen: plang.pl

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ich verwende die 0.13.1. Ist das da schon nötig?
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.191
Punkte für Reaktionen
766
Punkte
154
Ja, weil das schon in Version 0.13.0 geändert wurde... ;)
 
  • Like
Reaktionen: plang.pl


 

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