- Mitglied seit
- 05. Mrz 2013
- Beiträge
- 2.193
- Punkte für Reaktionen
- 767
- Punkte
- 154
Da der bisherige Firefox-Syncserver durch eine Rust-Version ersetzt wurde und nicht mehr gepflegt wird, hab ich versucht, diesen zum Laufen zu bekommen. Das war leider nicht von viel Erfolg begleitet. Deswegen hatte ich ein Issue auf der Github-Seite des neuen Servers aufgemacht: https://github.com/mozilla-services/syncstorage-rs/issues/1428
Dank der Hilfe dort, konnte ich es zum Laufen bringen.
In diesem Anleitung wird die lokale MariaDB der Synology genutzt.
1. Anlegen der Datenbanken
Anmelden über die Konsole an der Datenbank-Instanz und anlegen des User und der Datenbanken für den Sync-Server:
2. Erstellung des Containers
Es gibt zwei Möglichkeiten, den Container zu Erstelllen. 2a nutzt ein Image des Projekts, das MariaDB/MySQL allerdings nur bis Version 0.13.7 unterstützt. Für die aktuelle Version gilt die Anleitung unter 2b, die ein eigenes Image erzeugt.
2a. Anlegen des Containers mithilfe des Images (max. Version 0.13.7)
In einem Verzeichnis auf der DS folgende Dateien anlegen.
Achtung: Im Editor drauf achten, dass die Zeilen nur mit "LF" abgeschlossen sind.
docker-compose.yml:
Achtung: Nicht das Tag "latest" benutzen, da das nicht korrekt mit der aktuellen Version verknüpft ist.
.env:
In der Konsole (SSH) in das genutzte Verzeichnis wechseln (cd /volume1/...). Dort den Container mit "docker-compose up -d" erzeugen und starten.
Achtung: Nach dem ersten Starten müssen noch zwei Einträge in der Datenbank tokenserver_rs erzeugt werden:
Wenn mehr als ein Benutzer den Syncserver nutzen soll, muss der Wert für capacity angepasst werden. In meinem Beispiel steht er bereits auf "5".
Mit "http(s)://<your_server>:<port>/__heartbeat__" kann man den Sync-Server testen. Wenn alles funktioniert, müsste diese Ausgabe zu sehen sein:
2b. Anlegen des Containers mit Image Build (aktuelle Version 0.15.x)
Ich bin inzwischen auf Github über folgendes "gestolpert": https://github.com/dan-r/syncstorage-rs-docker
Damit wird ein aktuelleres Image über "docker-compose build" erzeugt.
Ich hab das Ganze etwas auf meine Umgebung angepasst und ausprobiert: Ich habe damit einen Container mit der aktuellen Version erstellen können. Im Anhang findet ihr die angepassten Dateien für diesen Weg (syncstorage-rs.zip).
Entpackt diese in einen Share auf eurer Syno. Passt danach die ".env"-Datei auf eure Einstellungen an. Der Parameter "VERSION" gibt die Version des Syncservers an, aktuell ist 0.15.x. Bei einer neuen Version einfach diesen Wert anpassen. Dann über SSH in diesen Ordner wechseln.
Dort dann mit "docker-compose build" das Image erzeugen. Das hat auf meiner DS918+ mit 16GB zwischen 15 - 20 Minuten gedauert. Teilweise ist die Auslastung ziemlich hoch gewesen. Das Image trägt nach Abschluss den Namen "syncstorage-rs:0.15.x".
Der nächste Schritt, das Anlegen des Containers kann dann über "docker-compose up -d" ausgeführt werden. Es ist aber auch möglich, dies über Portainer zu machen. Achtet dabei darauf, dass der Stack denselben Namen hat, wie der Ordner in dem die Dateien liegen.
Bei diesem Weg müssen die Datenbank-Einträge nicht manuell vorgenommen werden.
Falls ihr Container-Updates über Watchtower macht: Damit Watchtower für diesen Container keine Updates versucht, ist in der docker-compose.yml ein Label angelegt:
Was ich natürlich noch nicht testen konnte, ist was passiert, wenn eine neue Version herauskommt, da die 0.15.1 zur Zeit die aktuellste ist.
3. Sync-Server in Firefox einstellen
3a. Windows
Mit "about:config" in die Einstellungen von Firefox wechseln.
Der Wert "identity.sync.tokenserver.uri" in Firefox muss jetzt auf
geändert werden.
Über die Werte "services.sync.log.appender.file.logOnError" und "services.sync.log.appender.file.logOnSuccess" kann man Protokolle erzeugen lassen. Der erste Wert steht standardmässig auf "True", der zweite auf "False".
Wie an den Namen zu sehen, werden einmal Protokolle bei Fehlern und bei Erfolg erzeugt. Die Protokolle findet man unter "about:sync-log". Wenn alles korrekt läuft, stelle ich beide auf "False".
3b. Android
In Android ist die Einstellung etwas komplizierter. Bevor diese gemacht werden, vom Firefox-Konto abmelden. Will man ganz sicher gehen, sogar die Einstellungen von Firefox Android zurücksetzen.
Nach dem Neustart von Firefox in die Einstellungen gehen, dann zu "Über Firefox". Dort 5x auf das Firefox-Logo tippen. Damit wird das Debug-Menü aktiviert.
Dort gibt es unter "Sync Debug" die Möglichkeit, den eigenen Sync-Server einzutragen. Der Wert muss genauso wie unter Windows aussehen.
Danach kann man sich wieder am Firefox-Konto anmelden und die Synchronisation sollte gestartet werden.
Hinweis: 0.13.7 ist die zur Zeit die letzte Version, die lauffähig mit MariaDB ist. Neuere Container sind nur mit Spanner-Zugriff erzeugt worden. Für die aktuelle Version muss man das Image selbst erzeugen.
Im Moment gibt's noch einen Schönheitsfehler im Container-Log. Ich hab' wiederkehrende Einträge "Nov 03 18:14:51.367 ERRO Lost connection to MySQL server during query" hier. Das scheint aber kein negativen Einfluss auf die Synchronisation zu haben. Unter "About:sync-log" bekomme ich immer success-logs. Da bin ich noch am Suchen.
Dank der Hilfe dort, konnte ich es zum Laufen bringen.
In diesem Anleitung wird die lokale MariaDB der Synology genutzt.
1. Anlegen der Datenbanken
Anmelden über die Konsole an der Datenbank-Instanz und anlegen des User und der Datenbanken für den Sync-Server:
Code:
mysql -u root -p
CREATE USER sync_rs@"172.%" IDENTIFIED BY '<password for sync_rs>';
CREATE DATABASE IF NOT EXISTS syncstorage_rs;
CREATE DATABASE IF NOT EXISTS tokenserver_rs;
GRANT ALL PRIVILEGES ON syncstorage_rs.* TO sync_rs@"172.%";
GRANT ALL PRIVILEGES ON tokenserver_rs.* TO sync_rs@"172.%";
2. Erstellung des Containers
Es gibt zwei Möglichkeiten, den Container zu Erstelllen. 2a nutzt ein Image des Projekts, das MariaDB/MySQL allerdings nur bis Version 0.13.7 unterstützt. Für die aktuelle Version gilt die Anleitung unter 2b, die ein eigenes Image erzeugt.
2a. Anlegen des Containers mithilfe des Images (max. Version 0.13.7)
In einem Verzeichnis auf der DS folgende Dateien anlegen.
Achtung: Im Editor drauf achten, dass die Zeilen nur mit "LF" abgeschlossen sind.
docker-compose.yml:
Code:
version: "3.8"
services:
firefox-sync:
image: mozilla/syncstorage-rs:0.13.7
network_mode: bridge
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
ports:
- ${EXTERNAL_PORT}:8000
restart: always
Achtung: Nicht das Tag "latest" benutzen, da das nicht korrekt mit der aktuellen Version verknüpft ist.
.env:
Code:
COMPOSE_PROJECT_NAME=ffsync_rs
MYSQL_USER=sync_rs
MYSQL_PASS=<password of sync_rs>
SYNC_MASTER_SECRET=<your master secret>
METRICS_HASH_SECRET=<your hash secret>
DATABASE_SERVER=<ip of your DB server>
DATABASE_PORT=<port of your DB>
EXTERNAL_PORT=<external port for container>
In der Konsole (SSH) in das genutzte Verzeichnis wechseln (cd /volume1/...). Dort den Container mit "docker-compose up -d" erzeugen und starten.
Achtung: Nach dem ersten Starten müssen noch zwei Einträge in der Datenbank tokenserver_rs erzeugt werden:
Code:
mysql -u root -p
USE tokenserver_rs;
INSERT IGNORE INTO services (id, service, pattern) VALUES ('1', 'sync-1.5', '{node}/1.5/{uid}');
INSERT INTO nodes (id, service, node, available, current_load, capacity, downed, backoff) VALUES ('1', '1', 'https://<your_server>:<port>', '1', '0', '5', '0', '0');
Wenn mehr als ein Benutzer den Syncserver nutzen soll, muss der Wert für capacity angepasst werden. In meinem Beispiel steht er bereits auf "5".
Mit "http(s)://<your_server>:<port>/__heartbeat__" kann man den Sync-Server testen. Wenn alles funktioniert, müsste diese Ausgabe zu sehen sein:
2b. Anlegen des Containers mit Image Build (aktuelle Version 0.15.x)
Ich bin inzwischen auf Github über folgendes "gestolpert": https://github.com/dan-r/syncstorage-rs-docker
Damit wird ein aktuelleres Image über "docker-compose build" erzeugt.
Ich hab das Ganze etwas auf meine Umgebung angepasst und ausprobiert: Ich habe damit einen Container mit der aktuellen Version erstellen können. Im Anhang findet ihr die angepassten Dateien für diesen Weg (syncstorage-rs.zip).
Entpackt diese in einen Share auf eurer Syno. Passt danach die ".env"-Datei auf eure Einstellungen an. Der Parameter "VERSION" gibt die Version des Syncservers an, aktuell ist 0.15.x. Bei einer neuen Version einfach diesen Wert anpassen. Dann über SSH in diesen Ordner wechseln.
Dort dann mit "docker-compose build" das Image erzeugen. Das hat auf meiner DS918+ mit 16GB zwischen 15 - 20 Minuten gedauert. Teilweise ist die Auslastung ziemlich hoch gewesen. Das Image trägt nach Abschluss den Namen "syncstorage-rs:0.15.x".
Der nächste Schritt, das Anlegen des Containers kann dann über "docker-compose up -d" ausgeführt werden. Es ist aber auch möglich, dies über Portainer zu machen. Achtet dabei darauf, dass der Stack denselben Namen hat, wie der Ordner in dem die Dateien liegen.
Bei diesem Weg müssen die Datenbank-Einträge nicht manuell vorgenommen werden.
Falls ihr Container-Updates über Watchtower macht: Damit Watchtower für diesen Container keine Updates versucht, ist in der docker-compose.yml ein Label angelegt:
Code:
labels:
com.centurylinklabs.watchtower.enable: "false"
Was ich natürlich noch nicht testen konnte, ist was passiert, wenn eine neue Version herauskommt, da die 0.15.1 zur Zeit die aktuellste ist.
3. Sync-Server in Firefox einstellen
3a. Windows
Mit "about:config" in die Einstellungen von Firefox wechseln.
Der Wert "identity.sync.tokenserver.uri" in Firefox muss jetzt auf
Code:
http(s)://<your_server>:<port>/1.0/sync/1.5
Über die Werte "services.sync.log.appender.file.logOnError" und "services.sync.log.appender.file.logOnSuccess" kann man Protokolle erzeugen lassen. Der erste Wert steht standardmässig auf "True", der zweite auf "False".
Wie an den Namen zu sehen, werden einmal Protokolle bei Fehlern und bei Erfolg erzeugt. Die Protokolle findet man unter "about:sync-log". Wenn alles korrekt läuft, stelle ich beide auf "False".
3b. Android
In Android ist die Einstellung etwas komplizierter. Bevor diese gemacht werden, vom Firefox-Konto abmelden. Will man ganz sicher gehen, sogar die Einstellungen von Firefox Android zurücksetzen.
Nach dem Neustart von Firefox in die Einstellungen gehen, dann zu "Über Firefox". Dort 5x auf das Firefox-Logo tippen. Damit wird das Debug-Menü aktiviert.
Dort gibt es unter "Sync Debug" die Möglichkeit, den eigenen Sync-Server einzutragen. Der Wert muss genauso wie unter Windows aussehen.
Danach kann man sich wieder am Firefox-Konto anmelden und die Synchronisation sollte gestartet werden.
Hinweis: 0.13.7 ist die zur Zeit die letzte Version, die lauffähig mit MariaDB ist. Neuere Container sind nur mit Spanner-Zugriff erzeugt worden. Für die aktuelle Version muss man das Image selbst erzeugen.
18.07.2023: Fehlerbehebung, Aktualisierung und Straffung
18.07.2023: Einstellung für Android
12.09.2023: Auf Image-Version 0.13.7 geändert
09.11.2023: Hinweis wegen Version hinzugefügt
14.04.2024: Imageerstellung für Version 0.15.1
16.04.2024: Änderungen für Version 0.15.2
26.04.2024: Änderungen für 0.15.4
30.04.2024: Änderungen für 0.15.5
01.05.2024: Änderungen für 0.15.6
03.05.2024: Änderungen für 0.15.7
09.05.2024: Änderungen für 0.15.8
01.06.2024: Änderungen für 0.15.9
18.07.2023: Einstellung für Android
12.09.2023: Auf Image-Version 0.13.7 geändert
09.11.2023: Hinweis wegen Version hinzugefügt
14.04.2024: Imageerstellung für Version 0.15.1
16.04.2024: Änderungen für Version 0.15.2
26.04.2024: Änderungen für 0.15.4
30.04.2024: Änderungen für 0.15.5
01.05.2024: Änderungen für 0.15.6
03.05.2024: Änderungen für 0.15.7
09.05.2024: Änderungen für 0.15.8
01.06.2024: Änderungen für 0.15.9
Anhänge
Zuletzt bearbeitet: