Aller au contenu principal

Installation via Docker

Sync-in peut être installé à l'aide de l’image Docker officielle disponible ici : https://hub.docker.com/r/syncin/server.

Cette image est conçue pour être utilisée dans une configuration avec Docker Compose.


📋 Prérequis

⚙️ Configuration matérielle minimale

  • RAM : 4 Go
  • CPU : 2 cores/vCPU
  • Espace disque : 2 Go

🐳 Docker

Cette configuration repose sur des fichiers Docker Compose utilisant l’extension x-include.
Vous aurez besoin de :

  • Docker Engine version 24 ou supérieure
  • Docker Compose version 2.20 ou supérieure

✅ Vous pouvez vérifier les versions installées avec :

docker --version
docker compose version

🔗 Si Docker n’est pas installé, suivez le guide d'installation officiel de Docker.

📦 Fichiers de configuration

Pour obtenir le paquet sync-in-docker depuis https://github.com/Sync-in/server/releases, utilisez l’une des méthodes suivantes :

  • curl et unzip :
    curl -L -o sync-in-docker.zip \
    https://github.com/Sync-in/server/releases/latest/download/sync-in-docker.zip && \
    unzip sync-in-docker.zip
  • ou avec curl et tar:
    curl -L -o sync-in-docker.tar.gz \
    https://github.com/Sync-in/server/releases/latest/download/sync-in-docker.tar.gz && \
    tar zxvf sync-in-docker.tar.gz

Vous devriez obtenir la structure suivante dans le répertoire sync-in-docker :

├── config
│ ├── nginx
│ │ ├── docker-compose.nginx.yaml
│ │ └── nginx.conf
│ │ └── onlyoffice.conf
│ ├── onlyoffice
│ │ └── docker-compose.onlyoffice.yaml
│ └── sync-in-desktop-releases
│ └── docker-compose.sync-in-desktop-releases.yaml
│ └── update.sh
├── docker-compose.yaml
└── environment.yaml

Vous pouvez vérifier la structure et le contenu depuis le dépôt GitHub.


🚀 Démarrage rapide

1. Secrets par défaut

Accédez au répertoire Docker Compose :

cd sync-in-docker

Avant de démarrer le serveur, veillez à remplacer les secrets par défaut pour des raisons de sécurité.

Modifiez le fichier environment.yaml :

auth:
token:
access:
secret: "changeAccessWithStrongSecret"
refresh:
secret: "changeRefreshWithStrongSecret"
mysql:
# Utilisez le mot de passe root défini dans docker-compose.yaml
url: mysql://root:MySQLRootPassword@mariadb:3306/sync_in

Puis, modifiez le fichier docker-compose.yaml pour vous assurer que le mot de passe MySQL correspond :

services:
mariadb:
environment:
MYSQL_ROOT_PASSWORD: "MySQLRootPassword"
Sécurité

Utilisez des chaînes longues et générées aléatoirement pour vos secrets afin de garantir une sécurité maximale.

info

N’oubliez pas d’ajouter des guillemets si vos mots de passe contiennent des caractères spéciaux.

astuce

Vous pouvez utiliser des variables d’environnement pour configurer les secrets précédemment définis.
Consultez la section Variables d’environnement pour plus de détails

2. Lancer le serveur Sync-in

Pour définir vos propres identifiants administrateur au premier lancement, utilisez :

INIT_ADMIN=true INIT_ADMIN_LOGIN='user' INIT_ADMIN_PASSWORD='password' docker compose up -d

Remplacez user et password par les identifiants souhaités.

Si vous ne définissez pas ces variables et lancez simplement :

INIT_ADMIN=true docker compose up -d

Le serveur utilisera les identifiants administrateur par défaut :

  • Login : sync-in
  • Mot de passe : sync-in
attention

Important : Pour des raisons de sécurité, il est fortement recommandé de modifier ces identifiants dès votre première connexion.

info

Pour vérifier le statut des conteneurs : docker compose ps

3. Accéder à l’interface Web

Une fois le serveur lancé, ouvrez votre navigateur à l’adresse suivante :

http://localhost:8080

Connectez-vous en utilisant les identifiants administrateur définis à l’étape 2.


🛠️ Configuration

Nginx (recommandé)

Dans un environnement de production, un reverse proxy permet un accès sécurisé et performant à votre instance Sync-in.

L’image officielle nginx est utilisée, et une configuration dédiée à Sync-in est incluse dans ce dépôt.

Pour l’activer, éditez le fichier docker-compose.yaml et décommentez les lignes suivantes en haut du fichier :

include:
- ./config/nginx/docker-compose.nginx.yaml

Pour configurer HTTPS, modifiez le fichier ./config/nginx/nginx.conf et ajoutez vos certificats SSL.

info

docker compose up -d pour appliquer les modifications

Nginx est maintenant activé le port 80, rendant Sync-in accessible via http://localhost.

OnlyOffice (optionnel)

⚠️ Pour activer l’intégration OnlyOffice, assurez-vous d’abord que la configuration Nginx est correctement configurée.

Modifiez ./config/nginx/nginx.conf, décommentez la ligne suivante à la fin du fichier :

include onlyoffice.conf;

Ensuite, dans docker-compose.yaml, décommentez les lignes suivantes :

include:
- ./config/nginx/docker-compose.nginx.yaml
- ./config/onlyoffice/docker-compose.onlyoffice.yaml

Modifiez environment.yaml pour activer l’intégration :

