Aller au contenu principal

Configuration Serveur

Toutes les options de configuration du serveur Sync-in sont définies dans le fichier environment.yaml.

Un exemple complet est disponible sur GitHub : environment.dist.yaml.

Ce fichier vous permet de personnaliser le fonctionnement de votre instance Sync-in : réseau, authentification, base de données, cache, messagerie, etc.


Environment.yaml

server

  • host : Adresse IP d'écoute du serveur.
    • Défaut : 0.0.0.0
    • Type : string (IP)
  • port : Port utilisé pour l'interface web.
    • Défaut : 8080
    • Type : number
  • workers : Nombre de processus.
    • Défaut : 1
    • Type : number | auto | 0
    • Note : auto ou 0 pour utiliser tous les cœurs CPU
  • trustProxy : Active la gestion des proxies.
  • restartOnFailure : Redémarre automatiquement les workers en cas d'échec.
    • Défaut : true
    • Type : boolean

logger

  • level : Niveau de journalisation du serveur.
    • Défaut : info
    • Type : trace | debug | info | warn | error | fatal
  • stdout : Affiche les logs dans la console (true) ou les écrit dans un fichier (false).
    • Défaut : true
    • Type : boolean
  • colorize: Active la coloration des logs.
    • Défaut : true
    • Type : boolean
  • jsonOutput : Permet d'activer la sortie des logs au format JSON.
    • Valeur par défaut : false
    • Type : boolean
    • Note : Lorsque cette option est activée, l'option colorize est ignorée.
  • filePath: Chemin du fichier de log utilisé lorsque stdout est à false.
    • Défaut : logs/server.log
    • Type : string

mysql

  • url : URL de connexion MySQL.
    • Défaut : non défini
    • Type : string
    • Requis : oui
    • Exemple : mysql://user:password@localhost:3306/database
  • logQueries : Permet de journaliser toutes les requêtes SQL envoyées à la base de données.
    • Défaut : false
    • Type : boolean

cache

  • adapter : Système de cache.
    • Défaut : mysql
    • Type : mysql | redis
  • ttl : Durée de vie des données en cache, en secondes.
    • Défaut : 60
    • Type : number
  • redis : URL de connexion Redis (si adapter: redis est utilisé).
    • Défaut : redis://127.0.0.1:6379
    • Type : string
    • Requis : oui (si adapter: redis)

websocket

  • adapter : Définit le mode de gestion des connexions WebSocket.
    • Défaut : cluster
    • Type : cluster | redis
  • corsOrigin : Origine(s) autorisée(s) pour les connexions WebSocket.
    • Défaut : *
    • Type : string
  • redis : URL de connexion Redis (si adapter: redis).
    • Défaut : redis://127.0.0.1:6379
    • Type : string
    • Requis : oui (si adapter: redis)

mail

La section mail est optionnelle. Lorsqu'elle est absente, les notifications par e-mail et les fonctionnalités basées sur l'envoi d'e-mails sont désactivées.

  • host : Hôte du serveur SMTP.
    • Défaut : non défini
    • Type : string
    • Requis : oui (si la section mail est définie)
  • port : Port SMTP (ex. : 587).
    • Défaut : 25
    • Type : number
  • sender : Adresse d'envoi.
    • Défaut : Sync-in<notification@sync-in.com>
    • Type : string
  • auth:
    • user : Nom d'utilisateur SMTP.
      • Défaut : non défini
      • Type : string
    • pass : Mot de passe SMTP.
      • Défaut : non défini
      • Type : string
  • secure : Connexion SSL.
    • Défaut : false
    • Type : boolean
  • ignoreTLS: Désactive l'utilisation de STARTTLS même si le serveur l'annonce.
    • Défaut : false
    • Type : boolean
  • rejectUnauthorized: Rejette la connexion si le certificat TLS du serveur est invalide.
    • Défaut : false
    • Type : boolean
  • logger : Active les logs SMTP.
    • Défaut : false
    • Type : boolean
  • debug : Active le mode débogage.
    • Défaut : false
    • Type : boolean

