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

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.220
Punkte für Reaktionen
4.941
Punkte
519
Wenn ich den ersten Test mit dem Zweitrechner hinter mir habe, werde ich berichten
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.220
Punkte für Reaktionen
4.941
Punkte
519
Also ich hab da jetzt nicht lange gefackelt.
Ich habe einfach das Firefox-Profil meines Rechners auf meinen Mini-PC und Laptop kopiert, sodass alle initial auf dem gleichen Stand sind. Wenn ich jetzt z.B. auf einem Gerät ein Lesezeichen ändere, wird das auch auf dem anderen Gerät synchronisiert.
Das wollte ich erreichen und nun bin ich zufrieden. Vorher musste ich immer alle paar Tage das Firefox-Profil hin- und herkopieren.
 
  • Like
Reaktionen: Adama

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134

Esel08

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

Naja hoffe mal bei mir läuft das Ding auch mal #46
Die DS718+ sieht das anders.
Original Mariadb 10 als eigenständige.
Mit den alten Docker Mozilla/Syncserver läuft sie mit Mariadb 10 perfekt.
Gestartet mit den Script:
Code:
docker run -d --name FirefoxSync --restart always -p 8132:5000 -e SYNCSERVER_PUBLIC_URL=http://192.168.220.xx:8132 -e SYNCSERVER_SECRET=mysecret -e SYNCSERVER_SQLURI="pymysql://Name:Passwort#@192.168 .220.xx:3307/Firefox" -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true -e SYNCSERVER_FORCE_WSGI_ENVIRON=true -e PORT=5000 mozilla/syncserver:latest

keine Probleme.

Mit Rust nix läuft :oops:
:cry::cry:
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
Ich hab hier noch mal meine aktuelle Docker-Compose-Konfiguration angehängt.

Pass die mal auf deine Bedürfnisse an und versuch es noch mal. Das sollte eigentlich klappen. Schau auch noch mal in den ersten Thread-Eintrag, da ist das ganze Procedere ja beschrieben.

Edit: Die URL, die im Firefox eingetragen werden muss, lautet
Code:
http(s)://servername.domain.tld:(port)/1.0/sync/1.5

Mir war im ersten Beitrag da ein Slash zuviel reingerutscht...
 

Anhänge

  • FFSyncRS.zip
    1,5 KB · Aufrufe: 29
Zuletzt bearbeitet:
  • Love
Reaktionen: Esel08

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
Und noch 'ne neue Version: 0.13.6
Code:
Chore

    update tempfile crate (670d6832)

Bug Fixes

    connect to the db once instead of every loop iteration (31192d52)

Schon installiert, geht...
 

Psy87

Benutzer
Mitglied seit
09. Dez 2010
Beiträge
120
Punkte für Reaktionen
10
Punkte
18
@Adama

Naja hoffe mal bei mir läuft das Ding auch mal #46
Die DS718+ sieht das anders.
Original Mariadb 10 als eigenständige.
Mit den alten Docker Mozilla/Syncserver läuft sie mit Mariadb 10 perfekt.
Gestartet mit den Script:
Code:
docker run -d --name FirefoxSync --restart always -p 8132:5000 -e SYNCSERVER_PUBLIC_URL=http://192.168.220.xx:8132 -e SYNCSERVER_SECRET=mysecret -e SYNCSERVER_SQLURI="pymysql://Name:Passwort#@192.168 .220.xx:3307/Firefox" -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true -e SYNCSERVER_FORCE_WSGI_ENVIRON=true -e PORT=5000 mozilla/syncserver:latest

keine Probleme.

Mit Rust nix läuft :oops:
:cry::cry:

Hast du da irgendwelche Freigaben für die MariaDB?
Bei mir kommt keine Verbindung zu Stande...
Code:
OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '192.168.178.21' (timed out)")
Code:
docker run -d --name FirefoxSync --restart always -p 8132:5000 -e SYNCSERVER_PUBLIC_URL=http://192.168.178.21:8132 -e SYNCSERVER_SECRET=blubb -e SYNCSERVER_SQLURI="pymysql://ffsync:pwDB@192.168.178.21:3307/Firefox" -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true -e SYNCSERVER_FORCE_WSGI_ENVIRON=true -e PORT=5000 mozilla/syncserver:latest
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
Moin, du nutzt die MariaDB auf der Syno?

Die Datenbanken hast du wie im ersten Post beschrieben angelegt?

Edit: Moment, mit der Komandozeile versuchst du den alten Syncserver zu installieren, hier geht es um den neuen Syncserver auf Rust-Basis. Due musst dich nach der Anleitung im ersten Post richten.
 

Psy87

Benutzer
Mitglied seit
09. Dez 2010
Beiträge
120
Punkte für Reaktionen
10
Punkte
18
Geht ja um die "alte" Variante, nicht Rust, richtig?
Ich hatte schon mal alles laufend, allerdings mit einer Portfreigabe in der Fritzbox für 3307, daher sind alle Datenbanken und Tabellen vorhanden.
Aber ja, MariaDB 10 aus dem Paketzentrum.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
In diesem Thread nicht, lies mal die Überschrift... ;)

