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 cómo se comporta su instancia de Sync-in: red, autenticación, base de datos, caché, correo, etc.
environment.yaml
server
host: Dirección IP de escucha del servidor.- Predeterminado:
0.0.0.0 - Tipo: string (IP)
- Predeterminado:
port: Puerto utilizado para la interfaz web.- Predeterminado:
8080 - Tipo: number
- Predeterminado:
publicUrl: URL pública canónica utilizada para generar enlaces de notificación y URL de editor.- Predeterminado: no definido
- Tipo: string
- Requerido: no (obligatorio en la próxima versión principal)
- Ejemplo:
https://sync-in.domain.com - Nota: el valor debe coincidir con la URL expuesta a los usuarios, incluido el esquema y cualquier puerto no estándar. Debe ser accesible desde los navegadores de los usuarios y, para los editores de Office que se comunican con Sync-in, desde sus servicios o contenedores.
- Nota: cuando se omite, los correos electrónicos de notificación se envían sin enlaces de acción y los editores utilizan el origen de la solicitud como respaldo de compatibilidad.
- Nota: por motivos de seguridad, esta opción será necesaria en la próxima versión principal para que los endpoints del editor se creen desde un origen de confianza controlado por el administrador en lugar de desde los encabezados de las solicitudes.
workers: Número de procesos.- Predeterminado:
1 - Tipo: number |
auto|0 - Nota:
autoo0para usar todos los núcleos de CPU
- Predeterminado:
trustProxy: habilita la gestión de proxies.- Predeterminado:
true - Tipo: boolean | string (los valores numéricos se admiten temporalmente pero están en desuso)
- Nota: Desde la versión 2.6.0, los valores numéricos
>= 1se convierten entrue; los valores< 1se convierten enfalse. Utilice una IP o un CIDR de proxy de confianza siempre que sea posible. - Nota: Consulte las opciones disponibles
- Predeterminado:
restartOnFailure: reinicia automáticamente los procesos de trabajo en caso de fallo.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
logger
level: nivel de registro del servidor.- Predeterminado:
info - Tipo:
trace|debug|info|warn|error|fatal
- Predeterminado:
stdout: muestra los registros en la consola (true) o los escribe en un archivo (false).- Predeterminado:
true - Tipo: boolean
- Predeterminado:
colorize: habilita los colores en los registros.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
jsonOutput: habilita la salida JSON.- Predeterminado:
false - Tipo: boolean
- Nota: cuando está habilitado, se ignora
colorize.
- Predeterminado:
filePath: ruta del archivo de registro utilizada cuandostdoutesfalse.- Predeterminado:
logs/server.log - Tipo: string
- Predeterminado:
mysql
url: URL de conexión a MySQL.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
- Ejemplo:
mysql://user:password@localhost:3306/database
logQueries: registra todas las consultas SQL enviadas a la base de datos.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
cache
adapter: sistema de caché.- Predeterminado:
mysql - Tipo:
mysql|redis
- Predeterminado:
ttl: duración de los datos en caché, en segundos.- Predeterminado:
60 - Tipo: number
- Predeterminado:
redis: URL de conexión a Redis (si se utilizaadapter: redis).- Predeterminado:
redis://127.0.0.1:6379 - Tipo: string
- Requerido: sí (si
adapteresredis)
- Predeterminado:
websocket
adapter: define cómo se gestionan las conexiones WebSocket.- Predeterminado:
cluster - Tipo:
cluster|redis
- Predeterminado:
redis: URL de conexión a Redis (siadapter: redis).- Predeterminado:
redis://127.0.0.1:6379 - Tipo: string
- Requerido: sí (si
adapteresredis)
- Predeterminado:
mail
La sección mail es opcional. Si se omite, se deshabilitan las notificaciones por correo electrónico y las funciones relacionadas.
host: host del servidor SMTP.- Predeterminado: no definido
- Tipo: string
- Requerido: sí (si se define la sección
mail)
port: puerto SMTP (por ejemplo,587).- Predeterminado:
25 - Tipo: number
- Predeterminado:
sender: dirección del remitente.- Predeterminado:
Sync-in<notification@sync-in.com> - Tipo: string
- Predeterminado:
auth:user: nombre de usuario SMTP.- Predeterminado: no definido
- Tipo: string
pass: Contraseña SMTP.- Predeterminado: no definido
- Tipo: string
secure: conexión SSL.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
ignoreTLS: Desactiva STARTTLS incluso si el servidor lo anuncia.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
rejectUnauthorized: Rechaza la conexión si el certificado TLS del servidor no es válido.- Predeterminado:
true - Tipo: boolean
- Establezca en
falsesolo para un servidor SMTP confiable que utilice un certificado autofirmado. Esto deshabilita la validación de certificados y no se recomienda en producción.
- Predeterminado:
logger: habilita los registros SMTP internos de Nodemailer. Su verbosidad sigue ellogger.levelgeneral. Configurarlogger.levelendebugotracetambién habilita el tráfico SMTP detallado.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
auth
provider: Método de autenticación.- Predeterminado:
mysql - Tipo:
mysql|ldap|oidc
- Predeterminado:
cookieSameSite: Política de cookies de SameSite.- Predeterminado:
strict - Tipo:
lax|strict
- Predeterminado:
encryptionKey: clave de cifrado para los secretos de usuario en la base de datos, actualmente opcional. Será necesaria en una versión principal futura.- Predeterminado: no definido
- Tipo: string
- Nota: ⚠️ Una vez que se habilita MFA, cualquier cambio o eliminación de la clave de cifrado invalidará los secretos, lo que impedirá cualquier autenticación posterior.
mfa:totp:enabled: habilita la autenticación TOTP para todos los usuarios.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
issuer: Nombre que se muestra en la aplicación de autenticación.- Predeterminado:
Sync-in - Tipo: string
- Predeterminado:
token:access:secret: secreto JWT para tokens de acceso.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
- Nota: utilice un valor largo generado aleatoriamente. Debe ser diferente del secreto del token de actualización.
expiration: Duración de la validez del token de acceso.- Predeterminado:
15m - Tipo: string
- Predeterminado:
refresh:secret: secreto JWT para tokens de actualización.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
- Nota: utilice un valor largo generado aleatoriamente. Debe ser diferente del secreto del token de acceso.
expiration: Duración de la validez del token de actualización.- Predeterminado:
4h - Tipo: string
- Predeterminado:
-
ldap(siprovider: ldap):- Nota: Ver la documentación dedicada
servers: Lista de servidores LDAP.- Predeterminado:
[] - Tipo: string[]
- Requerido: sí
- Ejemplo:
[ldap://localhost:389]
- Predeterminado:
tlsOptions: Opciones TLS de Node.js utilizadas para la conexión LDAP segura.rejectUnauthorized: Rechaza la conexión si el certificado TLS del servidor no es válido.- Predeterminado:
true - Tipo: boolean
- Requerido: no
- Predeterminado:
ca: Lista de rutas válidas a los certificados.- Predeterminado:
[] - Tipo: string[]
- Requerido: no
- Ejemplo:
[/app/certs/ca.pem]
- Predeterminado:
*: Otras opciones están disponibles en la documentación de Node.js
baseDN: DN base.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
- Ejemplo:
ou=people,dc=example,dc=com
filter: Filtro LDAP opcional agregado a la búsqueda.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
(acl=admin)
upnSuffix: sufijo de dominio AD utilizado conuserPrincipalName.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
user@sync-in.com
netbiosName: nombre de dominio NetBIOS utilizado consAMAccountName.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
SYNC_IN\user
serviceBindDN: DN de una cuenta de servicio para realizar búsquedas LDAP.- Predeterminado: no definido
- Tipo: string
serviceBindPassword: Contraseña de la cuenta de servicio.- Predeterminado: no definido
- Tipo: string
attributes:login: atributo LDAP utilizado para la identificación del usuario.- Predeterminado:
uid - Tipo:
uid|cn|mail|sAMAccountName|userPrincipalName
- Predeterminado:
email: atributo LDAP que contiene la dirección de correo electrónico (por ejemplo,mail,email).- Predeterminado:
mail - Tipo: string
- Predeterminado:
storageQuota: atributo LDAP que contiene la cuota de almacenamiento del usuario en bytes.- Predeterminado:
storageQuota - Tipo: string
- Nota: Un atributo faltante deja la cuota local sin cambios. Si el atributo existe con
nullo0, la cuota se establece como ilimitada.
- Predeterminado:
options:autoCreateUser: crea un usuario local en el primer inicio de sesión LDAP.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
autoCreatePermissions: Permisos asignados a usuarios creados automáticamente.- Predeterminado:
[] - Tipo: string[]
- Nota: Ver identificadores de permiso
- Predeterminado:
adminGroup: grupo LDAP que otorga privilegios de administrador (CN simple o DN completo).- Predeterminado: no definido
- Tipo: string
enablePasswordAuthFallback: permite la autenticación mediante contraseña local para los usuarios estándar cuando LDAP no está disponible.- Predeterminado:
false - Tipo: boolean
- Nota: Se recomienda configurar y mantener disponible una contraseña local de Sync-in para las cuentas de administrador, a fin de poder utilizarla como acceso de emergencia.
- Predeterminado:
-
oidc(siprovider: oidc):- Nota: Ver la documentación dedicada
issuerUrl: URL de descubrimiento del proveedor de OpenID Connect.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
clientId: ID de cliente OAuth 2.0.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
clientSecret: Secreto del cliente OAuth 2.0.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
redirectUri: URL de redirección registrada en el proveedor.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
- Nota: ⚠️ La URL debe terminar con
/api/auth/oidc/callback
options:autoCreateUser: crea un usuario local en el primer inicio de sesión OIDC.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
autoCreatePermissions: Permisos asignados a usuarios creados automáticamente.- Predeterminado:
[] - Tipo: string[]
- Nota: Ver identificadores de permiso
- Predeterminado:
adminRoleOrGroup: Rol o grupo que otorga privilegios de administrador.- Predeterminado: no definido
- Tipo: string
storageQuotaClaim: claim OIDC que contiene la cuota de almacenamiento del usuario en bytes.- Predeterminado:
storageQuota - Tipo: string
- Nota: Un claim ausente deja la cuota local sin cambios. Si el claim existe con
nullo0, la cuota se establece como ilimitada.
- Predeterminado:
enablePasswordAuth: permite la autenticación mediante contraseña local para los usuarios estándar existentes.- Predeterminado:
false - Tipo: boolean
- Nota: para este flujo de inicio de sesión local, los usuarios estándar deben conocer su contraseña local de Sync-in.
- Nota: los usuarios creados por OIDC pueden establecer una contraseña local conocida desde su perfil mientras están autenticados a través de OIDC.
- Nota: esa contraseña local también es necesaria para habilitar, restablecer o deshabilitar la autenticación de doble factor (2FA) de Sync-in desde una sesión OIDC en el navegador.
- Nota: Se recomienda configurar y mantener disponible una contraseña local de Sync-in para las cuentas de administrador, a fin de poder utilizarla como acceso de emergencia.
- Predeterminado:
autoSyncAvatar: descarga y sincroniza automáticamente el avatar del usuario desde el claim OIDCpicture.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
autoRedirect: redirige automáticamente al IdP.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
buttonText: Etiqueta del botón de inicio de sesión de OIDC.- Predeterminado:
Continue with OpenID Connect - Tipo: string
- Predeterminado:
security:scope: Ámbitos solicitados.- Predeterminado:
openid email profile - Tipo: string
- Predeterminado:
supportPKCE: habilita la compatibilidad con PKCE en el flujo de autorización.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
allowInsecureRequests: permite el descubrimiento de OIDC y solicitudes de token a través de HTTP inseguro.- Predeterminado:
false - Tipo: boolean
- Nota: habilite solo para desarrollo local o proveedores heredados confiables.
- Predeterminado:
tokenEndpointAuthMethod: método de autenticación en el punto final del token.- Predeterminado:
client_secret_basic - Tipo:
client_secret_basic|client_secret_post - Nota:
clientSecretes obligatorio en la configuración de Sync-in.
- Predeterminado:
tokenSigningAlg: Algoritmo de firma para tokens de ID.- Predeterminado:
RS256 - Tipo: string
- Predeterminado:
userInfoSigningAlg: Algoritmo para una respuesta UserInfo firmada.- Predeterminado: no definido
- Tipo: string
skipSubjectCheck: deshabilita la verificación del claimsub.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
requireVerifiedEmail: requiere que el proveedor de OIDC marque los correos electrónicos del perfil como verificados antes de vincular la cuenta o sincronizar el perfil.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
allowPrivateIpAvatarDownload: Permitir descargas de avatar OIDC desde rangos de IP privados o internos.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
applications
users:showUngroupedUsers: hace que los usuarios sin grupo sean visibles globalmente para los usuarios estándar y los administradores.- Predeterminado:
true - Tipo: boolean
- Nota: Las cuentas de invitados están excluidas de esta visibilidad global, tanto como cuentas mostradas como cuando realizan solicitudes.
- Predeterminado:
files:dataPath: ubicación de almacenamiento de los archivos de la aplicación, incluidos espacios personales, espacios colaborativos y archivos temporales.- Predeterminado: no definido
- Tipo: string
- Requerido: sí
- Docker: forzado automáticamente a
/app/datapor el punto de entrada de Docker; omita esta configuración del archivo Dockerenvironment.yaml.
maxUploadSize: Tamaño máximo para archivos recibidos a través de cargas HTTP, WebDAV, sincronización, descargas remotas o devoluciones de llamada del editor.- Predeterminado:
5368709120(5 GB) - Tipo: number
- Nota: Valor expresado en bytes.
- Predeterminado:
contentIndexing:enabled: Habilita la indexación del contenido del archivo para la búsqueda (al deshabilitar esta opción se deshabilita la búsqueda de texto completo).- Predeterminado:
true - Tipo: boolean
- Predeterminado:
ocr:- Nota: Ver documentación dedicada
enabled: habilita el OCR para imágenes PDF.- Predeterminado:
true - Tipo: boolean
- Predeterminado:
languages: Idiomas OCR utilizados.- Predeterminado:
[eng] - Tipo: string[]
- Ejemplo:
[eng,fra] - Nota: admite códigos de tres letras ISO 639-2/T:
eng,spa,fra,deu, etc.
- Predeterminado:
offline: impide la descarga de idiomas OCR y utiliza únicamente archivos de idioma locales.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
languagesPath: ruta a los archivos de idioma OCR local- Predeterminado: directorio OCR incorporado
- Tipo: string
- Nota: se utiliza cuando el modo fuera de línea está habilitado o para anular la ubicación predeterminada
trashRetention:users: Retraso en la limpieza automática de la papelera del espacio personal, en días.- Predeterminado:
false - Tipo: number |
false - Nota:
falseo0deshabilita la limpieza.
- Predeterminado:
spaces: Retraso en la limpieza automática de la papelera del espacio colaborativo, en días.- Predeterminado:
false - Tipo: number |
false - Nota:
falseo0deshabilita la limpieza.
- Predeterminado:
sampleDocuments: Grupos de documentos que se muestran en el cuadro de diálogo "Nuevo documento".- Predeterminado:
[opendocument, microsoft, drawio] - Tipo: string[]
- Valores:
opendocument|microsoft|drawio - Nota: use
[]para mostrar solo Texto, Markdown y Otro.
- Predeterminado:
editors: integraciones de editores colaborativos.- Nota: cuando se define, cada valor
externalServerdebe ser una URL HTTP o HTTPS absoluta válida. - Nota: Las rutas heredadas
applications.files.onlyofficeyapplications.files.collaborasiguen siendo compatibles, pero están obsoletas y se eliminarán en una versión futura. Mueva esta configuración aapplications.files.editors. onlyoffice:enabled: Habilita la integración de OnlyOffice.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
secret: Secreto JWT compartido con OnlyOffice.- Predeterminado: no definido
- Tipo: string
- Requerido: sí (si OnlyOffice está habilitado)
externalServer: URL de su servidor OnlyOffice.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
https://onlyoffice.my-domain.com - Nota: Opcional si usa Sync-in Docker Compose.
verifySSL: Verificar el certificado SSL.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
eurooffice:enabled: Habilita la integración de Euro-Office.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
secret: Secreto JWT compartido con Euro-Office.- Predeterminado: no definido
- Tipo: string
- Requerido: sí (si Euro-Office está habilitado)
externalServer: URL de su servidor Euro-Office.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
https://eurooffice.my-domain.com
verifySSL: Verificar el certificado SSL.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
collabora:enabled: Habilita la integración de Collabora Online.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
externalServer: URL de su servidor de Collabora Online.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
https://collabora.my-domain.com - Nota: Opcional si usa Sync-in Docker Compose.
drawio:enabled: Habilita la integración de draw.io.- Predeterminado:
false - Tipo: boolean
- Predeterminado:
externalServer: URL de su servidor draw.io externo.- Predeterminado: no definido
- Tipo: string
- Ejemplo:
https://drawio.my-domain.com - Nota: Opcional si usa Sync-in Docker Compose. Utilice un origen dedicado para un servidor externo.
- Nota: cuando se define, cada valor
appStore:repository: repositorio elegido para las versiones de los clientes de aplicación.- Predeterminado:
public - Tipo:
public|local - Nota: esta sección se define directamente en
applications, no enapplications.files.
- Predeterminado:
Variables de entorno
Los parámetros escalares de configuración del servidor Sync-in se pueden establecer mediante variables de entorno con el prefijo SYNCIN_. Cuando se define una variable SYNCIN_*, su valor tiene prioridad y reemplaza el valor correspondiente en el archivo environment.yaml.
Por ejemplo, la siguiente configuración:
server:
# Opcional por ahora; será obligatorio en la próxima versión principal
publicUrl: 'https://sync-in.domain.com'
mysql:
url: 'mysql://root:MySQLRootPassword@mariadb:3306/sync_in'
auth:
encryptionKey: 'REPLACE_WITH_LONG_RANDOM_ENCRYPTION_KEY'
token:
access:
secret: 'REPLACE_WITH_LONG_RANDOM_ACCESS_SECRET'
refresh:
secret: 'REPLACE_WITH_LONG_RANDOM_REFRESH_SECRET'
applications:
files:
dataPath: '/home/sync-in-data'
Se puede reproducir utilizando las siguientes variables de entorno:
SYNCIN_AUTH_ENCRYPTIONKEY='REPLACE_WITH_LONG_RANDOM_ENCRYPTION_KEY'
SYNCIN_AUTH_TOKEN_ACCESS_SECRET='REPLACE_WITH_LONG_RANDOM_ACCESS_SECRET'
SYNCIN_AUTH_TOKEN_REFRESH_SECRET='REPLACE_WITH_LONG_RANDOM_REFRESH_SECRET'
SYNCIN_MYSQL_URL='mysql://root:MySQLRootPassword@mariadb:3306/sync_in'
# Opcional por ahora; será obligatorio en la próxima versión principal
SYNCIN_SERVER_PUBLICURL='https://sync-in.domain.com'
SYNCIN_APPLICATIONS_FILES_DATAPATH='/home/sync-in-data'
Estas variables de entorno proporcionan una configuración mínima recomendada para iniciar Sync-in sin un archivo environment.yaml.
- Para valores booleanos, utilice true o false.
- Los valores numéricos se interpretan automáticamente.
- Para configurar valores esperados como listas (arrays), utilice una lista separada por comas cuando la opción lo admita. Por ejemplo,
SYNCIN_APPLICATIONS_FILES_SAMPLEDOCUMENTS=opendocument,microsoft,drawioconfiguraapplications.files.sampleDocuments.
⚠️ Cuando un valor SYNCIN_* está encerrado entre un par de comillas simples o dobles, Sync-in elimina estas comillas externas. Las comillas anidadas o no coincidentes permanecen sin cambios.
Configuración mínima
server:
# Opcional por ahora; será obligatorio en la próxima versión principal
publicUrl: 'https://sync-in.domain.com'
mysql:
url: 'mysql://root:MySQLRootPassword@mariadb:3306/sync_in'
auth:
encryptionKey: 'REPLACE_WITH_LONG_RANDOM_ENCRYPTION_KEY'
token:
access:
secret: 'REPLACE_WITH_LONG_RANDOM_ACCESS_SECRET'
refresh:
secret: 'REPLACE_WITH_LONG_RANDOM_REFRESH_SECRET'
applications:
files:
dataPath: '/home/sync-in-data'
Configuración completa
server:
# host predeterminado: `0.0.0.0`
host: 0.0.0.0
# puerto predeterminado: `8080`
port: 8080
# publicUrl: URL pública canónica utilizada para crear enlaces de notificación y URL de editores.
# Cuando no se define, los correos de notificación se envían sin enlaces de acción y los editores utilizan el origen de la solicitud como alternativa de compatibilidad.
# Por motivos de seguridad, será obligatorio en la próxima versión principal para que los endpoints de los editores utilicen un origen de confianza controlado por el administrador
# en lugar de los encabezados de las solicitudes.
# p. ej.: https://sync-in.domain.com
# opcional
publicUrl:
# workers: `auto` o `0` (utilizar todas las CPU) | número de CPU que se utilizarán
# predeterminado: 1
workers: 1
# confianza en el proxy: `true` (confiar en todos los proxies) | `false` | `127.0.0.1,192.168.1.1/24`
# desde la versión 2.6.0, los valores numéricos heredados >= 1 están obsoletos y se interpretan como `true`
# predeterminado: true
trustProxy: true
# restartOnFailure: reinicia automáticamente los procesos de trabajo si se detienen o finalizan
# predeterminado: `true`
restartOnFailure: true
mysql:
# obligatorio
url: 'mysql://root:MySQLPassword@localhost:3306/database'
# predeterminado: `false`
logQueries: false
logger:
# nivel: `trace` | `debug` | `info` | `warn` | `error` | `fatal`
# predeterminado: `info`
level: info
# stdout: si es false, los registros se escriben en el directorio de ejecución
# predeterminado: `true`
stdout: true
# Colorear la salida.
# predeterminado: `true`
colorize: true
# Salida JSON. Cuando está habilitada, se ignora `colorize`.
# predeterminado: `false`
jsonOutput: false
# Ruta del archivo de registro utilizado cuando stdout está establecido en false
filePath:
cache:
# adaptador: `mysql` | `redis`
# predeterminado: `mysql`
adapter: mysql
# TTL en segundos
# predeterminado: `60`
ttl: 60
# URL del adaptador Redis
# predeterminado: `redis://127.0.0.1:6379`
redis: 'redis://127.0.0.1:6379'
websocket:
# adaptador: `cluster` (procesos de trabajo de Node.js: predeterminado) | `redis`
# predeterminado: `cluster`
adapter: cluster
# URL del adaptador Redis
# predeterminado: `redis://127.0.0.1:6379`
redis: 'redis://127.0.0.1:6379'
mail:
host: 'smtp.server.com'
# predeterminado: `25`
port: 25
# predeterminado: `Sync-in<notification@sync-in.com>`
sender: 'Sync-in<notification@sync-in.com>'
# opcional
auth:
user: 'user'
pass: 'password'
# Define si la conexión debe utilizar SSL (si es true) o no (si es false)
# Nota: establecer `secure: false` no significa necesariamente que los mensajes se envíen como texto sin cifrar
# Si el servidor admite STARTTLS, la conexión suele actualizarse automáticamente a TLS
# predeterminado: `false`
secure: false
# ignoreTLS: si es true, deshabilita el uso de STARTTLS aunque el servidor lo anuncie
# predeterminado: false
ignoreTLS: false
# rejectUnauthorized: rechaza la conexión si el certificado TLS del servidor no es válido
# predeterminado: true
rejectUnauthorized: true
# Habilitar los registros SMTP internos de Nodemailer
# Establezca logger.level en debug o trace para incluir el tráfico SMTP detallado
# predeterminado: `false`
logger: false
auth:
# proveedor: `mysql` | `ldap` | `oidc`
# predeterminado: `mysql`
provider: mysql
# Clave utilizada para cifrar las claves secretas de los usuarios en la base de datos
# Opcional por ahora; será obligatorio en una futura versión principal
# Advertencia: no cambie ni elimine la clave de cifrado después de activar MFA; de lo contrario, los códigos dejarán de ser válidos
encryptionKey:
# configuración sameSite de la cookie: `lax` | `strict`
# predeterminado: `strict`
cookieSameSite: strict
token:
access:
# Se utiliza para firmar tokens y cookies
# obligatorio
secret:
# caducidad del token = maxAge de la cookie
# predeterminado: `15m`
expiration: 15m
refresh:
# Se utiliza para firmar tokens y cookies
# obligatorio
secret:
# caducidad del token = maxAge de la cookie
# predeterminado: `4h`
expiration: 4h
# Autenticación multifactor
mfa:
# Configuración de TOTP
totp:
# Habilitar la autenticación TOTP
# predeterminado: true
enabled: true
# Nombre mostrado en la aplicación de autenticación (FreeOTP, Proton Authenticator, Aegis Authenticator, etc.)
# predeterminado: Sync-in
issuer: Sync-in
# Autenticación LDAP
ldap:
# p. ej.: [ldap://localhost:389, ldaps://localhost:636] (lista obligatoria)
# Se prueban varios servidores en orden hasta que un bind o una búsqueda se realizan correctamente.
# obligatorio
servers: []
# tlsOptions: opciones TLS de Node.js utilizadas para la conexión LDAP segura.
# Admite opciones TLS estándar como `ca`, `rejectUnauthorized`, etc.
# Consulte: https://nodejs.org/api/tls.html
# https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions
# Ejemplo:
# tlsOptions:
# rejectUnauthorized: true
# ca: [/app/certs/ca.pem]
# opcional
tlsOptions:
# baseDN: nombre distinguido (p. ej.: ou=people,dc=ldap,dc=sync-in,dc=com)
# Se utiliza como base de búsqueda para los usuarios y para los grupos cuando adminGroup es un CN.
# obligatorio
baseDN: 'ou=people,dc=ldap,dc=sync-in,dc=com'
# filtro, p. ej.: (acl=admin)
# Se añade sin cambios al filtro de búsqueda LDAP (configuración de confianza).
# opcional
filter:
# upnSuffix: sufijo de dominio de AD utilizado con `userPrincipalName` para crear identificadores con formato UPN (p. ej.: `user@sync-in.com`)
# Solo se utiliza cuando login está establecido en userPrincipalName.
# opcional
upnSuffix:
# netbiosName: nombre de dominio NetBIOS utilizado con `sAMAccountName` para crear identificadores heredados (p. ej.: `SYNC_IN\user`)
# Solo se utiliza cuando login está establecido en sAMAccountName.
# opcional
netbiosName:
# serviceBindDN: nombre distinguido de una cuenta de servicio utilizada para buscar usuarios y grupos.
# Cuando se define, las búsquedas se realizan con esta cuenta; el bind del usuario solo se utiliza para validar la contraseña.
# p. ej.: cn=syncin,ou=services,dc=ldap,dc=sync-in,dc=com
# opcional
serviceBindDN:
# serviceBindPassword: contraseña de la cuenta de servicio utilizada para buscar usuarios y grupos.
# opcional
serviceBindPassword:
attributes:
# Atributo LDAP que coincide con el identificador almacenado en la base de datos.
# Con un bind de servicio, se utiliza para localizar al usuario (y luego realizar un bind con el DN encontrado).
# Sin un bind de servicio, se utiliza para construir el DN del usuario para el bind (excepto en AD: UPN/DOMAIN\\user).
# Si elige mail, los identificadores locales deben ser la dirección de correo electrónico del usuario.
# p. ej.: uid | cn | mail | sAMAccountName | userPrincipalName
# predeterminado: uid
login: uid
# Atributo utilizado para recuperar la dirección de correo electrónico del usuario
# correo electrónico: `mail` o `email`
# predeterminado: `mail`
email: mail
# Atributo utilizado para recuperar la cuota de almacenamiento del usuario en bytes.
# Si falta el atributo, el valor local de storageQuota no se actualiza.
# Si el atributo existe con null o 0, el valor local de storageQuota se establece en null (sin límite).
# predeterminado: `storageQuota`
storageQuota: storageQuota
options:
# autoCreateUser: crea automáticamente un usuario local tras la primera autenticación LDAP correcta.
# La cuenta local se crea a partir de los atributos LDAP:
# - login: a partir del atributo de identificador LDAP configurado (p. ej.: uid, cn, sAMAccountName, userPrincipalName)
# - email: a partir del atributo de correo electrónico configurado (obligatorio)
# - firstName / lastName: a partir de givenName+sn, displayName o cn (alternativa)
# Cuando está deshabilitada, solo los usuarios existentes pueden autenticarse mediante LDAP.
# predeterminado: true
autoCreateUser: true
# autoCreatePermissions: permisos asignados a los usuarios creados automáticamente mediante LDAP.
# Se aplica únicamente al crear el usuario cuando autoCreateUser está habilitado.
# No afecta a los usuarios existentes.
# La lista completa de permisos está disponible en la documentación: https://sync-in.com/docs/admin-guide/permissions
# p. ej.: [personal_space, spaces_access] (lista obligatoria)
# predeterminado: []
autoCreatePermissions: []
# adminGroup: grupo LDAP que concede privilegios de administrador de Sync-in.
# Acepta un CN simple (p. ej.: "Admins") o un DN completo (p. ej.: "CN=Admins,OU=Groups,DC=ldap,DC=sync-in,DC=com").
# Si se define, se asigna el rol de administrador a los usuarios cuyo `memberOf` de LDAP contiene este CN (o cuyo DN de grupo coincide).
# Si falta `memberOf`, Sync-in también puede comprobar la pertenencia buscando grupos `groupOfNames`.
# Si los usuarios no pueden leer `groupOfNames`, utilice una cuenta de bind de servicio para realizar esta búsqueda.
# Si no se define, los administradores existentes conservan su rol y este no se puede retirar mediante LDAP.
# opcional
adminGroup:
# enablePasswordAuthFallback: permite la autenticación mediante contraseña local a los usuarios estándar cuando el servicio LDAP no está disponible.
# Cuando está habilitada, los usuarios estándar pueden autenticarse con su contraseña local si el servicio LDAP no está disponible.
# Siempre se permite a los administradores (acceso de emergencia).
# Se recomienda configurar y mantener disponible una contraseña local de Sync-in para las cuentas de administrador, a fin de poder utilizarla como acceso de emergencia.
# predeterminado: false
enablePasswordAuthFallback: false
oidc:
# issuerUrl: URL de descubrimiento del proveedor OIDC
# p. ej.:
# - 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
# El servidor detectará automáticamente los endpoints de autorización, token e información del usuario.
# obligatorio
issuerUrl:
# clientId: identificador de cliente OAuth 2.0 obtenido del proveedor OIDC
# obligatorio
clientId:
# clientSecret: secreto de cliente OAuth 2.0 obtenido del proveedor OIDC
# obligatorio
clientSecret: 'changeOIDCClientSecret'
# redirectUri: URL de redirección a la que se envía a los usuarios después de la autenticación
# Esta URL debe registrarse entre los URI de redireccionamiento permitidos por el proveedor OIDC
# p. ej.: (retorno de la API): https://sync-in.domain.com/api/auth/oidc/callback
#
# Para permitir la autenticación desde la aplicación de escritorio, también deben registrarse las siguientes URL de redireccionamiento en el proveedor 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 el proveedor OIDC admite comodines o expresiones regulares, puede registrar una sola entrada como la siguiente:
# - http://127.0.0.1/*
#
# obligatorio
redirectUri: 'https://sync-in.domain.com/api/auth/oidc/callback'
options:
# autoCreateUser: crea automáticamente una cuenta de usuario local tras el primer inicio de sesión OIDC correcto.
# Cuando está habilitada, el `login` del usuario se deriva de los claims OIDC: preferred_username, después la parte local del correo electrónico y, como último recurso, `sub`.
# Cuando está deshabilitada, solo los usuarios existentes pueden autenticarse mediante OIDC.
# predeterminado: true
autoCreateUser: true
# autoCreatePermissions: permisos asignados a los usuarios creados automáticamente mediante OIDC.
# Se aplica únicamente cuando autoCreateUser está habilitado y solo al crear el usuario.
# Esta opción no afecta a los usuarios existentes.
# La lista completa de permisos está disponible en la documentación: https://sync-in.com/docs/admin-guide/permissions
# p. ej.: [personal_space, spaces_access] (lista obligatoria)
# predeterminado: []
autoCreatePermissions: []
# storageQuotaClaim: claim OIDC utilizado para recuperar la cuota de almacenamiento del usuario en bytes.
# Si falta el claim, el valor local de storageQuota no se actualiza.
# Si el claim existe con null o 0, el valor local de storageQuota se establece en null (sin límite).
# predeterminado: `storageQuota`
storageQuotaClaim: storageQuota
# adminRoleOrGroup: nombre del rol o grupo que concede acceso de administrador de Sync-in
# Los usuarios con este valor recibirán privilegios de administrador.
# El valor se compara con los claims `roles` o `groups` proporcionados por el IdP.
# Nota: según el proveedor (p. ej.: Keycloak), los roles o grupos pueden aparecer únicamente en los tokens
# y requerir mapeadores adecuados del IdP para incluirlos en el token de ID o en la respuesta UserInfo.
# opcional
adminRoleOrGroup:
# enablePasswordAuth: permite la autenticación local mediante contraseña cuando se utiliza OIDC.
# Cuando está habilitada, los usuarios pueden autenticarse con su contraseña de Sync-in en lugar de utilizar OIDC.
# La MFA de Sync-in se aplica a este flujo de contraseña local.
# Los inicios de sesión OIDC dependen del proveedor de identidad para aplicar las políticas de MFA/SSO.
# La autenticación mediante contraseña local siempre está permitida para:
# - usuarios invitados
# - administradores (acceso de emergencia)
# - ámbitos de aplicación (contraseñas de aplicación)
# En este flujo de inicio de sesión local, los usuarios estándar solo están autorizados cuando esta opción está habilitada y conocen su contraseña local de Sync-in.
# Los usuarios creados mediante OIDC pueden definir una contraseña local conocida desde su perfil mientras están autenticados con OIDC.
# Esta contraseña local también es necesaria para habilitar, restablecer o deshabilitar la 2FA de Sync-in desde una sesión OIDC del navegador.
# Se recomienda configurar y mantener disponible una contraseña local de Sync-in para las cuentas de administrador, a fin de poder utilizarla como acceso de emergencia.
# predeterminado: false
enablePasswordAuth: false
# autoSyncAvatar: descarga y sincroniza automáticamente el avatar del usuario desde el claim OIDC `picture`.
# predeterminado: false
autoSyncAvatar: false
# autoRedirect: redirige automáticamente a los usuarios al flujo de inicio de sesión OIDC.
# Cuando está habilitada, se omite la página de inicio de sesión y se envía a los usuarios directamente al proveedor OIDC.
# predeterminado: false
autoRedirect: false
# buttonText: etiqueta mostrada en el botón de inicio de sesión OIDC.
# predeterminado: Continue with OpenID Connect
buttonText: 'Continue with OpenID Connect'
security:
# scope: ámbitos OAuth 2.0 que se solicitarán (cadena separada por espacios)
# Ámbitos habituales: openid (obligatorio), email, profile, groups, roles
# predeterminado: `openid email profile`
scope: 'openid email profile'
# supportPKCE: habilita PKCE (Proof Key for Code Exchange) en el flujo de código de autorización.
# Cuando es true, se utiliza PKCE si el proveedor OIDC lo admite.
# predeterminado: true
supportPKCE: true
# allowInsecureRequests: permite solicitudes de descubrimiento y de token OIDC a través de HTTP no seguro.
# Establézcalo en true únicamente para desarrollo local o proveedores heredados de confianza.
# predeterminado: false
allowInsecureRequests: false
# Método de autenticación del cliente OAuth 2.0/OIDC utilizado en el endpoint de token.
# Valores posibles:
# - client_secret_basic (PREDETERMINADO): autenticación HTTP Basic mediante client_id y client_secret.
# Recomendado para clientes backend (confidenciales).
# - client_secret_post: client_id y client_secret se envían en el cuerpo de la solicitud.
# predeterminado: `client_secret_basic`
tokenEndpointAuthMethod: client_secret_basic
# tokenSigningAlg: algoritmo utilizado para verificar la firma de los tokens de ID (JWT) devueltos por el proveedor OpenID Connect.
# Valores habituales: RS256, RS384, RS512, ES256, ES384, ES512
# predeterminado: `RS256`
tokenSigningAlg: RS256
# userInfoSigningAlg: algoritmo utilizado para solicitar una respuesta UserInfo firmada al proveedor OpenID Connect.
# Cuando no se define, el endpoint UserInfo devuelve una respuesta JSON estándar (sin firma). Esta es la configuración más habitual y recomendada.
# Valores habituales: (vacío), RS256, RS384, RS512, ES256, ES384, ES512
# predeterminado: vacío
userInfoSigningAlg:
# skipSubjectCheck: deshabilita la comprobación de que el claim `sub` devuelto por el endpoint UserInfo
# coincide con el claim `sub` del token de ID.
# Establézcalo en true únicamente para proveedores OIDC no conformes o heredados.
# predeterminado: false
skipSubjectCheck: false
# requireVerifiedEmail: exige que el proveedor OIDC marque los correos del perfil como verificados antes de vincular la cuenta o sincronizar el perfil.
# Se recomienda cuando el proveedor expone un claim `email_verified` fiable.
# Algunos proveedores omiten este claim si no se configuran ámbitos o mapeadores específicos.
# predeterminado: true
requireVerifiedEmail: true
# allowPrivateIpAvatarDownload: permite descargar avatares OIDC desde rangos de IP privados o internos.
# Establézcalo en true únicamente cuando el proveedor OIDC devuelva URL internas de avatares de confianza.
# predeterminado: false
allowPrivateIpAvatarDownload: false
applications:
users:
# showUngroupedUsers: hace que los usuarios sin grupo sean visibles globalmente para los usuarios estándar y los administradores.
# Las cuentas de invitado quedan excluidas de esta visibilidad global (tanto como cuentas mostradas como cuando realizan solicitudes).
# predeterminado: `true`
showUngroupedUsers: true
files:
# obligatorio
dataPath: '/home/sync-in-data'
# maxUploadSize: tamaño máximo en bytes de un archivo recibido mediante cargas, WebDAV, sincronización, descargas remotas o callbacks de editores.
# predeterminado: 5368709120 (5 GB)
maxUploadSize: 5368709120
contentIndexing:
# Habilita la indexación del contenido de los archivos para la búsqueda (deshabilitarla desactiva la búsqueda de texto completo)
# predeterminado: true
enabled: true
ocr:
# Habilitar OCR en archivos PDF
# predeterminado: true
enabled: true
# Idiomas de OCR utilizados por tesseract.js
# Admite códigos ISO 639-2/T de tres letras: 'eng', 'spa', 'fra', 'deu', etc.
# ejemplos: `[eng,fra]`, `[fra]`
# predeterminado: [eng]
languages: [eng]
# Modo sin conexión: no descarga idiomas de OCR y utiliza únicamente archivos de idioma locales de la carpeta OCR integrada
# Para descargar idiomas, utilice este esquema: https://cdn.jsdelivr.net/npm/@tesseract.js-data/<lang>@1.0.0/4.0.0_best_int/<lang>.traineddata.gz
# predeterminado: false
offline: false
# Ruta de los archivos locales de idiomas de OCR
# Se utiliza cuando el modo sin conexión está habilitado o para sustituir la ubicación predeterminada
# predeterminado: directorio OCR integrado
languagesPath:
# Retención de la papelera en días. Establezca cada valor en un número de días para habilitar la limpieza automática de la papelera.
# Establézcalo en `false` o `0` para deshabilitar la limpieza de ese tipo de repositorio.
# predeterminado: users/spaces false
trashRetention:
users: false
spaces: false
# Grupos de documentos opcionales mostrados en el cuadro de diálogo "Nuevo documento".
# opciones: `microsoft` | `opendocument` | `drawio`
# utilice [] para mostrar únicamente Texto, Markdown y Otro
# predeterminado: [opendocument, microsoft, drawio]
sampleDocuments: [opendocument, microsoft, drawio]
editors:
onlyoffice:
# habilitar la integración de OnlyOffice
# predeterminado: false
enabled: false
# Secreto utilizado para los tokens JWT. Debe coincidir con el secreto configurado en el servidor OnlyOffice.
# obligatorio
secret:
# Si no se configura ningún servidor externo, se utiliza el servicio Nginx local de la instalación de Docker Compose.
# Si se configura un servidor externo, se utilizará en su lugar.
# Nota: al utilizar un servidor externo (p. ej.: https://onlyoffice.domain.com), asegúrese de que sea accesible desde el cliente o navegador.
# predeterminado: null
externalServer:
# Si utiliza HTTPS, establézcalo en `true`.
# predeterminado: false
verifySSL: false
eurooffice:
# habilitar la integración de Euro-Office
# predeterminado: false
enabled: false
# Secreto utilizado para los tokens JWT. Debe coincidir con el secreto configurado en el servidor Euro-Office.
# obligatorio
secret:
# Si se configura un servidor externo, se utilizará.
# Nota: asegúrese de que sea accesible desde el cliente o navegador.
# predeterminado: null
externalServer:
# Si utiliza HTTPS, establézcalo en `true`.
# predeterminado: false
verifySSL: false
collabora:
# habilitar la integración de Collabora Online
# predeterminado: false
enabled: false
# Si no se configura ningún servidor externo, se utiliza el servicio Nginx local de la instalación de Docker Compose.
# Si se configura un servidor externo, se utilizará en su lugar.
# Nota: al utilizar un servidor externo (p. ej.: https://collabora.domain.com), asegúrese de que sea accesible desde el cliente o navegador.
# predeterminado: null
externalServer:
drawio:
# habilitar la integración de draw.io
# predeterminado: false
enabled: false
# Si no se define, se utiliza el servicio Docker Compose local a través de Nginx.
# Si se define, se utiliza esta URL externa y debe ser accesible desde el cliente o navegador.
# Utilice un origen dedicado para un servidor draw.io externo.
# ejemplo: https://drawio.domain.com
# predeterminado: null
externalServer:
# Configuración del repositorio de aplicaciones cliente (en el nivel applications, no applications.files)
appStore:
# repositorio: `public` | `local`
# predeterminado: `public`
repository: public