Aller au contenu principal

Configuration du 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 : 3000)
  • workers : Nombre de processus.
    • auto pour utiliser tous les cœurs CPU.
    • Quelle que soit la valeur indiquée, au moins 2 workers sont toujours lancés, 1 worker est nécessaire aux tâches planifiées.
  • trustProxy : Active la gestion des proxies (ex. : true, false, ou IP(s))
  • restartOnFailure : Redémarre automatiquement les workers en cas d’échec (true ou false)

📋 logger

  • level : Niveau de journalisation du serveur (trace, debug, info, warn, error, fatal)
  • stdout : Affiche les logs dans la console (true) ou les écrit dans un fichier (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 (true ou false)

cache

  • adapter : Système de cache (mysql par défaut ou redis)
  • ttl : Durée de vie des données en cache, en secondes
  • redis : URL de connexion Redis (si adapter: redis est utilisé)

🔄 websocket

  • adapter : Définit le mode de gestion des connexions WebSocket. (cluster ou redis)
    • 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 (ex. : "*")
  • redis : URL de connexion Redis (si adapter: redis)

📧 mail

  • host : Hôte du serveur SMTP
  • port : Port SMTP (ex. : 587)
  • sender : Adresse d’envoi (ex. : Sync-in<notification@sync-in.com>)
  • auth:
    • user : Nom d’utilisateur SMTP
    • pass : Mot de passe SMTP
  • secure : Connexion SSL (true ou false)
  • logger : Active les logs SMTP (true ou false)
  • debug : Active le mode débogage (true ou false)

🔐 auth

  • method : Méthode d’authentification (mysql ou ldap)
  • sameSite : Politique SameSite pour les cookies (lax, strict)
  • token:
    • access:
      • name : Nom du cookie d’accès
      • secret : Secret JWT pour les tokens d’accès
      • expiration : Durée de validité du token d’accès (ex. : 30m)
      • access.cookieMaxAge : Durée du cookie côté client
    • refresh:
      • name : Nom du cookie de rafraîchissement
      • secret : Secret JWT pour les tokens de rafraîchissement
      • expiration : Durée de validité du token de rafraîchissement (ex. : 4h)
      • cookieMaxAge : Durée du cookie côté client
  • ldap (si method: ldap):
    • servers : Liste des serveurs LDAP
    • baseDN : DN de base (ex. : ou=people,dc=example,dc=com)
    • filter : Filtre LDAP (optionnel)
    • loginAttribute : Attribut de connexion (uid ou mail)

🧩 applications

📁 files

  • dataPath : Chemin où sont stockées les données utilisateurs
  • maxUploadSize : Taille maximale d’un fichier à téléverser (par défaut : 5 Go)
  • 📝 onlyoffice:
    • enabled : Active l’intégration OnlyOffice (true ou false)
    • externalServer : URL de votre serveur OnlyOffice (ex. : https://onlyoffice.domain.com)
    • secret : Secret JWT partagé avec OnlyOffice
    • verifySSL : Vérifie le certificat SSL (true ou false)

🛍️ appStore

  • repository : Choix du dépôt pour les releases des applications applicatifs : public (par défaut) ou local

📌 Exemple

server:
host: 0.0.0.0
port: 3000
# workers: auto (use all cpus) | number
# regardless of the value, starts with at least 2 workers, 1 worker is dedicated to scheduled tasks
workers: 4
# trust proxy: true | false | 127.0.0.1,192.168.1.1/24
trustProxy: false
# restartOnFailure : automatically restart workers if they are killed or die
restartOnFailure: true
logger:
# level: trace | debug | info | warn | error | fatal
level: trace
# stdout : if false logs are written to the run directory (default: true)
stdout: true
mysql:
url: mysql://user:password@localhost:3306/database
logQueries: false
cache:
# adapter: mysql (default) | redis (requires optional dependency: redis)
adapter: mysql
# default ttl in seconds
ttl: 60
# redis adapter url
redis: redis://127.0.0.1:6379
websocket:
# adapter: cluster (Node.js Workers: default) | redis (requires optional dependency: @socket.io/redis-adapter)
adapter: cluster
# cors origin allowed
corsOrigin: '*'
# redis adapter url
redis: redis://127.0.0.1:6379
mail:
host: smtp.server.com
port: 587
sender: 'Sync-in<notification@sync-in.com>'
auth:
user: user
pass: password
# secure: defines if the connection should use SSL (if true) or not (if false)
secure: false
# enable logger
logger: false
# set log level to debug
debug: false
auth:
# adapter : mysql (default) | ldap
method: mysql
# sameSite (cookie settings) : lax | strict
sameSite: strict
token:
access:
name: sync-in-access
# used for token & cookie signatures
secret: changeAccessWithStrongSecret
expiration: 30m
cookieMaxAge: 30m
refresh:
name: sync-in-refresh
# used for token & cookie signatures
secret: changeRefreshWithStrongSecret
expiration: 4h
cookieMaxAge: 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:
# login attribute: uid (default) or mail
loginAttribute:
applications:
files:
dataPath: /home/sync-in
# Default to 5 GB if not specified
maxUploadSize: 5368709120
onlyoffice:
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
externalServer:
# secret used for jwt tokens, it must be the same on the onlyoffice server
secret: onlyOfficeSecret
# if you use https, set to true
verifySSL: false
appStore:
# repository: public (default) | local
repository: public