Configuración del servidor
Todas las opciones de configuración del servidor Sync-in están definidas en el archivo environment.yaml.
Un ejemplo completo está disponible en GitHub: environment.dist.yaml.
Este archivo le permite personalizar el comportamiento de su instancia de Sync-in: redes, autenticación, base de datos, almacenamiento en caché, correo electrónico y más.
🧱 Secciones
🖥️ server
host: dirección IP en la que escuchará el servidor (predeterminado:0.0.0.0)port: Puerto utilizado para la interfaz web (predeterminado:8080)workers: Número de procesos de trabajo (predeterminado:1)- Utilice
autoo0para utilizar todos los núcleos de CPU. - En producción, se recomienda utilizar al menos 2 procesos para evitar posibles bloqueos causados por el planificador interno encargado de las tareas en segundo plano.
- Utilice
trustProxy: habilita la compatibilidad con proxy (número,true,falseo rango de IP, predeterminado: 1) — Ver opciones disponibles.restartOnFailure: reinicia automáticamente los trabajadores si fallan (trueofalse, predeterminado:true)
📋 logger
level: Nivel de registro (trace,debug,info,warn,error,fatal)stdout: envía registros a la consola (true, predeterminado) o los escribe en un archivo (false)colorize: habilita la coloración del registro (predeterminado:true)filePath: ruta al archivo de registro utilizado cuandostdoutse establece enfalse.
🐬 mysql
url: URL de conexión MySQL (por ejemplo,mysql://user:password@localhost:3306/database)logQueries: Habilita el registro de consultas SQL en la base de datos (trueofalse)
⚡ cache
adapter: Sistema de caché (mysqlpor defecto, oredis)ttl: tiempo de vida predeterminado para las entradas almacenadas en caché (en segundos)redis: URL de conexión de Redis (utilizada cuandoadapter: redis)
🔄 websocket
adapter: Adaptador WebSocket (clusteroredis)cluster: utiliza trabajadores de Node.js para la comunicación entre procesos (predeterminado)redis: habilita la comunicación entre instancias distribuidas; recomendado para configuraciones de múltiples servidores
corsOrigin: Orígenes permitidos para conexiones WebSocket (predeterminado:*)redis: URL de conexión de Redis (usada cuandoadapter: redis)
📧 mail
host: host del servidor SMTPport: puerto del servidor SMTP (por ejemplo,587)sender: dirección de correo electrónico del remitente (por ejemplo,Sync-in<notification@sync-in.com>)auth:user: nombre de usuario SMTPpass: contraseña SMTP
secure: Usar conexión SSL (trueofalse)ignoreTLS: Desactiva el uso de STARTTLS incluso si el servidor lo anuncia (trueofalse, predeterminado:false).rejectUnauthorized: rechaza la conexión si el certificado TLS del servidor no es válido (trueofalse, predeterminado:false)logger: Habilitar el registro SMTP (trueofalse)debug: Habilitar el modo de depuración (trueofalse)
🔐 auth
method: Método de autenticación (mysqloldap, predeterminado:mysql)cookieSameSite: Política de cookies de SameSite (lax,strict, predeterminado:strict)encryptionKey: Clave de cifrado para secretos de usuario almacenados en la base de datos, opcional pero recomendado.
⚠️ Una vez que se habilita MFA, cualquier modificación o eliminación de la clave de cifrado invalidará los secretos, impidiendo cualquier autenticación posterior.-
mfatotp:enabled: Habilite la autenticación TOTP para todos los usuarios (trueofalse, predeterminado:true)issuer: nombre que se muestra en la aplicación de autenticación (por ejemplo, FreeOTP, Proton Authenticator, Aegis Authenticator), predeterminado:Sync-in
-
token:access:secret: secreto JWT para tokens de accesoexpiration: vida útil del token de acceso (por ejemplo,30m)
refresh:secret: secreto JWT para tokens de actualizaciónexpiration: vida útil del token de actualización (por ejemplo,4h)
-
ldap(simethod: ldap):servers: Lista de URL del servidor LDAPbaseDN: nombre distinguido base (por ejemplo,ou=people,dc=example,dc=com)filter: filtro LDAP (opcional)attributes:login: atributo LDAP utilizado para el inicio de sesión del usuario (uidocnomailosAMAccountNameouserPrincipalName), predeterminado:uidemail: atributo LDAP que contiene la dirección de correo electrónico del usuario (por ejemplo,mail,email), predeterminado:mail.
adminGroup: CN de un grupo que contiene administradores de Sync-in (por ejemplo, administradores)upnSuffix: sufijo de dominio AD usado conuserPrincipalNamepara crear inicios de sesión de estilo UPN (por ejemplo, usuario@sync-in.com)netbiosName: nombre de dominio NetBIOS utilizado consAMAccountNamepara crear inicios de sesión heredados (por ejemplo,SYNC_IN\usuario)
🧩 applications
📁 files
dataPath: Ruta para almacenar datos del usuariomaxUploadSize: Tamaño máximo permitido de carga de archivos (predeterminado:5368709120-> 5 GB)contentIndexing: habilita o deshabilita la indexación del contenido del archivo utilizado para la búsqueda de texto completo (predeterminado:true)showHiddenFiles: muestra archivos que comienzan con un punto en el explorador de archivos (predeterminado:false)-
collabora:enabled: Habilitar la integración de Collabora Online (trueofalse, predeterminado:false)externalServer: URL del servidor de Collabora Online (p. ej.,https://collabora.my-domain.com, opcional si utiliza Sync-in Docker Compose)
-
onlyoffice:enabled: Habilitar la integración de OnlyOffice (trueofalse, predeterminado:false)externalServer: URL del servidor OnlyOffice (por ejemplo,https://onlyoffice.my-domain.com, opcional si utiliza Sync-in Docker Compose)secret: secreto JWT compartido con OnlyOfficeverifySSL: Aplicar verificación SSL (trueofalse, predeterminado:false)
🛍️ appStore
repository: elección del repositorio para las versiones del cliente de aplicaciones:public(predeterminado) olocal
🌱 Variables de entorno
Todos los parámetros de configuración del servidor Sync-in se pueden configurar utilizando variables de entorno con el prefijo SYNCIN_.
Por ejemplo, la siguiente configuración:
auth:
encryptionKey: "changeEncryptionKeyWithStrongKey"
token:
access:
secret: "changeAccessWithStrongSecret"
refresh:
secret: "changeRefreshWithStrongSecret"
mysql:
url: mysql://root:MySQLRootPassword@mariadb:3306/sync_in
Se puede replicar con variables de entorno de la siguiente manera:
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"
información
Para valores booleanos, utilice true o false.
Los valores numéricos se analizan automáticamente.
📌 Ejemplo de configuración completo
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
mysql:
# required
url: mysql://root:MySQLRootPassword@localhost:3306/database
# default: `false`
logQueries: false
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:
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
# Secret used for jwt tokens, it must be the same on the onlyoffice server
# required
secret: onlyOfficeSecret
# If no external server is configured, the local Nginx service from the Docker Compose setup is used.
# If an external server is configured, it will be used instead.
# Note: when using an external server (e.g. https://onlyoffice.domain.com), make sure it is accessible from the client/browser.
# default: null
externalServer:
# If you use https, set to `true`.
# default: false
verifySSL: false
collabora:
# enable collabora online integration
# default: false
enabled: false
# If no external server is configured, the local Nginx service from the Docker Compose setup is used.
# If an external server is configured, it will be used instead.
# Note: when using an external server (e.g. https://collabora.domain.com), make sure it is accessible from the client/browser.
# default: null
externalServer:
appStore:
# repository: `public` | `local`
# default: `public`
repository: public