Configuration Serveur
Toutes les options de configuration du serveur Sync-in sont définies dans le fichier environment.yaml.
Ce fichier vous permet de personnaliser le fonctionnement de votre instance Sync-in : réseau, authentification, base de données, cache, messagerie, etc.
🧱 Sections
🖥️ server
host: Adresse IP d'écoute du serveur (par défaut :0.0.0.0)port: Port utilisé pour l’interface web (par défaut :8080)workers: Nombre de processus (par défaut :1)autoou0pour utiliser tous les cœurs CPU.- En production, il est recommandé d’utiliser au minimum 2 workers, afin d’éviter tout blocage dû au planificateur interne chargé des tâches en arrière-plan.
trustProxy: Active la gestion des proxies (ex. : number,true,false, ou IP(s)) — Voir les options disponibles.restartOnFailure: Redémarre automatiquement les workers en cas d’échec (trueoufalse, par défaut :true)
📋 logger
level: Niveau de journalisation du serveur (trace,debug,info,warn,error,fatal)stdout: Affiche les logs dans la console (true, par défaut) ou les écrit dans un fichier (false)colorize: Active la coloration des logs (par défaut :true)filePath: Chemin du fichier de log utilisé lorsquestdoutest àfalse.
🐬 mysql
url: URL de connexion MySQL (ex. :mysql://user:password@localhost:3306/database)logQueries: Permet de journaliser toutes les requêtes SQL envoyées à la base de données (trueoufalse)
⚡ cache
adapter: Système de cache (mysqlpar défaut ouredis)ttl: Durée de vie des données en cache, en secondesredis: URL de connexion Redis (siadapter: redisest utilisé)
🔄 websocket
adapter: Définit le mode de gestion des connexions WebSocket. (clusterouredis)cluster: utilise les workers Node.js pour la communication entre processus (valeur par défaut).redis: permet une communication distribuée entre plusieurs instances, recommandé pour les environnements multi-serveurs.
corsOrigin: Origine(s) autorisée(s) pour les connexions WebSocket (par défaut :*)redis: URL de connexion Redis (siadapter: redis)
📧 mail
host: Hôte du serveur SMTPport: Port SMTP (ex. :587)sender: Adresse d’envoi (ex. :Sync-in<notification@sync-in.com>)auth:user: Nom d’utilisateur SMTPpass: Mot de passe SMTP
secure: Connexion SSL (trueoufalse)ignoreTLS: Désactive l’utilisation de STARTTLS même si le serveur l’annonce (trueoufalse, par défaut :false)rejectUnauthorized: Rejette la connexion si le certificat TLS du serveur est invalide (trueoufalse, par défaut :false)logger: Active les logs SMTP (trueoufalse)debug: Active le mode débogage (trueoufalse)
🔐 auth
method: Méthode d’authentification (mysqlouldap, par défaut :mysql)cookieSameSite: Politique SameSite pour les cookies (lax,strict, par défaut :strict)encryptionKey: Clé de chiffrement des secrets utilisateurs dans la base de données, optionnelle mais recommandée.
⚠️ 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 (trueoufalse, par défaut :true)issuer: Nom affiché dans l’application d’authentification (par ex. FreeOTP, Proton Authenticator, Aegis Authenticator), valeur par défaut :Sync-in
-
token:access:secret: Secret JWT pour les tokens d’accèsexpiration: Durée de validité du token d’accès (ex. :30m)
refresh:secret: Secret JWT pour les tokens de rafraîchissementexpiration: Durée de validité du token de rafraîchissement (ex. :4h)
-
ldap(simethod: ldap):servers: Liste des serveurs LDAPbaseDN: DN de base (ex. :ou=people,dc=example,dc=com)filter: Filtre LDAP (optionnel)attributes:login: Attribut LDAP utilisé pour l’identification de l’utilisateur (uidoucnoumailousAMAccountNameouuserPrincipalName), valeur par défaut :uidemail: Attribut LDAP contenant l’adresse e-mail de l’utilisateur (par ex.mail,email), valeur par défaut :mail.
adminGroup: CN du groupe contenant les administrateurs Sync-in (ex. : administrators)upnSuffix: Suffixe de domaine AD utilisé avecuserPrincipalNamepour construire des identifiants au format UPN (ex. : user@sync-in.com)netbiosName: Nom de domaine NetBIOS utilisé avecsAMAccountNamepour construire les anciens formats d'identifiants (ex. :SYNC_IN\user)
🧩 applications
📁 files
dataPath: Chemin où sont stockées les données utilisateursmaxUploadSize: Taille maximale d’un fichier à téléverser (par défaut :5368709120-> 5 Go)contentIndexing: Activer ou désactive l’indexation du contenu des fichiers utilisée pour la recherche en texte intégral (par défaut :true)showHiddenFiles: Masquer ou afficher les fichiers commençant par un point dans l’explorateur de fichiers (par défaut :false)-
onlyoffice:enabled: Active l’intégration OnlyOffice (trueoufalse, par défaut :false)externalServer: URL de votre serveur OnlyOffice (ex. :https://onlyoffice.my-domain.com)secret: Secret JWT partagé avec OnlyOfficeverifySSL: Vérifie le certificat SSL (trueoufalse, par défaut :false)
🛍️ appStore
repository: Choix du dépôt pour les releases des clients applicatifs :public(par défaut) oulocal
🌱 Variables d’environnement
Tous les paramètres 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="changeAccessWithStrongSecret"
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.
📌 Exemple de configuration complète
server:
# default host : `0.0.0.0`
host: 0.0.0.0
# default port : `8080`
port: 8080
# workers: `auto` or `0` (use all cpus) | number of CPUs to use
# default: 1
workers: 1
# trust proxy: number (trust the nth hop from the front-facing proxy server as the client) | `true` | `false` | `127.0.0.1,192.168.1.1/24`
# default: 1
trustProxy: 1
# restartOnFailure: automatically restart workers if they are killed or die
# default: `true`
restartOnFailure: true
logger:
# level: `trace` | `debug` | `info` | `warn` | `error` | `fatal`
# default: `info`
level: info
# stdout: if false logs are written to the run directory
# default: `true`
stdout: true
# Colorize output.
# default: `true`
colorize: true
# Path to the log file used when stdout is set to false
filePath:
mysql:
# required
url: mysql://user:MySQLRootPassword@localhost:3306/database
# default: `false`
logQueries: false
cache:
# adapter: `mysql` | `redis`
# default: `mysql`
adapter: mysql
# TTL in seconds
# default: `60`
ttl: 60
# Redis adapter url
# default: `redis://127.0.0.1:6379`
redis: redis://127.0.0.1:6379
websocket:
# adapter: `cluster` (Node.js Workers: default) | `redis`
# default: `cluster`
adapter: cluster
# Cors origin allowed
# default: `*`
corsOrigin: '*'
# Redis adapter url
# default: `redis://127.0.0.1:6379`
redis: redis://127.0.0.1:6379
mail:
host: smtp.server.com
# default: `25`
port: 25
# default: `Sync-in<notification@sync-in.com>`
sender: 'Sync-in<notification@sync-in.com>'
# optional
auth:
user: user
pass: password
# Defines if the connection should use SSL (if true) or not (if false)
# Note: setting `secure: false` does not necessarily mean messages are sent in plaintext
# If the server supports STARTTLS, the connection is usually upgraded to TLS automatically
# default: `false`
secure: false
# ignoreTLS: if true, disables the use of STARTTLS even if the server advertises it
# default: false
ignoreTLS: false
# rejectUnauthorized: reject the connection if the server's TLS certificate is invalid
# default: false
rejectUnauthorized: false
# Enable logger
# default: `false`
logger: false
# Set log level to debug
# default: `false`
debug: false
auth:
# adapter : `mysql` | `ldap`
# default: `mysql`
method: mysql
# Key used to encrypt user secret keys in the database
# Optional but strongly recommended
# Warning: do not change or remove the encryption key after MFA activation, or the codes will become invalid
encryptionKey: changeEncryptionKeyWithStrongKey
# Multifactor authentication
mfa:
# TOTP configuration
totp:
# Enable TOTP authentication
# default: true
enabled: true
# Name displayed in the authentication app (FreeOTP, Proton Authenticator, Aegis Authenticator etc.)
# default: Sync-in
issuer: Sync-in
# cookie sameSite setting: `lax` | `strict`
# default: `strict`
cookieSameSite: strict
token:
access:
# Used for token and cookie signatures
# required
secret: changeAccessWithStrongSecret
# token expiration = cookie maxAge
# default: `30m`
expiration: 30m
refresh:
# Used for token and cookie signatures
# required
secret: changeRefreshWithStrongSecret
# token expiration = cookie maxAge
# default: `4h`
expiration: 4h
ldap:
# e.g: [ldap://localhost:389, ldaps://localhost:636] (array required)
servers: []
# baseDN: distinguished name (e.g., ou=people,dc=ldap,dc=sync-in,dc=com)
baseDN:
# filter, e.g: (acl=admin)
filter:
attributes:
# Login attribute used to construct the user's DN for binding.
# The value of this attribute is used as the naming attribute (first RDN) when forming the Distinguished Name (DN) during authentication
# login: `uid` | `cn` | `mail` | `sAMAccountName` | `userPrincipalName`, used to authenticate the user
# default: `uid`
login: uid
# Attribute used to retrieve the user's email address
# email: `mail` or `email`
# default: `mail`
email: mail
# adminGroup: The CN of a group containing Sync-in administrators (e.g., administrators)
adminGroup:
# upnSuffix: AD domain suffix used with `userPrincipalName` to build UPN-style logins (e.g., user@`sync-in.com`)
upnSuffix:
# netbiosName: NetBIOS domain name used with `sAMAccountName` to build legacy logins (e.g., `SYNC_IN`\user)
netbiosName:
applications:
files:
# required
dataPath: /home/sync-in
# default: 5368709120 (5 GB)
maxUploadSize: 5368709120
# Enable indexing of file contents for search (disabling this turns off full-text search)
# default: true
contentIndexing: true
# Show files starting with a dot in the file explorer
# default: false
showHiddenFiles: false
onlyoffice:
# enable onlyoffice integration
# default: false
enabled: false
# For an external server (e.g., https://onlyoffice.domain.com), remember the url must be accessible from browser!
# If externalServer is empty (case of official docker compose), we use the local instance
# default: null
externalServer:
# Secret used for jwt tokens, it must be the same on the onlyoffice server
# required
secret: onlyOfficeSecret
# If you use https, set to `true`.
# default: `false`
verifySSL: false
appStore:
# repository: `public` | `local`
# default: `public`
repository: public