Configurazione del server
Tutte le opzioni di configurazione del server Sync-in sono definite nel file environment.yaml.
Un esempio completo è disponibile su GitHub: environment.dist.yaml.
Questo file consente di personalizzare il comportamento dell'istanza Sync-in: rete, autenticazione, database, cache, posta elettronica e altro.
Environment.yaml
server
host: indirizzo IP sul quale il server resta in ascolto.- Predefinito:
0.0.0.0 - Tipo: string (IP)
- Predefinito:
port: porta utilizzata per l'interfaccia web.- Predefinito:
8080 - Tipo: number
- Predefinito:
publicUrl: URL pubblico canonico utilizzato per generare i link delle notifiche e gli URL degli editor.- Predefinito: non definito
- Tipo: string
- Obbligatorio: no (sarà obbligatorio nella prossima versione principale)
- Esempio:
https://sync-in.domain.com - Nota: il valore deve corrispondere all'URL esposto agli utenti, includendo lo schema e l'eventuale porta non standard. Deve essere raggiungibile dai browser degli utenti e, per gli editor per ufficio che comunicano con Sync-in, dai relativi servizi o container.
- Nota: quando viene omesso, le e-mail di notifica vengono inviate senza link di azione e gli editor utilizzano l'origine della richiesta come soluzione di compatibilità.
- Nota: per motivi di sicurezza, questa opzione diventerà obbligatoria nella prossima versione principale: gli endpoint degli editor verranno così creati da un'origine attendibile controllata dall'amministratore anziché dalle intestazioni della richiesta.
workers: numero di processi.- Predefinito:
1 - Tipo: number |
auto|0 - Nota: utilizzare
autoo0per impiegare tutti i core della CPU.
- Predefinito:
trustProxy: attiva la gestione del proxy.- Predefinito:
true - Tipo: boolean | string (i valori numerici sono temporaneamente supportati, ma deprecati)
- Nota: dalla versione 2.6.0, i valori numerici
>= 1diventanotrue, mentre i valori< 1diventanofalse. Quando possibile, utilizzare l'IP o l'intervallo CIDR di un proxy attendibile. - Nota: consultare le opzioni disponibili.
- Predefinito:
restartOnFailure: riavvia automaticamente i worker in caso di errore.- Predefinito:
true - Tipo: boolean
- Predefinito:
logger
level: livello dei log del server.- Predefinito:
info - Tipo:
trace|debug|info|warn|error|fatal
- Predefinito:
stdout: invia i log alla console (true) oppure li scrive in un file (false).- Predefinito:
true - Tipo: boolean
- Predefinito:
colorize: attiva la colorazione dei log.- Predefinito:
true - Tipo: boolean
- Predefinito:
jsonOutput: attiva l'output JSON.- Predefinito:
false - Tipo: boolean
- Nota: quando è attivo,
colorizeviene ignorato.
- Predefinito:
filePath: percorso del file di log utilizzato quandostdoutèfalse.- Predefinito:
logs/server.log - Tipo: string
- Predefinito:
mysql
url: URL di connessione a MySQL.- Predefinito: non definito
- Tipo: string
- Obbligatorio: sì
- Esempio:
mysql://user:password@localhost:3306/database
logQueries: registra tutte le query SQL inviate al database.- Predefinito:
false - Tipo: boolean
- Predefinito:
cache
adapter: sistema di cache.- Predefinito:
mysql - Tipo:
mysql|redis
- Predefinito:
ttl: durata dei dati nella cache, in secondi.- Predefinito:
60 - Tipo: number
- Predefinito:
redis: URL di connessione a Redis, se viene utilizzatoadapter: redis.- Predefinito:
redis://127.0.0.1:6379 - Tipo: string
- Obbligatorio: sì (se
adapter:redis)
- Predefinito:
websocket
adapter: definisce come vengono gestite le connessioni WebSocket.- Predefinito:
cluster - Tipo:
cluster|redis
- Predefinito:
redis: URL di connessione a Redis, se viene utilizzatoadapter: redis.- Predefinito:
redis://127.0.0.1:6379 - Tipo: string
- Obbligatorio: sì (se
adapter:redis)
- Predefinito:
mail
La sezione mail è facoltativa. Quando viene omessa, le notifiche e le funzionalità basate sulla posta elettronica sono disattivate.
host: host del server SMTP.- Predefinito: non definito
- Tipo: string
- Obbligatorio: sì (se la sezione
mailè definita)
port: porta SMTP, ad esempio587.- Predefinito:
25 - Tipo: number
- Predefinito:
sender: indirizzo del mittente.- Predefinito:
Sync-in<notification@sync-in.com> - Tipo: string
- Predefinito:
auth:user: nome utente SMTP.- Predefinito: non definito
- Tipo: string
pass: password SMTP.- Predefinito: non definito
- Tipo: string
secure: connessione SSL.- Predefinito:
false - Tipo: boolean
- Predefinito:
ignoreTLS: disattiva STARTTLS anche se il server lo annuncia.- Predefinito:
false - Tipo: boolean
- Predefinito:
rejectUnauthorized: rifiuta la connessione se il certificato TLS del server non è valido.- Predefinito:
true - Tipo: boolean
- Impostare su
falsesoltanto per un server SMTP attendibile che utilizza un certificato autofirmato. Questa impostazione disattiva la convalida del certificato e non è consigliata in produzione.
- Predefinito:
logger: attiva i log SMTP interni di Nodemailer. Il livello di dettaglio segue il valore generalelogger.level. Impostandologger.levelsudebugotracesi attiva anche il traffico SMTP dettagliato.- Predefinito:
false - Tipo: boolean
- Predefinito:
auth
provider: Metodo di autenticazione.- Valore predefinito:
mysql - Tipo:
mysql|ldap|oidc
- Valore predefinito:
cookieSameSite: Criterio SameSite per i cookie.- Valore predefinito:
strict - Tipo:
lax|strict
- Valore predefinito:
encryptionKey: Chiave di crittografia dei segreti degli utenti nel database, attualmente facoltativa. Diventerà obbligatoria in una futura versione principale.- Valore predefinito: non definito
- Tipo: string
- Nota: ⚠️ Dopo l'attivazione dell'MFA, qualsiasi modifica o eliminazione della chiave di crittografia invaliderà i segreti, impedendo ogni autenticazione successiva.
mfa:totp:enabled: Attiva l'autenticazione TOTP per tutti gli utenti.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
issuer: Nome visualizzato nell'applicazione di autenticazione.- Valore predefinito:
Sync-in - Tipo: string
- Valore predefinito:
token:access:secret: Segreto JWT per i token di accesso.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
- Nota: utilizzare un valore lungo e generato casualmente. Deve essere diverso dal segreto del token di rinnovo.
expiration: Durata di validità del token di accesso.- Valore predefinito:
15m - Tipo: string
- Valore predefinito:
refresh:secret: Segreto JWT per i token di rinnovo.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
- Nota: utilizzare un valore lungo e generato casualmente. Deve essere diverso dal segreto del token di accesso.
expiration: Durata di validità del token di rinnovo.- Valore predefinito:
4h - Tipo: string
- Valore predefinito:
-
ldap(seprovider: ldap):- Nota: consultare la documentazione dedicata
servers: Elenco dei server LDAP.- Valore predefinito:
[] - Tipo: string[]
- Obbligatorio: sì
- Esempio:
[ldap://localhost:389]
- Valore predefinito:
tlsOptions: opzioni TLS di Node.js utilizzate per la connessione LDAP sicura.rejectUnauthorized: rifiuta la connessione se il certificato TLS del server non è valido.- Valore predefinito:
true - Tipo: boolean
- Obbligatorio: no
- Valore predefinito:
ca: elenco dei percorsi validi dei certificati.- Valore predefinito:
[] - Tipo: string[]
- Obbligatorio: no
- Esempio:
[/app/certs/ca.pem]
- Valore predefinito:
*: altre opzioni sono disponibili nella documentazione di Node.js
baseDN: DN di base.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
- Esempio:
ou=people,dc=example,dc=com
filter: Filtro LDAP facoltativo aggiunto alla ricerca.- Valore predefinito: non definito
- Tipo: string
- Esempio:
(acl=admin)
upnSuffix: Suffisso del dominio AD utilizzato conuserPrincipalName.- Valore predefinito: non definito
- Tipo: string
- Esempio: user@
sync-in.com
netbiosName: Nome di dominio NetBIOS utilizzato consAMAccountName.- Valore predefinito: non definito
- Tipo: string
- Esempio:
SYNC_IN\user
serviceBindDN: DN di un account di servizio utilizzato per eseguire le ricerche LDAP.- Valore predefinito: non definito
- Tipo: string
serviceBindPassword: Password dell'account di servizio.- Valore predefinito: non definito
- Tipo: string
attributes:login: Attributo LDAP utilizzato per identificare l'utente.- Valore predefinito:
uid - Tipo:
uid|cn|mail|sAMAccountName|userPrincipalName
- Valore predefinito:
email: Attributo LDAP che contiene l'indirizzo e-mail (ad es.mail,email).- Valore predefinito:
mail - Tipo: string
- Valore predefinito:
storageQuota: Attributo LDAP che contiene la quota di archiviazione dell'utente, in byte.- Valore predefinito:
storageQuota - Tipo: string
- Nota: se l'attributo è assente, la quota locale rimane invariata. Se l'attributo esiste con valore
nullo0, la quota viene impostata come illimitata.
- Valore predefinito:
options:autoCreateUser: Crea un utente locale al primo accesso LDAP.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
autoCreatePermissions: Autorizzazioni assegnate agli utenti creati automaticamente.- Valore predefinito:
[] - Tipo: string[]
- Nota: consultare gli identificativi delle autorizzazioni
- Valore predefinito:
adminGroup: Gruppo LDAP che concede i privilegi di amministratore (CN semplice o DN completo).- Valore predefinito: non definito
- Tipo: string
enablePasswordAuthFallback: Consente l'autenticazione locale mediante password agli utenti standard quando LDAP non è disponibile.- Valore predefinito:
false - Tipo: boolean
- Nota: è consigliabile configurare e mantenere disponibile una password locale Sync-in per gli account amministratore, affinché possa essere utilizzata come accesso di emergenza.
- Valore predefinito:
-
oidc(seprovider: oidc):- Nota: consultare la documentazione dedicata
issuerUrl: URL di discovery del provider OpenID Connect.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
clientId: Client ID OAuth 2.0.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
clientSecret: Client Secret OAuth 2.0.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
redirectUri: URI di reindirizzamento registrato presso il provider.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
- Nota: ⚠️ L'URL deve terminare con
/api/auth/oidc/callback
options:autoCreateUser: Crea un utente locale al primo accesso OIDC.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
autoCreatePermissions: Autorizzazioni assegnate agli utenti creati automaticamente.- Valore predefinito:
[] - Tipo: string[]
- Nota: consultare gli identificativi delle autorizzazioni
- Valore predefinito:
adminRoleOrGroup: Ruolo o gruppo che concede i privilegi di amministratore.- Valore predefinito: non definito
- Tipo: string
storageQuotaClaim: Claim OIDC che contiene la quota di archiviazione dell'utente, in byte.- Valore predefinito:
storageQuota - Tipo: string
- Nota: se il claim è assente, la quota locale rimane invariata. Se il claim esiste con valore
nullo0, la quota viene impostata come illimitata.
- Valore predefinito:
enablePasswordAuth: Consente l'autenticazione locale mediante password agli utenti standard esistenti.- Valore predefinito:
false - Tipo: boolean
- Nota: per questo flusso di accesso locale, gli utenti standard devono conoscere la propria password locale Sync-in.
- Nota: gli utenti creati tramite OIDC possono impostare dal proprio profilo una password locale nota, mentre sono autenticati tramite OIDC.
- Nota: la password locale è necessaria anche per attivare, reimpostare o disattivare la 2FA di Sync-in da una sessione OIDC nel browser.
- Nota: è consigliabile configurare e mantenere disponibile una password locale Sync-in per gli account amministratore, affinché possa essere utilizzata come accesso di emergenza.
- Valore predefinito:
autoSyncAvatar: Scarica e sincronizza automaticamente l'avatar dell'utente dal claim OIDCpicture.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
autoRedirect: Reindirizza automaticamente all'IdP.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
buttonText: Etichetta del pulsante di accesso OIDC.- Valore predefinito:
Continue with OpenID Connect - Tipo: string
- Valore predefinito:
security:scope: Scope richiesti.- Valore predefinito:
openid email profile - Tipo: string
- Valore predefinito:
supportPKCE: Attiva il supporto PKCE nel flusso di autorizzazione.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
allowInsecureRequests: Consente la discovery OIDC e le richieste di token tramite HTTP non sicuro.- Valore predefinito:
false - Tipo: boolean
- Nota: attivare soltanto per lo sviluppo locale o per provider legacy attendibili.
- Valore predefinito:
tokenEndpointAuthMethod: Metodo di autenticazione nell'endpoint dei token.- Valore predefinito:
client_secret_basic - Tipo:
client_secret_basic|client_secret_post - Nota:
clientSecretè obbligatorio nella configurazione di Sync-in.
- Valore predefinito:
tokenSigningAlg: Algoritmo di firma dei token ID.- Valore predefinito:
RS256 - Tipo: string
- Valore predefinito:
userInfoSigningAlg: Algoritmo per una risposta UserInfo firmata.- Valore predefinito: non definito
- Tipo: string
skipSubjectCheck: Disattiva la verifica del claimsub.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
requireVerifiedEmail: Richiede che il provider OIDC contrassegni come verificati gli indirizzi e-mail del profilo prima dell'associazione dell'account o della sincronizzazione del profilo.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
allowPrivateIpAvatarDownload: Consente il download degli avatar OIDC da intervalli di indirizzi IP privati o interni.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
applications
users:showUngroupedUsers: Rende gli utenti senza gruppo visibili globalmente agli utenti standard e agli amministratori.- Valore predefinito:
true - Tipo: boolean
- Nota: gli account ospite sono esclusi da questa visibilità globale, sia come account elencati sia come richiedenti.
- Valore predefinito:
files:dataPath: Posizione di archiviazione dei file dell'applicazione, inclusi gli spazi personali, gli spazi collaborativi e i file temporanei.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì
- Docker: impostato automaticamente su
/app/datadall'entrypoint Docker; omettere questo parametro dal file Dockerenvironment.yaml.
maxUploadSize: Dimensione massima dei file ricevuti tramite caricamenti HTTP, WebDAV, sincronizzazione, download remoti o callback degli editor.- Valore predefinito:
5368709120(5 GB) - Tipo: number
- Nota: valore espresso in byte.
- Valore predefinito:
contentIndexing:enabled: attiva l'indicizzazione del contenuto dei file per la ricerca; la disattivazione di questa opzione disattiva la ricerca full-text.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
ocr:- Nota: consultare la documentazione dedicata
enabled: Attiva l'OCR per le immagini dei PDF.- Valore predefinito:
true - Tipo: boolean
- Valore predefinito:
languages: Lingue OCR utilizzate.- Valore predefinito:
[eng] - Tipo: string[]
- Esempio:
[eng,fra] - Nota: supporta i codici ISO 639-2/T di tre lettere:
eng,spa,fra,deuecc.
- Valore predefinito:
offline: Non scarica le lingue OCR e utilizza soltanto i file di lingua locali.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
languagesPath: Percorso dei file di lingua OCR locali.- Valore predefinito: directory OCR integrata
- Tipo: string
- Nota: utilizzato quando è attiva la modalità offline o per sostituire la posizione predefinita.
trashRetention:users: Intervallo di pulizia automatica del cestino degli spazi personali, in giorni.- Valore predefinito:
false - Tipo: number |
false - Nota:
falseo0disattiva la pulizia.
- Valore predefinito:
spaces: Intervallo di pulizia automatica del cestino degli spazi collaborativi, in giorni.- Valore predefinito:
false - Tipo: number |
false - Nota:
falseo0disattiva la pulizia.
- Valore predefinito:
sampleDocuments: Gruppi di documenti visualizzati nella finestra di dialogo "nuovo documento".- Valore predefinito:
[opendocument, microsoft, drawio] - Tipo: string[]
- Valori:
opendocument|microsoft|drawio - Nota: utilizzare
[]per mostrare soltanto Testo, Markdown e Altro.
- Valore predefinito:
editors: integrazioni degli editor collaborativi.- Nota: quando è definito, ogni valore
externalServerdeve essere un URL HTTP o HTTPS assoluto e valido. - Nota: i percorsi legacy
applications.files.onlyofficeeapplications.files.collaborarimangono supportati per compatibilità, ma sono deprecati e verranno rimossi in una versione futura. Spostare queste impostazioni inapplications.files.editors. onlyoffice:enabled: Attiva l'integrazione di OnlyOffice.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
secret: Segreto JWT condiviso con OnlyOffice.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì (se OnlyOffice è attivo)
externalServer: URL del server OnlyOffice.- Valore predefinito: non definito
- Tipo: string
- Esempio:
https://onlyoffice.my-domain.com - Nota: facoltativo se si utilizza Docker Compose di Sync-in.
verifySSL: Verifica il certificato SSL.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
eurooffice:enabled: Attiva l'integrazione di Euro-Office.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
secret: Segreto JWT condiviso con Euro-Office.- Valore predefinito: non definito
- Tipo: string
- Obbligatorio: sì (se Euro-Office è attivo)
externalServer: URL del server Euro-Office.- Valore predefinito: non definito
- Tipo: string
- Esempio:
https://eurooffice.my-domain.com
verifySSL: Verifica il certificato SSL.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
collabora:enabled: Attiva l'integrazione di Collabora Online.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
externalServer: URL del server Collabora Online.- Valore predefinito: non definito
- Tipo: string
- Esempio:
https://collabora.my-domain.com - Nota: facoltativo se si utilizza Docker Compose di Sync-in.
drawio:enabled: Attiva l'integrazione di draw.io.- Valore predefinito:
false - Tipo: boolean
- Valore predefinito:
externalServer: URL del server draw.io esterno.- Valore predefinito: non definito
- Tipo: string
- Esempio:
https://drawio.my-domain.com - Nota: facoltativo se si utilizza Docker Compose di Sync-in. Utilizzare un'origine dedicata per un server esterno.
- Nota: quando è definito, ogni valore
appStore:repository: Scelta del repository per le versioni dei client dell'applicazione.- Valore predefinito:
public - Tipo:
public|local - Nota: questa sezione è definita direttamente sotto
applications, non sottoapplications.files.
- Valore predefinito:
Variabili d'ambiente
I parametri scalari di configurazione del server Sync-in possono essere impostati tramite variabili d'ambiente con il prefisso SYNCIN_.
Quando viene definita una variabile SYNCIN_*, il suo valore ha la precedenza e sostituisce il valore corrispondente nel file environment.yaml.
Ad esempio, la seguente configurazione:
server:
# Facoltativo per ora; obbligatorio nella prossima versione principale
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'
può essere riprodotta utilizzando le seguenti variabili d'ambiente:
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'
# Facoltativo per ora; obbligatorio nella prossima versione principale
SYNCIN_SERVER_PUBLICURL='https://sync-in.domain.com'
SYNCIN_APPLICATIONS_FILES_DATAPATH='/home/sync-in-data'
Queste variabili d'ambiente forniscono una configurazione minima consigliata per avviare Sync-in senza un file environment.yaml.
- Per i booleani, utilizzare true o false.
- I valori numerici vengono gestiti automaticamente.
- Per configurare valori attesi come array, utilizzare un elenco separato da virgole quando l'opzione lo consente. Ad esempio,
SYNCIN_APPLICATIONS_FILES_SAMPLEDOCUMENTS=opendocument,microsoft,drawioconfiguraapplications.files.sampleDocuments.
⚠️ Quando un valore SYNCIN_* è racchiuso tra una coppia di virgolette singole o doppie, Sync-in rimuove queste virgolette esterne. Le virgolette annidate o non corrispondenti rimangono
invariate.
Configurazione minima
server:
# Facoltativo per ora; obbligatorio nella prossima versione principale
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'
Configurazione completa
server:
# host predefinito: `0.0.0.0`
host: 0.0.0.0
# porta predefinita: `8080`
port: 8080
# publicUrl: URL pubblico canonico utilizzato per creare i link delle notifiche e gli URL degli editor.
# Se non impostato, le e-mail di notifica vengono inviate senza link di azione e gli editor utilizzano l'origine della richiesta come soluzione di compatibilità.
# Per motivi di sicurezza, diventerà obbligatorio nella prossima versione principale, affinché gli endpoint degli editor utilizzino un'origine attendibile controllata dall'amministratore
# anziché le intestazioni della richiesta.
# ad esempio: https://sync-in.domain.com
# facoltativo
publicUrl:
# workers: `auto` o `0` (utilizza tutte le CPU) | numero di CPU da utilizzare
# valore predefinito: 1
workers: 1
# trust proxy: `true` (considera attendibili tutti i proxy) | `false` | `127.0.0.1,192.168.1.1/24`
# dalla versione 2.6.0, i valori numerici precedenti >= 1 sono deprecati e vengono trattati come `true`
# valore predefinito: true
trustProxy: true
# restartOnFailure: riavvia automaticamente i worker se vengono terminati o si arrestano
# valore predefinito: `true`
restartOnFailure: true
mysql:
# obbligatorio
url: 'mysql://root:MySQLPassword@localhost:3306/database'
# valore predefinito: `false`
logQueries: false
logger:
# level: `trace` | `debug` | `info` | `warn` | `error` | `fatal`
# valore predefinito: `info`
level: info
# stdout: se false, i log vengono scritti nella directory di esecuzione
# valore predefinito: `true`
stdout: true
# Colora l'output.
# valore predefinito: `true`
colorize: true
# Output JSON. Quando è attivo, `colorize` viene ignorato.
# valore predefinito: `false`
jsonOutput: false
# Percorso del file di log utilizzato quando stdout è impostato su false
filePath:
cache:
# adapter: `mysql` | `redis`
# valore predefinito: `mysql`
adapter: mysql
# TTL in secondi
# valore predefinito: `60`
ttl: 60
# URL dell'adattatore Redis
# valore predefinito: `redis://127.0.0.1:6379`
redis: 'redis://127.0.0.1:6379'
websocket:
# adapter: `cluster` (worker Node.js: valore predefinito) | `redis`
# valore predefinito: `cluster`
adapter: cluster
# URL dell'adattatore Redis
# valore predefinito: `redis://127.0.0.1:6379`
redis: 'redis://127.0.0.1:6379'
mail:
host: 'smtp.server.com'
# valore predefinito: `25`
port: 25
# valore predefinito: `Sync-in<notification@sync-in.com>`
sender: 'Sync-in<notification@sync-in.com>'
# facoltativo
auth:
user: 'user'
pass: 'password'
# Indica se la connessione deve utilizzare SSL (se true) o meno (se false)
# Nota: impostare `secure: false` non significa necessariamente che i messaggi vengano inviati in chiaro
# Se il server supporta STARTTLS, la connessione viene in genere aggiornata automaticamente a TLS
# valore predefinito: `false`
secure: false
# ignoreTLS: se true, disattiva STARTTLS anche se il server lo annuncia
# valore predefinito: false
ignoreTLS: false
# rejectUnauthorized: rifiuta la connessione se il certificato TLS del server non è valido
# valore predefinito: true
rejectUnauthorized: true
# Attiva i log SMTP interni di Nodemailer
# Impostare logger.level su debug o trace per includere il traffico SMTP dettagliato
# valore predefinito: `false`
logger: false
auth:
# provider : `mysql` | `ldap` | `oidc`
# valore predefinito: `mysql`
provider: mysql
# Chiave utilizzata per cifrare le chiavi segrete degli utenti nel database
# Facoltativa per ora; obbligatoria in una futura versione principale
# Avvertenza: non modificare o rimuovere la chiave di cifratura dopo l'attivazione dell'MFA, altrimenti i codici diventeranno non validi
encryptionKey:
# impostazione sameSite dei cookie: `lax` | `strict`
# valore predefinito: `strict`
cookieSameSite: strict
token:
access:
# Utilizzato per le firme dei token e dei cookie
# obbligatorio
secret:
# scadenza del token = maxAge del cookie
# valore predefinito: `15m`
expiration: 15m
refresh:
# Utilizzato per le firme dei token e dei cookie
# obbligatorio
secret:
# scadenza del token = maxAge del cookie
# valore predefinito: `4h`
expiration: 4h
# Autenticazione a più fattori
mfa:
# Configurazione TOTP
totp:
# Attiva l'autenticazione TOTP
# valore predefinito: true
enabled: true
# Nome mostrato nell'applicazione di autenticazione (FreeOTP, Proton Authenticator, Aegis Authenticator ecc.)
# valore predefinito: Sync-in
issuer: Sync-in
# Autenticazione LDAP
ldap:
# ad esempio: [ldap://localhost:389, ldaps://localhost:636] (array obbligatorio)
# Vengono provati più server nell'ordine indicato finché un'operazione di binding o ricerca non riesce.
# obbligatorio
servers: []
# tlsOptions: opzioni TLS di Node.js utilizzate per la connessione LDAP sicura.
# Supporta le opzioni TLS standard, come `ca`, `rejectUnauthorized` ecc.
# Vedere: https://nodejs.org/api/tls.html
# https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions
# Esempio:
# tlsOptions:
# rejectUnauthorized: true
# ca: [/app/certs/ca.pem]
# facoltativo
tlsOptions:
# baseDN: nome distinto (ad esempio: ou=people,dc=ldap,dc=sync-in,dc=com)
# Utilizzato come base di ricerca per gli utenti e per i gruppi quando adminGroup è un CN.
# obbligatorio
baseDN: 'ou=people,dc=ldap,dc=sync-in,dc=com'
# filtro, ad esempio: (acl=admin)
# Aggiunto senza modifiche al filtro di ricerca LDAP (configurazione attendibile).
# facoltativo
filter:
# upnSuffix: suffisso del dominio AD utilizzato con `userPrincipalName` per creare identificativi in stile UPN (ad esempio: user@`sync-in.com`)
# Utilizzato solo quando login è impostato su userPrincipalName.
# facoltativo
upnSuffix:
# netbiosName: nome di dominio NetBIOS utilizzato con `sAMAccountName` per creare identificativi nel formato precedente (ad esempio: `SYNC_IN`\user)
# Utilizzato solo quando login è impostato su sAMAccountName.
# facoltativo
netbiosName:
# serviceBindDN: nome distinto dell'account di servizio utilizzato per cercare utenti e gruppi.
# Quando è impostato, le ricerche vengono eseguite con questo account; il binding dell'utente viene utilizzato solo per convalidare la password.
# ad esempio: cn=syncin,ou=services,dc=ldap,dc=sync-in,dc=com
# facoltativo
serviceBindDN:
# serviceBindPassword: password dell'account di servizio utilizzato per cercare utenti e gruppi.
# facoltativo
serviceBindPassword:
attributes:
# Attributo LDAP corrispondente all'identificativo memorizzato nel database.
# Con un binding di servizio, viene utilizzato per individuare l'utente, quindi per eseguire il binding con il DN trovato.
# Senza un binding di servizio, viene utilizzato per costruire il DN dell'utente per il binding (tranne per AD: UPN/DOMAIN\\user).
# Se si sceglie mail, gli identificativi locali devono corrispondere all'indirizzo e-mail dell'utente.
# ad esempio: uid | cn | mail | sAMAccountName | userPrincipalName
# valore predefinito: uid
login: uid
# Attributo utilizzato per recuperare l'indirizzo e-mail dell'utente
# email: `mail` o `email`
# valore predefinito: `mail`
email: mail
# Attributo utilizzato per recuperare la quota di archiviazione dell'utente in byte.
# Se l'attributo è assente, il valore locale storageQuota non viene aggiornato.
# Se l'attributo esiste con valore null o 0, storageQuota locale viene impostato su null (senza limite).
# valore predefinito: `storageQuota`
storageQuota: storageQuota
options:
# autoCreateUser: crea automaticamente un utente locale alla prima autenticazione LDAP riuscita.
# L'account locale viene creato dagli attributi LDAP:
# - login: dall'attributo di accesso LDAP configurato (ad esempio: uid, cn, sAMAccountName, userPrincipalName)
# - email: dall'attributo e-mail configurato (obbligatorio)
# - firstName / lastName: da givenName+sn, oppure displayName, oppure cn (ripiego)
# Quando è disattivato, solo gli utenti esistenti possono autenticarsi tramite LDAP.
# valore predefinito: true
autoCreateUser: true
# autoCreatePermissions: autorizzazioni assegnate agli utenti creati automaticamente tramite LDAP.
# Applicate solo al momento della creazione dell'utente quando autoCreateUser è attivo.
# Non hanno effetto sugli utenti esistenti.
# L'elenco completo delle autorizzazioni è disponibile nella documentazione: https://sync-in.com/docs/admin-guide/permissions
# ad esempio: [personal_space, spaces_access] (array obbligatorio)
# valore predefinito: []
autoCreatePermissions: []
# adminGroup: gruppo LDAP che concede i privilegi di amministratore di Sync-in.
# Accetta un CN semplice (ad esempio: "Admins") o un DN completo (ad esempio: "CN=Admins,OU=Groups,DC=ldap,DC=sync-in,DC=com").
# Se impostato, agli utenti il cui `memberOf` LDAP contiene questo CN, o il cui DN di gruppo corrisponde, viene assegnato il ruolo di amministratore.
# Se `memberOf` è assente, Sync-in può verificare l'appartenenza anche cercando i gruppi `groupOfNames`.
# Se gli utenti non possono leggere `groupOfNames`, utilizzare un account di binding di servizio per eseguire questa ricerca.
# Se non è impostato, gli amministratori esistenti mantengono il proprio ruolo, che non può essere rimosso tramite LDAP.
# facoltativo
adminGroup:
# enablePasswordAuthFallback: consente agli utenti standard di autenticarsi con una password locale quando il servizio LDAP non è disponibile.
# Quando è attivo, gli utenti standard possono autenticarsi con la password locale se il servizio LDAP non è disponibile.
# Sempre consentito agli amministratori (accesso di emergenza).
# È consigliabile configurare e mantenere disponibile una password locale Sync-in per gli account amministratore.
# valore predefinito: false
enablePasswordAuthFallback: false
oidc:
# issuerUrl: URL dell'endpoint di rilevamento del provider OIDC
# ad esempio:
# - 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
# Il server rileva automaticamente gli endpoint di autorizzazione, token e userinfo.
# obbligatorio
issuerUrl:
# clientId: ID client OAuth 2.0 ottenuto dal provider OIDC
# obbligatorio
clientId:
# clientSecret: segreto client OAuth 2.0 ottenuto dal provider OIDC
# obbligatorio
clientSecret: 'changeOIDCClientSecret'
# redirectUri: URI di reindirizzamento a cui vengono indirizzati gli utenti dopo l'autenticazione
# Questo URL deve essere registrato tra gli URI di reindirizzamento consentiti dal provider OIDC
# ad esempio (callback API): https://sync-in.domain.com/api/auth/oidc/callback
#
# Per consentire l'autenticazione dall'applicazione desktop, è necessario registrare nel provider OIDC anche gli URL di reindirizzamento seguenti:
# - http://127.0.0.1:49152/oidc/callback
# - http://127.0.0.1:49153/oidc/callback
# - http://127.0.0.1:49154/oidc/callback
#
# Se il provider OIDC supporta caratteri jolly o espressioni regolari, è possibile registrare invece una sola voce, ad esempio:
# - http://127.0.0.1/*
#
# obbligatorio
redirectUri: 'https://sync-in.domain.com/api/auth/oidc/callback'
options:
# autoCreateUser: crea automaticamente un account utente locale al primo accesso OIDC riuscito.
# Quando è attivo, il `login` dell'utente viene ricavato dai claim OIDC: prima preferred_username, poi la parte locale dell'indirizzo e-mail e, come ultima risorsa, `sub`.
# Quando è disattivato, solo gli utenti esistenti possono autenticarsi tramite OIDC.
# valore predefinito: true
autoCreateUser: true
# autoCreatePermissions: autorizzazioni assegnate agli utenti creati automaticamente tramite OIDC.
# Applicate solo quando autoCreateUser è attivo e soltanto al momento della creazione dell'utente.
# Questa opzione non ha effetto sugli utenti esistenti.
# L'elenco completo delle autorizzazioni è disponibile nella documentazione: https://sync-in.com/docs/admin-guide/permissions
# ad esempio: [personal_space, spaces_access] (array obbligatorio)
# valore predefinito: []
autoCreatePermissions: []
# storageQuotaClaim: claim OIDC utilizzato per recuperare la quota di archiviazione dell'utente in byte.
# Se il claim è assente, il valore locale storageQuota non viene aggiornato.
# Se il claim esiste con valore null o 0, storageQuota locale viene impostato su null (senza limite).
# valore predefinito: `storageQuota`
storageQuotaClaim: storageQuota
# adminRoleOrGroup: nome del ruolo o del gruppo che concede l'accesso come amministratore di Sync-in
# Agli utenti con questo valore vengono concessi i privilegi di amministratore.
# Il valore viene confrontato con i claim `roles` o `groups` forniti dall'IdP.
# Nota: a seconda del provider (ad esempio Keycloak), i ruoli o i gruppi potrebbero essere esposti solo nei token
# e richiedere mapper IdP appropriati per essere inclusi nel token ID o nella risposta UserInfo.
# facoltativo
adminRoleOrGroup:
# enablePasswordAuth: consente l'autenticazione tramite password locale quando si utilizza OIDC.
# Quando è attivo, gli utenti possono autenticarsi con la propria password Sync-in anziché tramite OIDC.
# L'MFA di Sync-in si applica a questo flusso di autenticazione locale.
# Gli accessi OIDC dipendono dal provider di identità per l'applicazione dei criteri MFA/SSO.
# L'autenticazione tramite password locale è sempre consentita per:
# - utenti ospiti
# - amministratori (accesso di emergenza)
# - scope dell'applicazione (password per applicazioni)
# In questo flusso di accesso locale, gli utenti standard sono autorizzati solo quando l'opzione è attiva e conoscono la propria password Sync-in locale.
# Gli utenti creati tramite OIDC possono impostare dal proprio profilo una password locale nota mentre sono autenticati con OIDC.
# La password locale è necessaria anche per attivare, reimpostare o disattivare la 2FA di Sync-in da una sessione OIDC nel browser.
# È consigliabile configurare e mantenere disponibile una password locale Sync-in per gli account amministratore.
# valore predefinito: false
enablePasswordAuth: false
# autoSyncAvatar: scarica e sincronizza automaticamente l'avatar dell'utente dal claim OIDC `picture`.
# valore predefinito: false
autoSyncAvatar: false
# autoRedirect: reindirizza automaticamente gli utenti al flusso di accesso OIDC.
# Quando è attivo, la pagina di accesso viene ignorata e gli utenti vengono inviati direttamente al provider OIDC.
# valore predefinito: false
autoRedirect: false
# buttonText: etichetta visualizzata sul pulsante di accesso OIDC.
# valore predefinito: Continue with OpenID Connect
buttonText: 'Continue with OpenID Connect'
security:
# scope: scope OAuth 2.0 da richiedere (stringa separata da spazi)
# Scope comuni: openid (obbligatorio), email, profile, groups, roles
# valore predefinito: `openid email profile`
scope: 'openid email profile'
# supportPKCE: attiva PKCE (Proof Key for Code Exchange) nel flusso del codice di autorizzazione.
# Se true, PKCE viene utilizzato quando è supportato dal provider OIDC.
# valore predefinito: true
supportPKCE: true
# allowInsecureRequests: consente il rilevamento OIDC e le richieste di token tramite HTTP non sicuro.
# Impostare su true solo per lo sviluppo locale o per provider legacy attendibili.
# valore predefinito: false
allowInsecureRequests: false
# Metodo di autenticazione del client OAuth 2.0/OIDC utilizzato nell'endpoint del token.
# Valori possibili:
# - client_secret_basic (VALORE PREDEFINITO): autenticazione HTTP Basic con client_id e client_secret.
# Consigliato per i client backend (confidenziali).
# - client_secret_post: client_id e client_secret inviati nel corpo della richiesta.
# valore predefinito: `client_secret_basic`
tokenEndpointAuthMethod: client_secret_basic
# tokenSigningAlg: algoritmo utilizzato per verificare la firma degli ID token (JWT) restituiti dal provider OpenID Connect.
# Valori comuni: RS256, RS384, RS512, ES256, ES384, ES512
# valore predefinito: `RS256`
tokenSigningAlg: RS256
# userInfoSigningAlg: algoritmo utilizzato per richiedere una risposta UserInfo firmata al provider OpenID Connect.
# Se non è impostato, l'endpoint UserInfo restituisce una risposta JSON standard (non firmata). Questa è la configurazione più comune e consigliata.
# Valori comuni: (vuoto), RS256, RS384, RS512, ES256, ES384, ES512
# valore predefinito: vuoto
userInfoSigningAlg:
# skipSubjectCheck: disattiva la verifica che la dichiarazione `sub` restituita dall'endpoint UserInfo
# corrisponda al claim `sub` dell'ID token.
# Impostare su true solo per provider OIDC non conformi o legacy.
# valore predefinito: false
skipSubjectCheck: false
# requireVerifiedEmail: richiede che il provider OIDC contrassegni gli indirizzi e-mail del profilo come verificati prima di collegare l'account o sincronizzare il profilo.
# Consigliato quando il provider espone un claim `email_verified` attendibile.
# Alcuni provider omettono questo claim se non sono configurati scope o mapper specifici.
# valore predefinito: true
requireVerifiedEmail: true
# allowPrivateIpAvatarDownload: consente di scaricare gli avatar OIDC da intervalli IP privati o interni.
# Impostare su true solo quando il provider OIDC restituisce URL interni attendibili per gli avatar.
# valore predefinito: false
allowPrivateIpAvatarDownload: false
applications:
users:
# showUngroupedUsers: rende gli utenti senza gruppo visibili globalmente agli utenti standard e agli amministratori.
# Gli account ospiti sono esclusi da questa visibilità globale, sia come account elencati sia come richiedenti.
# valore predefinito: `true`
showUngroupedUsers: true
files:
# obbligatorio
dataPath: '/home/sync-in-data'
# maxUploadSize: dimensione massima in byte di un file ricevuto tramite caricamento, WebDAV, sincronizzazione, download remoto o callback degli editor.
# valore predefinito: 5368709120 (5 GB)
maxUploadSize: 5368709120
contentIndexing:
# Attiva l'indicizzazione del contenuto dei file per la ricerca (la disattivazione interrompe la ricerca full-text)
# valore predefinito: true
enabled: true
ocr:
# Attiva l'OCR sui PDF
# valore predefinito: true
enabled: true
# Lingue OCR utilizzate da tesseract.js
# Supporta i codici ISO 639-2/T a tre lettere: 'eng', 'spa', 'fra', 'deu' ecc.
# esempi: `[eng,fra]`, `[fra]`
# valore predefinito: [eng]
languages: [eng]
# Modalità offline: non scarica le lingue OCR e utilizza solo i file di lingua locali della cartella OCR integrata
# Per scaricare le lingue, utilizzare questo schema: https://cdn.jsdelivr.net/npm/@tesseract.js-data/<lang>@1.0.0/4.0.0_best_int/<lang>.traineddata.gz
# valore predefinito: false
offline: false
# Percorso dei file di lingua OCR locali
# Utilizzato quando la modalità offline è attiva o per sostituire la posizione predefinita
# valore predefinito: directory OCR integrata
languagesPath:
# Conservazione del cestino in giorni. Impostare ogni valore su un numero di giorni per attivare la pulizia automatica del cestino.
# Impostare su `false` o `0` per disattivare la pulizia del tipo di repository corrispondente.
# valore predefinito: users/spaces false
trashRetention:
users: false
spaces: false
# Gruppi di documenti facoltativi mostrati nella finestra di dialogo "nuovo documento".
# opzioni: `microsoft` | `opendocument` | `drawio`
# utilizzare [] per mostrare solo Testo, Markdown e Altro
# valore predefinito: [opendocument, microsoft, drawio]
sampleDocuments: [opendocument, microsoft, drawio]
editors:
onlyoffice:
# Attiva l'integrazione di OnlyOffice
# valore predefinito: false
enabled: false
# Segreto utilizzato per i token JWT. Deve corrispondere al segreto configurato nel server OnlyOffice.
# obbligatorio
secret:
# Se non viene configurato un server esterno, viene utilizzato il servizio Nginx locale della configurazione Docker Compose.
# Se viene configurato un server esterno, verrà utilizzato al suo posto.
# Nota: quando si utilizza un server esterno (ad esempio: https://onlyoffice.domain.com), assicurarsi che sia accessibile dal client o dal browser.
# valore predefinito: null
externalServer:
# Se si utilizza HTTPS, impostare su `true`.
# valore predefinito: false
verifySSL: false
eurooffice:
# Attiva l'integrazione di Euro-Office
# valore predefinito: false
enabled: false
# Segreto utilizzato per i token JWT. Deve corrispondere al segreto configurato nel server Euro-Office.
# obbligatorio
secret:
# Se viene configurato un server esterno, verrà utilizzato.
# Nota: assicurarsi che sia accessibile dal client o dal browser.
# valore predefinito: null
externalServer:
# Se si utilizza HTTPS, impostare su `true`.
# valore predefinito: false
verifySSL: false
collabora:
# Attiva l'integrazione di Collabora Online
# valore predefinito: false
enabled: false
# Se non viene configurato un server esterno, viene utilizzato il servizio Nginx locale della configurazione Docker Compose.
# Se viene configurato un server esterno, verrà utilizzato al suo posto.
# Nota: quando si utilizza un server esterno (ad esempio: https://collabora.domain.com), assicurarsi che sia accessibile dal client o dal browser.
# valore predefinito: null
externalServer:
drawio:
# Attiva l'integrazione di draw.io
# valore predefinito: false
enabled: false
# Se non è impostato, viene utilizzato il servizio Docker Compose locale tramite Nginx.
# Se è impostato, viene utilizzato questo URL esterno, che deve essere accessibile dal client o dal browser.
# Utilizzare un'origine dedicata per un server draw.io esterno.
# esempio: https://drawio.domain.com
# valore predefinito: null
externalServer:
# Configurazione del repository delle applicazioni client (a livello di applications, non di applications.files)
appStore:
# repository: `public` | `local`
# valore predefinito: `public`
repository: public