{{tag>software firefox syncserver docker todo}}
====== Installation de Firefox syncserver via Docker ======
L'image peut être construite à partir des sources disponible sur github à l'URL https://github.com/mozilla-services/syncserver
Cependant le plus simple reste d'utiliser directement l'image mise à disposition sur le hub docker à l'URL https://hub.docker.com/r/mozilla/syncserver
===== Test =====
Récupérer l'image
docker pull mozilla/syncserver:1.9.1
Créer un volume pour la persistance des données
docker volume create ffsync_data
# générer une clé secrète
$ head -c 20 /dev/urandom | sha1sum
594b47df21329................f192d9f4726
# définir la variable d'environnement avec la clé précédemment construite
$ docker run --rm --name ffsync \
-p 5000:5000 \
-e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \
-e SYNCSERVER_SECRET=594b47df21329................f192d9f4726 \
-e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db \
-e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \
-e SYNCSERVER_FORCE_WSGI_ENVIRON=false \
-e SYNCSERVER_DEBUG_ENABLED=true \
-e PORT=5000 \
mozilla/syncserver:1.9.1
Si l'on souhaite maintenir masquée la clé secrète on peut utiliser un fichier plutôt que directement la variable d'environnement:
# Générer la clé dans un fichier
$ head -c 20 /dev/urandom | sha1sum > ./secret-key.txt
docker run --rm --name ffsync \
-p 5000:5000 \
-e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \
-e SYNCSERVER_SECRET_FILE=/etc/ffsync/secret-key.txt \
-e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db \
-e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \
-e SYNCSERVER_FORCE_WSGI_ENVIRON=false \
-e PORT=5000 \
-v ./secret-key.txt:/etc/ffsync/secret-key.txt \
mozilla/syncserver:1.9.1
L'image docker s'exécute avec l' UID/GID 1001/1001. Cet utilisateur doit avoir le droit en lecture sur le fichier secret-key.txt
Lancer un shell bash dans le conteneur puis lancer l’exécution des tests:
$ docker container exec -it ffsync /bin/bash
/usr/local/bin/python -m syncstorage.tests.functional.test_storage \
--use-token-server http://localhost:5000/token/1.0/sync/1.5
Depuis un poste client, essayer de contacter le serveur via l'URL:
curl --silent "http://server.example.tld:5000/token/1.0/sync/1.5" | jq
{
"status": "error",
"errors": [
{
"location": "body",
"name": "",
"description": "Unauthorized"
}
]
}
Ici le serveur est bien à l'écoute, il répond que l'accès n'est pas autorisé.
===== docker-compose =====
version: '3.7'
services:
syncserver:
container_name: syncserver
image: mozilla/syncserver:latest
volumes:
- /syncserver:/data
ports:
- 5000:5000
environment:
SYNCSERVER_PUBLIC_URL: 'http://localhost:5000'
SYNCSERVER_SECRET: ''
SYNCSERVER_SQLURI: 'sqlite:////data/syncserver.db'
SYNCSERVER_BATCH_UPLOAD_ENABLED: 'true'
SYNCSERVER_FORCE_WSGI_ENVIRON: 'false'
PORT: '5000'
restart: always
===== Configurer ffsync derrière Traefik =====
===== Serveur d'authentification =====
docker pull mozilla/fxa-auth-server:v1.192.0
docker pull mozilla/fxa-content-server:v1.192.0
===== Production =====
Le serveur écoutant par défaut sur le port 5000 ne devrait pas être utilisé en production. Il ne sera pas en capacité de tenir une forte charge. Pour la mise en production il est recommandé d'utiliser un serveur web Apache ou Nginx avec leurs modules respectifs permettant le support du protocole WSGI.
===== Références =====
* https://github.com/mozilla-services/syncserver#runner-under-docker
* https://hub.docker.com/r/mozilla/syncserver
* https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html#further-configuration
* https://mozilla-services.readthedocs.io/en/latest/howtos/run-fxa.html