Den alten soltest du auch nicht mehr nehmen, der wird nicht mehr gepflegt.
 

Psy87

Benutzer
Mitglied seit
09. Dez 2010
Beiträge
120
Punkte für Reaktionen
10
Punkte
18
Deswegen hatte ich mich ja auf deinen Beitrag bezogen, in dem du die Rust Variante auch nicht zum laufen bekommen hattest, sondern die alte. Da wollte ich nur kurz anknüpfen :)
Aber dann besser auf die neue Version umschwenken? Die alte DB kann ich vermutlich nicht umziehen, oder?
Bin gespannt, ob im neuen Container dann der Zugriff auf die DB klappt...
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
Das war nicht ich, sondern @Esel08 ;)

Aber ich meine mich zu erinnern, dass er das inzwischen auch zum Laufen bekommen hat.

Hmmm, die Datenbank umzuziehen hab ich nicht getestet. Die wird auch gegenüber der alten um eine Datenbank erweitert, siehe ersten Post..

Ich stell dir hier noch mal die aktuelle Docker-Compose rein, die ich inzwischen benutze. Die hab ich um einen Health-Check erweitert:
Code:
version: "3.8"

services:
  firefox-sync:
    image: mozilla/syncstorage-rs:0.13.6
    container_name: FirefoxSync_RS
    environment:
      SYNC_HOST: 0.0.0.0
      SYNC_HUMAN_LOGS: 1
      SYNC_MASTER_SECRET: ${SYNC_MASTER_SECRET}
      SYNC_SYNCSTORAGE__DATABASE_URL: mysql://${MYSQL_USER}:${MYSQL_PASS}@${DATABASE_SERVER}:${DATABASE_PORT}/syncstorage_rs
      SYNC_TOKENSERVER__ENABLED: "true"
      SYNC_TOKENSERVER__RUN_MIGRATIONS: "true"
      SYNC_TOKENSERVER__NODE_TYPE: mysql
      SYNC_TOKENSERVER__DATABASE_URL: mysql://${MYSQL_USER}:${MYSQL_PASS}@${DATABASE_SERVER}:${DATABASE_PORT}/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: ${METRICS_HASH_SECRET}
      SYNC_TOKENSERVER__ADDITIONAL_BLOCKING_THREADS_FOR_FXA_REQUESTS: 2
      RUST_LOG: warn
    ports:
      - ${EXTERNAL_PORT}:8000
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/__heartbeat__"]
      interval: 30s
      timeout: 10s
      retries: 5
    restart: unless-stopped

Und der Eintrag im Firefox muss
Code:
http(s)://servername.domain.tld:(port)/1.0/sync/1.5
lauten, da ist mir im ersten Post ein "/" zuviel reingeraten.
 
  • Like
Reaktionen: Psy87

Esel08

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

Der Esel hats nicht hinbekommen, es läuft bei mir noch der alte hoffe der geht bis ich Rentner bin...
Es funktioniert einfach nicht bei mir.

Grüße
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
@Esel08 Dann hatte ich das falsch in Erinnerung...

Hattest du das denn noch mal mit der aktuellen docker-compose-Datei probiert?

Ich erinnere auch nicht mehr die Fehlermledungen, die du hattest.
 

Esel08

Benutzer
Mitglied seit
10. Jul 2014
Beiträge
269
Punkte für Reaktionen
5
Punkte
24
Hatte ich , verstehe nicht warum.
Nach Ostern werde ich nochmals ausprobieren wie ich es machte. Mit Fehlermeldung. Sollte der Browser nicht mehr mit der alten sync gehen wird er vom System gelöscht.

Jungs schöne Ostern und danke für die Hilfe Adama 🙂😉😉
 
  • Like
Reaktionen: Adama

Psy87

Benutzer
Mitglied seit
09. Dez 2010
Beiträge
120
Punkte für Reaktionen
10
Punkte
18
Habe die Compose ausgeführt, aber bisher klappts nicht. So wirklich erschließt sich mir der Fehler aber noch nicht.
Datenbanken angelegt etc.

