Eigener Sync-Server für Firefox (Rust): Difference between revisions

From
Jump to navigation Jump to search
No edit summary
(Link Referenzen angepasst.)
Line 1: Line 1:
<b>Firefox Sync</b> ist ein Service zum Synchronisieren von Bookmarks, Passwörtern und Browser History. Diese werden zentral auf Mozilla-Servern verschlüsselt gespeichert.[1] Der Dienst ist Open Source (MPLv2) und lässt sich selbsthosten. Derzeit läuft in der Informatik ein [[eigener Sync-Server für Firefox]] der Version 1.5. Seitdem gab es eine Neuimplementierung in Rust[2]. Bei diesem Artikel handelt es sich um das Aufsetzen und Einrichten der Rust-Neuimplementierung.
<b><i>Firefox Sync</i></b> ist ein Service zum Synchronisieren von Bookmarks, Passwörtern und Browser History.
Diese werden zentral auf Mozilla-Servern verschlüsselt gespeichert.[https://hacks.mozilla.org/2018/11/firefox-sync-privacy/]
Der Dienst ist Open Source (MPLv2) und lässt sich selbst hosten.
Derzeit läuft in der Informatik ein [[eigener Sync-Server für Firefox]] der Version 1.5. Seitdem gab es eine Neuimplementierung in Rust[https://github.com/mozilla-services/syncstorage-rs/].
Bei diesem Artikel handelt es sich um das Aufsetzen und Einrichten der Rust-Neuimplementierung.


== Aufbau ==
== Aufbau ==
Line 6: Line 10:


* Account Service
* Account Service
* Sync Storage: Zwischenzeitlich sah es so aus, als müsste zusätzlich zu dem Rust-Storage der legacy python2 syncserver als tokenserver laufen[3]. Dies stellte sich als Falsch heraus. Der Syncstorage-rs implementiert auch den Tokenserver.
* Sync Storage: Zwischenzeitlich sah es so aus, als müsste zusätzlich zu dem Rust-Storage der legacy python2 syncserver als tokenserver laufen[https://github.com/mozilla-services/syncstorage-rs/tree/fca795e3c09c7feee12b450791a53bb0a2871b48#connecting-to-firefox]. Dies stellte sich als Falsch heraus. Der Syncstorage-rs implementiert auch den Tokenserver.


In Zukunft: Podman, Ansible. Einrichten mittels Podman wird kurz angerissen.
In Zukunft: Podman, Ansible. Einrichten mittels Podman wird kurz angerissen.
Line 22: Line 26:
[mariadb]$ GRANT ALL PRIVILEGES on syncstorage_rs.* to syncstorage;
[mariadb]$ GRANT ALL PRIVILEGES on syncstorage_rs.* to syncstorage;


Tabellen für tokenserver erstellen.[https://github.com/mozilla-services/syncstorage-rs/blob/3a21947cf58df29809f406d689c4be3afa97e38e/syncstorage/src/tokenserver/README.md#database]
Tabellen für tokenserver erstellen.[4] Hier verwende ich die gleiche Datenbank `syncstorage_rs` für den Tokenserver, da sich die Tabellennamen nicht überschneiden und es so auch in der AUR-Diskussion beschrieben wird.
Hier verwende ich die gleiche Datenbank `syncstorage_rs` für den Tokenserver, da sich die Tabellennamen nicht überschneiden und es so auch in der AUR-Diskussion beschrieben wird.
Die Konsole befindet sich im Git-Verzeichnis von https://github.com/mozilla-services/syncstorage-rs
Die Konsole befindet sich im Git-Verzeichnis von https://github.com/mozilla-services/syncstorage-rs


Line 88: Line 93:
# Arch linux AUR-Paket: https://aur.archlinux.org/packages/firefox-syncstorage-git#comment-840519
# Arch linux AUR-Paket: https://aur.archlinux.org/packages/firefox-syncstorage-git#comment-840519


== Referenzen ==
== Zusätzliche Referenzen ==


* [1]: [https://hacks.mozilla.org/2018/11/firefox-sync-privacy/ Firefox Sync, Private by Design]
* [2]: [https://github.com/mozilla-services/syncstorage-rs/ Github: syncstorage-rs]
* [3]: [https://github.com/mozilla-services/syncstorage-rs/tree/fca795e3c09c7feee12b450791a53bb0a2871b48#connecting-to-firefox ]
* [4]: https://github.com/mozilla-services/syncstorage-rs/blob/3a21947cf58df29809f406d689c4be3afa97e38e/syncstorage/src/tokenserver/README.md#database
* https://github.com/mozilla-services/syncstorage-rs/issues/1217
* https://github.com/mozilla-services/syncstorage-rs/issues/1217
*
*

Revision as of 19:27, 30 October 2022

Firefox Sync ist ein Service zum Synchronisieren von Bookmarks, Passwörtern und Browser History. Diese werden zentral auf Mozilla-Servern verschlüsselt gespeichert.[1] Der Dienst ist Open Source (MPLv2) und lässt sich selbst hosten. Derzeit läuft in der Informatik ein eigener Sync-Server für Firefox der Version 1.5. Seitdem gab es eine Neuimplementierung in Rust[2]. Bei diesem Artikel handelt es sich um das Aufsetzen und Einrichten der Rust-Neuimplementierung.

Aufbau

Firefox Sync besteht aus zwei Komponenten:

  • Account Service
  • Sync Storage: Zwischenzeitlich sah es so aus, als müsste zusätzlich zu dem Rust-Storage der legacy python2 syncserver als tokenserver laufen[3]. Dies stellte sich als Falsch heraus. Der Syncstorage-rs implementiert auch den Tokenserver.

In Zukunft: Podman, Ansible. Einrichten mittels Podman wird kurz angerissen.

Schritte

Einrichten von Mysql für Sync-Server

$ sudo pacman -S mariadb
$ sudo systemctl start mariadb
$ sudo mysql_secure_installation
$ mysql -u root -p
[mariadb]$ CREATE USER syncstorage IDENTIFIED BY '**hidden**';
[mariadb]$ CREATE DATABASE syncstorage_rs;
[mariadb]$ GRANT ALL PRIVILEGES on syncstorage_rs.* to syncstorage;

Tabellen für tokenserver erstellen.[4] Hier verwende ich die gleiche Datenbank `syncstorage_rs` für den Tokenserver, da sich die Tabellennamen nicht überschneiden und es so auch in der AUR-Diskussion beschrieben wird. Die Konsole befindet sich im Git-Verzeichnis von https://github.com/mozilla-services/syncstorage-rs

$ cargo install diesel_cli
$ diesel --database-url mysql://syncstorage:ix79unOS0nF9jvTgVsQS9Q01jseiYFBq@localhost/syncstorage_rs migration --migration-dir syncstorage/src/tokenserver/migrations/ run
$ mysql -u syncstorage -p
[mariadb]$ USE syncstorage_rs;
[mariadb]$ INSERT INTO `services` (`id`, `service`, `pattern`) VALUES ('1', 'sync-1.5', '{node}/1.5/{uid}');
[mariadb]$ INSERT INTO `nodes` (`id`, `service`, `node`, `available`, `current_load`, `capacity`, `downed`, `backoff`) VALUES ('1', '1', 'http://localhost:8000', '1', '0', '1', '0', '0');

Tokenserver starten. Die Konsole befindet sich weiterhin im Git-Verzeichnis von https://github.com/mozilla-services/syncstorage-rs

$ make run

Erster start vom Sync-Server

In Configdatei: `mysql://syncstorage:**hidden**@localhost/syncstorage`

$ head -c 20 /dev/urandom | sha1sum  # generieren des master_secrets
$ cp config/local.example.toml config/local.toml
$ vim config/local.toml
# Example MySQL DSN:
database_url = "mysql://syncstorage:ix79unOS0nF9jvTgVsQS9Q01jseiYFBq@localhost/syncstorage_rs"

# Example Spanner DSN:
# database_url="spanner://projects/SAMPLE_GCP_PROJECT/instances/SAMPLE_SPANNER_INSTANCE/databases/SAMPLE_SPANNER_DB"

"limits.max_total_records"=1666 # See issues #298/#333
master_secret = "7102dceffaf5ce47e5e16b94be8bd729cf74c3bc"

# removing this line will default to moz_json formatted logs (which is preferred for production envs)
human_logs = 1

# enable quota limits
enable_quota = 0
# set the quota limit to 2GB.
# max_quota_limit = 200000000

# Example Tokenserver settings:
disable_syncstorage = false
tokenserver.database_url = "mysql://syncstorage:ix79unOS0nF9jvTgVsQS9Q01jseiYFBq@localhost/syncstorage_rs"
tokenserver.enabled = true
tokenserver.fxa_email_domain = "api.accounts.stage.mozaws.net"
tokenserver.fxa_metrics_hash_secret = "7102dceffaf5ce47e5e16b94be8bd729cf74c3bc"
tokenserver.fxa_oauth_server_url = "https://oauth.accounts.firefox.com"
tokenserver.fxa_browserid_audience = "https://token.stage.mozaws.net"
tokenserver.fxa_browserid_issuer = "https://api-accounts.stage.mozaws.net"
tokenserver.fxa_browserid_server_url = "https://verifier.stage.mozaws.net/v2"
tokenserver.test_mode_enabled = false
tokenserver.additional_blocking_threads_for_fxa_requests = 2

# cors settings
# cors_allowed_origin = "localhost"
cors_allowed_origin = "null"
# cors_max_age = 86400

Ressourcen

  1. Artikel in diesem Wiki: Eigener Sync-Server für Firefox
  2. Projektbeschreibung
  3. Arch linux AUR-Paket: https://aur.archlinux.org/packages/firefox-syncstorage-git#comment-840519

Zusätzliche Referenzen