auth

  • provider : Méthode d'authentification.
    • Défaut : mysql
    • Type : mysql | ldap | oidc
  • cookieSameSite : Politique SameSite pour les cookies.
    • Défaut : strict
    • Type : lax | strict
  • encryptionKey : Clé de chiffrement des secrets utilisateurs dans la base de données, optionnelle mais recommandée.
    • Défaut : non défini
    • Type : string
    • Note : ⚠️ Une fois la MFA activée, toute modification ou suppression de la clé de chiffrement rendra les secrets invalides, empêchant toute authentification ultérieure.
  • mfa:
    • totp:
      • enabled : Activer l'authentification TOTP pour tous les utilisateurs.
        • Défaut : true
        • Type : boolean
      • issuer : Nom affiché dans l'application d'authentification.
        • Défaut : Sync-in
        • Type : string
  • token:
    • access:
      • secret : Secret JWT pour les tokens d'accès.
        • Défaut : non défini
        • Type : string
        • Requis : oui
      • expiration : Durée de validité du token d'accès.
        • Défaut : 30m
        • Type : string
    • refresh:
      • secret : Secret JWT pour les tokens de rafraîchissement.
        • Défaut : non défini
        • Type : string
        • Requis : oui
      • expiration : Durée de validité du token de rafraîchissement.
        • Défaut : 4h
        • Type : string
  • ldap (si provider: ldap) :

    • Note : Voir la documentation dédiée
    • servers : Liste des serveurs LDAP.
      • Défaut : []
      • Type : string[]
      • Requis : oui
      • Exemple : [ldap://localhost:389]
    • tlsOptions: Options TLS de Node.js utilisées pour la connexion LDAP sécurisée.
      • rejectUnauthorized: rejette la connexion si le certificat TLS du serveur est invalide.
        • Défaut : true
        • Type : boolean
        • Requis : non
      • ca: Liste de chemins valides vers les certificats.
        • Défaut : []
        • Type : string[]
        • Requis : non
        • Exemple : [/app/certs/ca.pem]
      • * : Les autres options sont disponibles dans la documentation NodeJS
    • baseDN : DN de base.
      • Défaut : non défini
      • Type : string
      • Requis : oui
      • Exemple : ou=people,dc=example,dc=com
    • filter : Filtre LDAP optionnel ajouté à la recherche.
      • Défaut : non défini
      • Type : string
      • Exemple : (acl=admin)
    • upnSuffix : Suffixe de domaine AD utilisé avec userPrincipalName.
      • Défaut : non défini
      • Type : string
      • Exemple : user@sync-in.com
    • netbiosName : Nom de domaine NetBIOS utilisé avec sAMAccountName.
      • Défaut : non défini
      • Type : string
      • Exemple : SYNC_IN\user
    • serviceBindDN : DN d'un compte de service pour effectuer les recherches LDAP.
      • Défaut : non défini
      • Type : string
    • serviceBindPassword : Mot de passe du compte de service.
      • Défaut : non défini
      • Type : string
    • attributes:
      • login : Attribut LDAP utilisé pour l'identification de l'utilisateur.
        • Défaut : uid
        • Type : uid | cn | mail | sAMAccountName | userPrincipalName
      • email : Attribut LDAP contenant l'adresse e-mail (par ex. mail, email).
        • Défaut : mail
        • Type : string
      • storageQuota : Attribut LDAP contenant le quota de stockage de l'utilisateur, en octets.
        • Défaut : storageQuota
        • Type : string
        • Note : Une valeur invalide laisse le quota local inchangé. Une valeur absente ou 0 définit un stockage illimité.
    • options:
      • autoCreateUser : Crée un utilisateur local lors de la première connexion LDAP.
        • Défaut : true
        • Type : boolean
      • autoCreatePermissions : Permissions attribuées aux utilisateurs créés automatiquement.
      • adminGroup : Groupe LDAP qui donne les privilèges admin (CN simple ou DN complet).
        • Défaut : non défini
        • Type : string
      • enablePasswordAuthFallback : Autorise le mot de passe local si LDAP est indisponible.
        • Défaut : true
        • Type : boolean
  • oidc (si provider: oidc) :

    • Note : Voir la documentation dédiée
    • issuerUrl : URL de découverte du fournisseur OpenID Connect.
      • Défaut : non défini
      • Type : string
      • Requis : oui
    • clientId : Client ID OAuth 2.0.
      • Défaut : non défini
      • Type : string
      • Requis : oui
    • clientSecret : Client Secret OAuth 2.0.
      • Défaut : non défini
      • Type : string
      • Requis : oui
    • redirectUri : URL de callback enregistrée côté fournisseur.
      • Défaut : non défini
      • Type : string
      • Requis : oui
      • Note : ⚠️ L'URL doit se terminer par /api/auth/oidc/callback
    • options:
      • autoCreateUser : Crée un utilisateur local à la première connexion OIDC.
        • Défaut : true
        • Type : boolean
      • autoCreatePermissions : Permissions attribuées aux utilisateurs créés automatiquement.
      • adminRoleOrGroup : Rôle ou groupe donnant les privilèges administrateur.
        • Défaut : non défini
        • Type : string
      • storageQuotaClaim : Claim OIDC contenant le quota de stockage de l'utilisateur, en octets.
        • Défaut : storageQuota
        • Type : string
        • Note : Un claim invalide laisse le quota local inchangé. Une valeur de claim absente ou 0 définit un stockage illimité.
      • enablePasswordAuth : Autorise l'authentification locale par mot de passe pour les utilisateurs existants.
        • Défaut : true
        • Type : boolean
      • autoRedirect : Redirige automatiquement vers l'IdP.
        • Défaut : false
        • Type : boolean
      • buttonText : Libellé du bouton de connexion OIDC.
        • Défaut : Continue with OpenID Connect
        • Type : string
    • security:
      • scope : Scopes demandés.
        • Défaut : openid email profile
        • Type : string
      • supportPKCE : Active le support PKCE dans le flux d'autorisation.
        • Défaut : true
        • Type : boolean
      • tokenEndpointAuthMethod : Méthode d'authentification sur l'endpoint token.
        • Défaut : client_secret_basic
        • Type : client_secret_basic | client_secret_post | none
        • Note : clientSecret reste requis dans la configuration Sync-in même lorsque cette valeur est none.
      • tokenSigningAlg : Algorithme de signature des ID tokens.
        • Défaut : RS256
        • Type : string
      • userInfoSigningAlg : Algorithme pour une réponse UserInfo signée.
        • Défaut : non défini
        • Type : string
      • skipSubjectCheck : Désactive la vérification du claim sub.
        • Défaut : false
        • Type : boolean

applications

  • users:
    • showUngroupedUsers : Rend les utilisateurs sans groupe visibles globalement pour les utilisateurs standards et les administrateurs.
      • Défaut : true
      • Type : boolean
      • Note : Les comptes invités sont exclus de cette visibilité globale, comme comptes listés et comme demandeurs.
  • files:
    • dataPath : Emplacement de stockage des fichiers de l'application, incluant les fichiers utilisateurs, les espaces et les fichiers temporaires.
      • Défaut : non défini
      • Type : string
      • Requis : oui
    • maxUploadSize : Taille maximale d'un fichier à uploader.
      • Défaut : 5368709120 (5 GB)
      • Type : number
      • Note : Valeur exprimée en octets.
    • contentIndexing:
      • enabled : Activer l’indexation du contenu des fichiers pour la recherche (désactiver cette option désactive la recherche full-text).
        • Défaut : true
        • Type : boolean
      • ocr:
        • Note : Voir la documentation dédiée
        • enabled : Activer l’OCR pour les images des PDF
          • Défaut: true
          • Type: boolean
        • languages : Langues OCR utilisées.
          • Défaut : [eng]
          • Type : string[]
          • Exemple : [eng,fra]
          • Note : Prend en charge les codes ISO 639-2/T à trois lettres : eng, spa, fra, deu, etc.
        • offline : Ne pas télécharger les langues OCR, utiliser uniquement les fichiers de langue locaux présents.
          • Défaut : false
          • Type : boolean
        • languagesPath : Chemin vers les fichiers de langue OCR locaux
          • Défaut : répertoire OCR intégré
          • Type : string
          • Note : Utilisé lorsque le mode hors ligne est activé ou pour remplacer l’emplacement par défaut.
    • trashRetention:
      • users : Délai de nettoyage automatique de la corbeille des espaces personnels, en jours.
        • Défaut : false
        • Type : number | false
        • Note : false ou 0 désactive le nettoyage.
      • spaces : Délai de nettoyage automatique de la corbeille des espaces collaboratifs, en jours.
        • Défaut : false
        • Type : number | false
        • Note : false ou 0 désactive le nettoyage.
    • showHiddenFiles: Masquer ou afficher les fichiers commençant par un point dans l'explorateur de fichiers.
      • Défaut : false
      • Type : boolean
    • sampleDocuments : Groupes de documents affichés dans la fenêtre de création d'un nouveau document.
      • Défaut : [opendocument, microsoft]
      • Type : string[]
      • Valeurs : opendocument | microsoft
      • Note : Utilisez [] pour n'afficher que Text et Markdown.
    • onlyoffice:
      • enabled : Active l'intégration OnlyOffice.
        • Défaut : false
        • Type : boolean
      • secret : Secret JWT partagé avec OnlyOffice.
        • Défaut : non défini
        • Type : string
        • Requis : oui (si activé pour OnlyOffice)
      • externalServer : URL de votre serveur OnlyOffice.
        • Défaut : non défini
        • Type : string
        • Exemple : https://onlyoffice.my-domain.com
        • Note : Optionnel si vous utilisez le Docker Compose Sync-in.
      • verifySSL : Vérifie le certificat SSL.
        • Défaut : false
        • Type : boolean
    • collabora:
      • enabled : Active l'intégration Collabora Online.
        • Défaut : false
        • Type : boolean
      • externalServer : URL de votre serveur Collabora Online.
        • Défaut : non défini
        • Type : string
        • Exemple : https://collabora.my-domain.com
        • Note : Optionnel si vous utilisez le Docker Compose Sync-in.
  • appStore:
    • repository : Choix du dépôt pour les releases des clients applicatifs.
      • Défaut : public
      • Type : public | local
      • Note : Cette section est définie directement sous applications, pas sous applications.files.

Variables d'environnement

Les paramètres scalaires de configuration du serveur Sync-in peuvent être définis via des variables d'environnement préfixées par SYNCIN_.

Par exemple, la configuration suivante :

auth:
encryptionKey: "changeEncryptionKeyWithStrongKey"
token:
access:
secret: "changeAccessWithStrongSecret"
refresh:
secret: "changeRefreshWithStrongSecret"
mysql:
url: mysql://root:MySQLRootPassword@mariadb:3306/sync_in

Peut être reproduite à l'aide des variables d'environnement suivantes :

SYNCIN_AUTH_ENCRYPTIONKEY="changeEncryptionKeyWithStrongKey"
SYNCIN_AUTH_TOKEN_ACCESS_SECRET="changeAccessWithStrongSecret"
SYNCIN_AUTH_TOKEN_REFRESH_SECRET="changeRefreshWithStrongSecret"
SYNCIN_MYSQL_URL="mysql://root:MySQLRootPassword@mariadb:3306/sync_in"
info

Pour les valeurs booléennes, utilisez true ou false.
Les valeurs numériques sont automatiquement interprétées. Les valeurs de type tableau ne sont pas analysées depuis les variables d'environnement, sauf pour les options qui documentent explicitement une forme séparée par des virgules comme applications.files.sampleDocuments. Conservez les autres tableaux dans environment.yaml.


Configuration minimale

mysql:
url: mysql://root:MySQLRootPassword@mariadb:3306/sync_in
auth:
encryptionKey: changeEncryptionKeyWithStrongKey
token:
access:
secret: changeAccessWithStrongSecret
refresh:
secret: changeRefreshWithStrongSecret
applications:
files:
dataPath: /app/data

Configuration complète

server:
# hôte par défaut : `0.0.0.0`
host: 0.0.0.0
# port par défaut : `8080`
port: 8080
# workers : `auto` ou `0` (utilise tous les CPU) | nombre de CPU à utiliser
# défaut : 1
workers: 1
# trust proxy : nombre (fait confiance au nième saut depuis le proxy frontal comme client) | `true` | `false` | `127.0.0.1,192.168.1.1/24`
# défaut : 1
trustProxy: 1
# restartOnFailure : redémarre automatiquement les workers s'ils sont arrêtés ou plantent
# défaut : `true`
restartOnFailure: true
logger:
# niveau : `trace` | `debug` | `info` | `warn` | `error` | `fatal`
# défaut : `info`
level: info
# stdout : si false, les logs sont écrits dans le répertoire d'exécution
# défaut : `true`
stdout: true
# Colorise la sortie.
# défaut : `true`
colorize: true
# Sortie JSON. Quand activée, `colorize` est ignoré.
# défaut : `false`
jsonOutput: false
# Chemin du fichier de logs utilisé quand stdout est à false
filePath:
mysql:
# requis
url: mysql://user:MySQLPassword@localhost:3306/database
# défaut : `false`
logQueries: false
cache:
# adaptateur : `mysql` | `redis`
# défaut : `mysql`
adapter: mysql
# TTL en secondes
# défaut : `60`
ttl: 60
# URL de l'adaptateur Redis
# défaut : `redis://127.0.0.1:6379`
redis: redis://127.0.0.1:6379
websocket:
# adaptateur : `cluster` (workers Node.js : défaut) | `redis`
# défaut : `cluster`
adapter: cluster
# Origine CORS autorisée
# défaut : `*`
corsOrigin: '*'
# URL de l'adaptateur Redis
# défaut : `redis://127.0.0.1:6379`
redis: redis://127.0.0.1:6379
mail:
host: smtp.server.com
# défaut : `25`
port: 25
# défaut : `Sync-in<notification@sync-in.com>`
sender: 'Sync-in<notification@sync-in.com>'
# optionnel
auth:
user: user
pass: password
# Définit si la connexion doit utiliser SSL (si true) ou non (si false)
# Note : définir `secure: false` ne signifie pas forcément que les messages sont envoyés en clair
# Si le serveur supporte STARTTLS, la connexion est généralement mise à niveau vers TLS automatiquement
# défaut : `false`
secure: false
# ignoreTLS : si true, désactive l'utilisation de STARTTLS même si le serveur l'annonce
# défaut : false
ignoreTLS: false
# rejectUnauthorized : rejette la connexion si le certificat TLS du serveur est invalide
# défaut : false
rejectUnauthorized: false
# Active les logs
# défaut : `false`
logger: false
# Définit le niveau de logs en debug
# défaut : `false`
debug: false
auth:
# provider : `mysql` | `ldap` | `oidc`
# défaut : `mysql`
provider: mysql
# Clé utilisée pour chiffrer les clés secrètes utilisateur dans la base de données
# Optionnelle mais fortement recommandée
# Avertissement : ne modifiez pas et ne supprimez pas la clé de chiffrement après l'activation de la MFA, sinon les codes deviendront invalides
encryptionKey: changeEncryptionKeyWithStrongKey
# valeur cookie sameSite : `lax` | `strict`
# défaut : `strict`
cookieSameSite: strict
token:
access:
# Utilisé pour les signatures des tokens et cookies
# requis
secret: changeAccessWithStrongSecret
# expiration du token = maxAge du cookie
# défaut : `30m`
expiration: 30m
refresh:
# Utilisé pour les signatures des tokens et cookies
# requis
secret: changeRefreshWithStrongSecret
# expiration du token = maxAge du cookie
# défaut : `4h`
expiration: 4h
# Authentification multifactorielle
mfa:
# Configuration TOTP
totp:
# Active l'authentification TOTP
# défaut : true
enabled: true
# Nom affiché dans l'application d'authentification (FreeOTP, Proton Authenticator, Aegis Authenticator, etc.)
# défaut : Sync-in
issuer: Sync-in
# Authentification LDAP
ldap:
# ex. : [ldap://localhost:389, ldaps://localhost:636] (tableau requis)
# Plusieurs serveurs sont essayés dans l'ordre jusqu'à ce qu'un bind/recherche réussisse.
# requis
servers: []
# tlsOptions : options TLS Node.js utilisées pour la connexion LDAP sécurisée.
# Supporte les options TLS standard comme `ca`, `rejectUnauthorized`, etc.
# Voir : https://nodejs.org/api/tls.html
# https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions
# Exemple :
# tlsOptions:
# rejectUnauthorized: true
# ca: [/app/certs/ca.pem]
# optionnel
tlsOptions:
# baseDN : nom distinctif (ex. : ou=people,dc=ldap,dc=sync-in,dc=com)
# Utilisé comme base de recherche pour les utilisateurs, et pour les groupes quand adminGroup est un CN.
# requis
baseDN: ou=people,dc=ldap,dc=sync-in,dc=com
# filter, ex. : (acl=admin)
# Ajouté tel quel au filtre de recherche LDAP (configuration de confiance).
# optionnel
filter:
# upnSuffix : suffixe de domaine AD utilisé avec `userPrincipalName` pour construire les identifiants au format UPN (ex. : user@`sync-in.com`)
# Utilisé uniquement quand login est défini sur userPrincipalName.
# optionnel
upnSuffix:
# netbiosName : nom de domaine NetBIOS utilisé avec `sAMAccountName` pour construire les identifiants hérités (ex. : `SYNC_IN`\user)
# Utilisé uniquement quand login est défini sur sAMAccountName.
# optionnel
netbiosName:
# serviceBindDN : nom distinctif d'un compte de service utilisé pour rechercher utilisateurs/groupes.
# Quand défini, les recherches sont effectuées avec ce compte ; le bind utilisateur sert seulement à valider le mot de passe.
# ex. : cn=syncin,ou=services,dc=ldap,dc=sync-in,dc=com
# optionnel
serviceBindDN:
# serviceBindPassword : mot de passe du compte de service utilisé pour rechercher utilisateurs/groupes.
# optionnel
serviceBindPassword:
attributes:
# Attribut LDAP qui correspond au login stocké en base.
# Avec un service bind, il sert à localiser l'utilisateur (puis bind avec le DN trouvé).
# Sans service bind, il sert à construire le DN de l'utilisateur pour le bind (sauf AD : UPN/DOMAIN\\user).
# Si vous choisissez mail, les logins locaux doivent être l'adresse e-mail de l'utilisateur.
# ex. : uid | cn | mail | sAMAccountName | userPrincipalName
# défaut : uid
login: uid
# Attribut utilisé pour récupérer l'adresse e-mail de l'utilisateur
# email : `mail` ou `email`
# défaut : `mail`
email: mail
# Attribut utilisé pour récupérer le quota de stockage de l'utilisateur en octets.
# Si la valeur de l'attribut est invalide, le storageQuota local n'est pas mis à jour.
# Si la valeur de l'attribut est absente ou 0, le storageQuota local est défini comme illimité.
# défaut : `storageQuota`
storageQuota: storageQuota
options:
# autoCreateUser : crée automatiquement un utilisateur local lors de la première authentification LDAP réussie.
# Le compte local est créé à partir des attributs LDAP :
# - login : depuis l'attribut LDAP de login configuré (ex. : uid, cn, sAMAccountName, userPrincipalName)
# - email : depuis l'attribut e-mail configuré (requis)
# - firstName / lastName : depuis givenName+sn, ou displayName, ou cn (secours)
# Quand désactivé, seuls les utilisateurs existants peuvent s'authentifier via LDAP.
# défaut : true
autoCreateUser: true
# autoCreatePermissions : permissions attribuées aux utilisateurs créés automatiquement via LDAP.
# Appliqué uniquement à la création utilisateur quand autoCreateUser est activé.
# N'a aucun effet sur les utilisateurs existants.
# La liste complète des permissions est disponible dans la documentation : https://sync-in.com/docs/admin-guide/permissions
# ex. : [personal_space, spaces_access] (tableau requis)
# défaut : []
autoCreatePermissions: []
# adminGroup : groupe LDAP qui accorde les privilèges administrateur Sync-in.
# Accepte soit un CN simple (ex. : "Admins"), soit un DN complet (ex. : "CN=Admins,OU=Groups,DC=ldap,DC=sync-in,DC=com").
# Si défini, les utilisateurs dont le `memberOf` LDAP contient ce CN (ou dont le DN de groupe correspond) se voient attribuer le rôle administrateur.
# Si `memberOf` est absent, Sync-in peut aussi vérifier l'appartenance en recherchant les groupes `groupOfNames`.
# Si les utilisateurs ne peuvent pas lire `groupOfNames`, utilisez un compte de service bind pour effectuer cette recherche.
# Si non défini, les utilisateurs administrateurs existants conservent leur rôle et il ne peut pas être retiré via LDAP.
# optionnel
adminGroup:
# enablePasswordAuthFallback : autorise l'authentification locale par mot de passe quand l'authentification LDAP échoue.
# Quand activé, les utilisateurs peuvent s'authentifier avec leur mot de passe local si le service LDAP est indisponible.
# Toujours autorisé pour les utilisateurs administrateurs (accès de secours).
# défaut : true
enablePasswordAuthFallback: true
oidc:
# issuerUrl : URL de l'endpoint de découverte du fournisseur OIDC
# ex. :
# - Keycloak : https://auth.example.com/realms/my-realm
# - Authentik : https://auth.example.com/application/o/my-app/
# - Google : https://accounts.google.com
# - Microsoft : https://login.microsoftonline.com/<tenant-id>/v2.0
# Le serveur découvrira automatiquement les endpoints d'autorisation, token et userinfo.
# requis
issuerUrl:
# clientId : Client ID OAuth 2.0 obtenu auprès de votre fournisseur OIDC
# requis
clientId:
# clientSecret : Client Secret OAuth 2.0 obtenu auprès de votre fournisseur OIDC
# requis
clientSecret: changeOIDCClientSecret
# redirectUri : URL de callback vers laquelle les utilisateurs sont redirigés après authentification
# Cette URL doit être enregistrée dans les URL de redirection autorisées de votre fournisseur OIDC
# ex. : (callback API) : https://sync-in.domain.com/api/auth/oidc/callback
#
# Pour autoriser l'authentification depuis l'application desktop, les URL de redirection suivantes doivent aussi être enregistrées dans votre fournisseur OIDC :
# - http://127.0.0.1:49152/oidc/callback
# - http://127.0.0.1:49153/oidc/callback
# - http://127.0.0.1:49154/oidc/callback
#
# Si votre fournisseur OIDC supporte les jokers ou expressions régulières, vous pouvez à la place enregistrer une entrée unique comme :
# - http://127.0.0.1/*
#
# requis
redirectUri: https://sync-in.domain.com/api/auth/oidc/callback
options:
# autoCreateUser : crée automatiquement un compte utilisateur local lors de la première connexion OIDC réussie.
# Quand activé, le `login` utilisateur est dérivé des claims OIDC : preferred_username, puis la partie locale de l'e-mail, avec `sub` en dernier recours.
# Quand désactivé, seuls les utilisateurs existants sont autorisés à s'authentifier via OIDC.
# défaut : true
autoCreateUser: true
# autoCreatePermissions : permissions attribuées aux utilisateurs créés automatiquement via OIDC.
# Appliqué uniquement quand autoCreateUser est activé, et uniquement à la création utilisateur.
# Cette option n'a aucun effet sur les utilisateurs existants.
# La liste complète des permissions est disponible dans la documentation : https://sync-in.com/docs/admin-guide/permissions
# ex. : [personal_space, spaces_access] (tableau requis)
# défaut : []
autoCreatePermissions: []
# storageQuotaClaim : claim OIDC utilisé pour récupérer le quota de stockage de l'utilisateur en octets.
# Si la valeur du claim est invalide, le storageQuota local n'est pas mis à jour.
# Si la valeur du claim est absente ou 0, le storageQuota local est défini comme illimité.
# défaut : `storageQuota`
storageQuotaClaim: storageQuota
# adminRoleOrGroup : nom du rôle ou groupe qui accorde l'accès administrateur Sync-in
# Les utilisateurs ayant cette valeur recevront les privilèges administrateur.
# La valeur est comparée aux claims `roles` ou `groups` fournis par l'IdP.
# Note : selon le fournisseur (ex. : Keycloak), roles/groups peuvent être exposés seulement dans les tokens
# et nécessitent les bons mappers IdP pour être inclus dans l'ID token ou la réponse UserInfo.
# optionnel
adminRoleOrGroup:
# enablePasswordAuth : autorise l'authentification locale par mot de passe lors de l'utilisation d'OIDC.
# Quand activé, les utilisateurs peuvent s'authentifier avec leur mot de passe Sync-in au lieu d'OIDC.
# L'authentification locale par mot de passe est toujours autorisée pour :
# - les utilisateurs invités
# - les utilisateurs administrateurs (accès de secours)
# - les scopes d'application (mots de passe applicatifs)
# Les utilisateurs classiques sont autorisés uniquement quand cette option est activée.
# Les utilisateurs doivent déjà exister localement et avoir un mot de passe défini.
# défaut : true
enablePasswordAuth: true
# autoRedirect : redirige automatiquement les utilisateurs vers le flux de connexion OIDC.
# Quand activé, la page de connexion est ignorée et les utilisateurs sont envoyés directement vers le fournisseur OIDC.
# défaut : false
autoRedirect: false
# buttonText : libellé affiché sur le bouton de connexion OIDC.
# défaut : Continue with OpenID Connect
buttonText: Continue with OpenID Connect
security:
# scope : scopes OAuth 2.0 à demander (chaîne séparée par des espaces)
# Scopes courants : openid (requis), email, profile, groups, roles
# défaut : `openid email profile`
scope: openid email profile
# supportPKCE : active PKCE (Proof Key for Code Exchange) dans le flux authorization code.
# Quand true, PKCE est utilisé si le fournisseur OIDC le supporte.
# défaut : true
supportPKCE: true
# Méthode d'authentification client OAuth 2.0 / OIDC utilisée sur le token endpoint.
# Valeurs possibles :
# - client_secret_basic (DÉFAUT) : auth HTTP Basic avec client_id et client_secret.
# Recommandé pour les clients backend (confidentiels).
# - client_secret_post : client_id et client_secret envoyés dans le corps de la requête.
# - none (ou undefined) : pas d'authentification client (clients publics : mobile / SPA avec PKCE).
# Note : clientSecret reste requis par la configuration Sync-in même quand cette méthode est sélectionnée.
# défaut : `client_secret_basic`
tokenEndpointAuthMethod: client_secret_basic
# tokenSigningAlg : algorithme utilisé pour vérifier la signature des ID tokens (JWT) renvoyés par le fournisseur OpenID Connect.
# Valeurs courantes : RS256, RS384, RS512, ES256, ES384, ES512
# défaut : `RS256`
tokenSigningAlg: RS256
# userInfoSigningAlg : algorithme utilisé pour demander une réponse UserInfo signée au fournisseur OpenID Connect.
# Quand non défini, l'endpoint UserInfo renvoie une réponse JSON standard (non signée). C'est la configuration la plus courante et recommandée.
# Valeurs courantes : (vide), RS256, RS384, RS512, ES256, ES384, ES512
# défaut : vide
userInfoSigningAlg:
# skipSubjectCheck : désactive la vérification que le claim `sub` renvoyé par l'endpoint UserInfo
# correspond au claim `sub` de l'ID token.
# Définissez true uniquement pour les fournisseurs OIDC non conformes ou hérités.
# défaut : false
skipSubjectCheck: false
applications:
users:
# showUngroupedUsers : rend les utilisateurs sans groupe visibles globalement aux utilisateurs/admins standards.
# Les comptes invités sont exclus de cette visibilité globale (comme comptes listés et comme demandeurs).
# défaut : `true`
showUngroupedUsers: true
files:
# requis
dataPath: /home/sync-in
# défaut : 5368709120 (5 GB)
maxUploadSize: 5368709120
contentIndexing:
# Active l'indexation du contenu des fichiers pour la recherche (désactiver ceci coupe la recherche full-text)
# défaut : true
enabled: true
ocr:
# Active l'OCR sur les PDF
# défaut : true
enabled: true
# Langues OCR utilisées par tesseract.js
# Supporte les codes à trois lettres ISO 639-2/T : 'eng', 'spa', 'fra', 'deu', etc.
# exemples : `[eng,fra]`, `[fra]`
# défaut : [eng]
languages: [eng]
# Mode hors ligne : ne télécharge pas les langues OCR, utilise uniquement les fichiers de langue locaux du dossier OCR intégré
# Pour télécharger les langues, utilisez ce schéma : https://cdn.jsdelivr.net/npm/@tesseract.js-data/<lang>@1.0.0/4.0.0_best_int/<lang>.traineddata.gz
# défaut : false
offline: false
# Chemin vers les fichiers de langue OCR locaux
# Utilisé lorsque le mode hors ligne est activé ou pour remplacer l’emplacement par défaut
# défaut : répertoire OCR intégré
languagesPath:
# Rétention de la corbeille en jours. Définissez chaque valeur à un nombre de jours pour activer le nettoyage automatique.
# Définissez `false` ou `0` pour désactiver le nettoyage pour ce type de dépôt.
# défaut : users/spaces false
trashRetention:
users: false
spaces: false
# Affiche les fichiers commençant par un point dans l'explorateur de fichiers
# défaut : false
showHiddenFiles: false
# Groupes de documents optionnels affichés dans la fenêtre "nouveau document".
# options : `microsoft` | `opendocument`
# utilisez [] pour afficher uniquement Text et Markdown
# défaut : [opendocument, microsoft]
sampleDocuments: [opendocument, microsoft]
onlyoffice:
# active l'intégration onlyoffice
# défaut : false
enabled: false
# Secret utilisé pour les tokens JWT, il doit être identique sur le serveur onlyoffice
# requis
secret: onlyOfficeSecret
# Si aucun serveur externe n'est configuré, le service Nginx local du setup Docker Compose est utilisé.
# Si un serveur externe est configuré, il sera utilisé à la place.
# Note : lors de l'utilisation d'un serveur externe (ex. : https://onlyoffice.domain.com), assurez-vous qu'il est accessible depuis le client/navigateur.
# défaut : null
externalServer:
# Si vous utilisez https, définissez `true`.
# défaut : false
verifySSL: false
collabora:
# active l'intégration collabora online
# défaut : false
enabled: false
# Si aucun serveur externe n'est configuré, le service Nginx local du setup Docker Compose est utilisé.
# Si un serveur externe est configuré, il sera utilisé à la place.
# Note : lors de l'utilisation d'un serveur externe (ex. : https://collabora.domain.com), assurez-vous qu'il est accessible depuis le client/navigateur.
# défaut : null
externalServer:
# Configuration du dépôt des clients applicatifs (niveau applications, pas applications.files)
appStore:
# repository : `public` | `local`
# défaut : `public`
repository: public