applications:
files:
onlyoffice:
# activer l’intégration
enabled: true
# utiliser le même secret que dans docker-compose.yaml
secret: onlyOfficeSecret

Remplacez onlyOfficeSecret par une valeur sécurisée, et assurez-vous qu’elle correspond à celle définie dans ./config/onlyoffice/docker-compose.onlyoffice.yaml :

services:
onlyoffice:
environment:
- JWT_SECRET=onlyOfficeSecret
info

docker compose up -d && docker compose restart nginx sync_in pour appliquer les changements

Sync-in et OnlyOffice s’exécutent dans des conteneurs Docker et communiquent via Nginx.
Il est essentiel d’accéder à l’interface en utilisant soit l’adresse IP du serveur, soit un nom de domaine correctement configuré.

attention

Accéder à Sync-in via http://localhost ou http://127.0.0.1 empêchera le bon fonctionnement d’OnlyOffice (les documents ne pourront ni être affichés ni édités).

Dépôt de clients (optionnel)

Si les applications de bureau ne disposent pas d’un accès à internet, le serveur Sync-in peut faire office de dépôt local pour les releases des clients applicatifs.
Les utilisateurs peuvent ainsi télécharger les applications directement depuis leur compte et bénéficier des mises à jour automatiques.

Pour activer cette fonctionnalité, éditez docker-compose.yaml et décommentez :

include:
- ./config/sync-in-desktop-releases/docker-compose.sync-in-desktop-releases.yaml

Puis, dans environment.yaml, ajoutez la section suivante :

applications:
files:
appStore:
repository: local

Pour activer ou mettre à jour les versions des clients, exécutez les commandes suivantes :

chmod +x ./config/sync-in-desktop-releases/update.sh
./config/sync-in-desktop-releases/update.sh

🌱 Variables d’environnement

Lors de l’initialisation

  • SKIP_INIT : Ignore l’étape d’initialisation (migration de la base de données, création du compte administrateur, mise à jour des droits, etc.)
  • INIT_ADMIN : Si défini (à true ou toute autre valeur non vide), force la création du compte administrateur lors de l’initialisation.
  • INIT_ADMIN_LOGIN : Nom d’utilisateur du compte administrateur à créer lors de l’initialisation.
  • INIT_ADMIN_PASSWORD : Mot de passe du compte administrateur à créer lors de l’initialisation.
  • PUID : Définit l’identifiant utilisateur (UID) utilisé par le conteneur (utile pour les droits sur les fichiers).
  • PGID : Définit l’identifiant de groupe (GID) utilisé par le conteneur (utile pour l’accès aux volumes partagés).

Lors de l’exécution

Tous les paramètres de configuration du serveur Sync-in peuvent être définis via des variables d’environnement préfixées par SYNCIN_, voir la section correspondante.


🔐 Gestion des secrets Docker

Docker Secrets (notamment dans un environnement Swarm ou Compose) permettent de stocker en toute sécurité des données sensibles (comme des mots de passe, clés API…) en les montant dans les conteneurs sous forme de fichiers, typiquement dans le dossier /run/secrets/<nom_du_secret>.

Par design, Docker ne transforme jamais directement ces secrets en variables d’environnement, afin de limiter les risques de fuite (par exemple via docker inspect ou les variables d’environnement accessibles dans le processus). L'image Docker de Sync-in, ainsi que de nombreuses images officielles (MySQL, PostgreSQL ...), adopte et supporte cette convention *_FILE.

Par exemple, plutôt que de définir directement la variable d’environnement SYNCIN_MYSQL_URL, il est recommandé d’utiliser SYNCIN_MYSQL_URL_FILE=/run/secrets/mysql_password. Le serveur Sync-in se chargera alors de lire le contenu du fichier spécifié pour initialiser la variable en interne.

Cette approche garantit une gestion sécurisée des secrets tout en maintenant la compatibilité avec les mécanismes de configuration existants.

Pour plus d'informations, consulter la documentation officielle Docker concernant la gestion des secrets.


🧾 Commandes utiles

Ces commandes sont à exécuter depuis la racine du répertoire sync-in-docker, dans l’environnement Docker Compose de Sync-in.

Conteneur Sync-in

👤 Créer un utilisateur

Une fois le conteneur Sync-in démarré, vous pouvez créer de nouveaux comptes directement à l’intérieur du conteneur.

Remplacez "user" et "password" par les identifiants que vous souhaitez attribuer.

docker compose exec -it sync_in sh -c 'node server/infrastructure/database/scripts/create-user.js --role user --login "user" --password "password"'
astuce

Remplacez --role user par --role admin pour créer un compte administrateur.

🔄 Mettre à jour le conteneur

Télécharge la dernière image de Sync-in, recrée/redémarre le conteneur puis supprime les images devenues inutilisées.

docker compose pull sync_in && docker compose up -d && docker image prune -f

Docker Compose

🚀 Démarrer les services

Lance les services définis dans le docker-compose.yml en arrière-plan.

docker compose up -d

🛑 Arrêter et nettoyer les services

Arrête les services, supprime les conteneurs et les réseaux.

docker compose down

⚠️ Nettoyage complet (inclut la suppression des données des volumes !)

Arrête les services, supprime les conteneurs, les réseaux, les images, les volumes et les conteneurs orphelins.

docker compose down --rmi all --volumes --remove-orphans

📜 Voir les logs

Affiche les logs en temps réel de tous les services.

docker compose logs -f --tail 100

Voir les logs d’un service spécifique (ex. Sync-in)

docker compose logs -f --tail 100 sync_in