Code:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ApiError { kind: Db(DbError { kind: DieselConnection(BadConnection("Unknown MySQL server host 'sync_rs' (-2)")), status: 500, backtrace:    0: <syncserver_db_common::error::DbError as core::convert::From<syncserver_db_common::error::DbErrorKind>>::from

Code:
             at syncserver/src/server/mod.rs:266:9
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
      syncserver::main::{{closure}}
             at syncserver/src/main.rs:56:48
   4: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
      <tokio::task::local::RunUntil<T> as core::future::future::Future>::poll::{{closure}}::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/task/local.rs:528:65
      tokio::coop::with_budget::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/coop.rs:127:9
      std::thread::local::LocalKey<T>::try_with
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:445:16
      std::thread::local::LocalKey<T>::with
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:421:9
   5: tokio::coop::with_budget
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/coop.rs:120:5
      tokio::coop::budget
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/coop.rs:96:5
      <tokio::task::local::RunUntil<T> as core::future::future::Future>::poll::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/task/local.rs:528:42
      tokio::macros::scoped_tls::ScopedKey<T>::set
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/macros/scoped_tls.rs:63:9
   6: tokio::task::local::LocalSet::with
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/task/local.rs:442:9
      <tokio::task::local::RunUntil<T> as core::future::future::Future>::poll
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/task/local.rs:518:9
      tokio::task::local::LocalSet::run_until::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/task/local.rs:392:18
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
   7: tokio::runtime::shell::Shell::block_on::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/shell.rs:43:54
      tokio::coop::with_budget::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/coop.rs:127:9
      std::thread::local::LocalKey<T>::try_with
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:445:16
      std::thread::local::LocalKey<T>::with
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:421:9
   8: tokio::coop::with_budget
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/coop.rs:120:5
      tokio::coop::budget
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/coop.rs:96:5
      tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/basic_scheduler.rs:131:35
      tokio::runtime::basic_scheduler::enter::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/basic_scheduler.rs:213:29
      tokio::macros::scoped_tls::ScopedKey<T>::set
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/macros/scoped_tls.rs:63:9
      tokio::runtime::basic_scheduler::enter
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/basic_scheduler.rs:213:5
      tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/basic_scheduler.rs:123:9
   9: tokio::runtime::Runtime::block_on::{{closure}}
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/mod.rs:444:34
      tokio::runtime::context::enter
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/context.rs:72:5
  10: tokio::runtime::handle::Handle::enter
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/handle.rs:76:9
      tokio::runtime::Runtime::block_on
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/runtime/mod.rs:441:9
  11: tokio::task::local::LocalSet::block_on
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.25/src/task/local.rs:353:9
      actix_rt::runtime::Runtime::block_on
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.1.1/src/runtime.rs:89:9
      actix_rt::builder::SystemRunner::block_on
             at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.1.1/src/builder.rs:187:19
      syncserver::main
             at syncserver/src/main.rs:27:1
  12: core::ops::function::FnOnce::call_once
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:248:5
      std::sys_common::backtrace::__rust_begin_short_backtrace
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:122:18
  13: std::rt::lang_start::{{closure}}
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:166:18
  14: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:283:13
      std::panicking::try::do_call
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
      std::panicking::try
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
      std::panic::catch_unwind
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
      std::rt::lang_start_internal::{{closure}}
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:48
      std::panicking::try::do_call
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
      std::panicking::try
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
      std::panic::catch_unwind
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
      std::rt::lang_start_internal
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:20
  15: main
  16: __libc_start_main
             at /build/glibc-6iIyft/glibc-2.28/csu/../csu/libc-start.c:308:16

  17: _start
, status: 500 }', syncserver/src/main.rs:56:55
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Panic in Arbiter thread.
 
Zuletzt bearbeitet:

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
Ich denke, das entscheidene ist der Teil: "Unknown MySQL server host 'sync_rs'". sync_rs ist ja der Benutzer, den ich in meiner Anleitung verwende, nicht die Datenbank.

Hast du nur die Compose-Datei verwendet? Das wäre nicht richtig, du musst auch die ".env" korrekt befüllen. Ich kann immer nur auf den ersten Post hinweisen.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.994
Punkte für Reaktionen
579
Punkte
134
Weil du nur "syncstorage_rs" erwähnst: Hat der User auch Rechte auf "tokenserver_rs"? Die braucht er auch...

Edit: Weil die in deiner Liste nicht zu sehen sind, "SYNC_SYNCSTORAGE__DATABASE_URL" und "SYNC_TOKENSERVER__DATABASE_URL" sind auch gesetzt?

Edit 2: Mir ist gar nicht aufgefallen, dass deine ganzen Variablen irgendwie komisch heißen. Bei mit sieht das wie folgt aus

SYNC_HOST0.0.0.0
SYNC_HUMAN_LOGS1
SYNC_MASTER_SECRET<Secret>
SYNC_SYNCSTORAGE__DATABASE_URLmysql://sync_rs:<Password>@MariaDB:3306/syncstorage_rs
SYNC_TOKENSERVER__ADDITIONAL_BLOCKING_THREADS_FOR_FXA_REQUESTS2
SYNC_TOKENSERVER__DATABASE_URLmysql://sync_rs:<Password>@MariaDB:3306/tokenserver_rs
SYNC_TOKENSERVER__ENABLEDtrue
SYNC_TOKENSERVER__FXA_EMAIL_DOMAINapi.accounts.firefox.com
SYNC_TOKENSERVER__FXA_METRICS_HASH_SECRET<Hash_Secret>
SYNC_TOKENSERVER__FXA_OAUTH_SERVER_URLhttps://oauth.accounts.firefox.com/v1
SYNC_TOKENSERVER__NODE_TYPEmysql
SYNC_TOKENSERVER__RUN_MIGRATIONStrue
 
Zuletzt bearbeitet:

Psy87

Benutzer
Mitglied seit
09. Dez 2010
Beiträge
120
Punkte für Reaktionen
10
Punkte
18
Ja, same same. Ich glaube, ich habe ein generelles Problem von Containern auf die MariaDB zuzugreifen...
Firewall ist aus...
 


 

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