Eigener Sync-Server für Firefox (Rust)
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 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.
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
- Artikel in diesem Wiki: Eigener Sync-Server für Firefox
- Projektbeschreibung
- Arch linux AUR-Paket: https://aur.archlinux.org/packages/firefox-syncstorage-git#comment-840519