Eigener Sync-Server für Firefox (Rust)

From
Revision as of 19:57, 11 October 2022 by Manuel Bucher (talk | contribs)
Jump to navigation Jump to search

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: Derzeit muss leider zusätzlich zu dem Rust-Storage der legacy python2 syncserver laufen.[3]
  • Podman, Ansible?, Rust sync server, legacy python2 server,

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

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

Referenzen