Vai al contenuto principale

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)
  • port: porta utilizzata per l'interfaccia web.
    • Predefinito: 8080
    • Tipo: number
  • 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 auto o 0 per impiegare tutti i core della CPU.
  • 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 >= 1 diventano true, mentre i valori < 1 diventano false. Quando possibile, utilizzare l'IP o l'intervallo CIDR di un proxy attendibile.
    • Nota: consultare le opzioni disponibili.
  • restartOnFailure: riavvia automaticamente i worker in caso di errore.
    • Predefinito: true
    • Tipo: boolean

logger​

  • level: livello dei log del server.
    • Predefinito: info
    • Tipo: trace | debug | info | warn | error | fatal
  • stdout: invia i log alla console (true) oppure li scrive in un file (false).
    • Predefinito: true
    • Tipo: boolean
  • colorize: attiva la colorazione dei log.
    • Predefinito: true
    • Tipo: boolean
  • jsonOutput: attiva l'output JSON.
    • Predefinito: false
    • Tipo: boolean
    • Nota: quando è attivo, colorize viene ignorato.
  • filePath: percorso del file di log utilizzato quando stdout è false.
    • Predefinito: logs/server.log
    • Tipo: string

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

cache​

  • adapter: sistema di cache.
    • Predefinito: mysql
    • Tipo: mysql | redis
  • ttl: durata dei dati nella cache, in secondi.
    • Predefinito: 60
    • Tipo: number
  • redis: URL di connessione a Redis, se viene utilizzato adapter: redis.
    • Predefinito: redis://127.0.0.1:6379
    • Tipo: string
    • Obbligatorio: sì (se adapter: redis)

websocket​

  • adapter: definisce come vengono gestite le connessioni WebSocket.
    • Predefinito: cluster
    • Tipo: cluster | redis
  • redis: URL di connessione a Redis, se viene utilizzato adapter: redis.
    • Predefinito: redis://127.0.0.1:6379
    • Tipo: string
    • Obbligatorio: sì (se adapter: redis)

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 esempio 587.
    • Predefinito: 25
    • Tipo: number
  • sender: indirizzo del mittente.
    • Predefinito: Sync-in<notification@sync-in.com>
    • Tipo: string
  • 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
  • ignoreTLS: disattiva STARTTLS anche se il server lo annuncia.
    • Predefinito: false
    • Tipo: boolean
  • rejectUnauthorized: rifiuta la connessione se il certificato TLS del server non è valido.
    • Predefinito: true
    • Tipo: boolean
    • Impostare su false soltanto per un server SMTP attendibile che utilizza un certificato autofirmato. Questa impostazione disattiva la convalida del certificato e non è consigliata in produzione.
  • logger: attiva i log SMTP interni di Nodemailer. Il livello di dettaglio segue il valore generale logger.level. Impostando logger.level su debug o trace si attiva anche il traffico SMTP dettagliato.
    • Predefinito: false
    • Tipo: boolean

auth​

  • provider : Metodo di autenticazione.
    • Valore predefinito: mysql
    • Tipo: mysql | ldap | oidc
  • cookieSameSite : Criterio SameSite per i cookie.
    • Valore predefinito: strict
    • Tipo: lax | strict
  • 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
      • issuer : Nome visualizzato nell'applicazione di autenticazione.
        • Valore predefinito: Sync-in
        • Tipo: string
  • 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
    • 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
  • ldap (se provider: ldap):​

    • Nota: consultare la documentazione dedicata
    • servers : Elenco dei server LDAP.
      • Valore predefinito: []
      • Tipo: string[]
      • Obbligatorio: sì
      • Esempio: [ldap://localhost:389]
    • 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
      • ca: elenco dei percorsi validi dei certificati.
        • Valore predefinito: []
        • Tipo: string[]
        • Obbligatorio: no
        • Esempio: [/app/certs/ca.pem]
      • *: 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 con userPrincipalName.
      • Valore predefinito: non definito
      • Tipo: string
      • Esempio: user@sync-in.com
    • netbiosName : Nome di dominio NetBIOS utilizzato con sAMAccountName.
      • 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
      • email : Attributo LDAP che contiene l'indirizzo e-mail (ad es. mail, email).
        • Valore predefinito: mail
        • Tipo: string
      • 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 null o 0, la quota viene impostata come illimitata.
    • options:
      • autoCreateUser : Crea un utente locale al primo accesso LDAP.
        • Valore predefinito: true
        • Tipo: boolean
      • autoCreatePermissions : Autorizzazioni assegnate agli utenti creati automaticamente.
      • 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.
  • oidc (se provider: 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
      • autoCreatePermissions : Autorizzazioni assegnate agli utenti creati automaticamente.
      • 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 null o 0, la quota viene impostata come illimitata.
      • 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.
      • autoSyncAvatar : Scarica e sincronizza automaticamente l'avatar dell'utente dal claim OIDC picture.
        • Valore predefinito: false
        • Tipo: boolean
      • autoRedirect : Reindirizza automaticamente all'IdP.
        • Valore predefinito: false
        • Tipo: boolean
      • buttonText : Etichetta del pulsante di accesso OIDC.
        • Valore predefinito: Continue with OpenID Connect
        • Tipo: string
    • security:
      • scope : Scope richiesti.
        • Valore predefinito: openid email profile
        • Tipo: string
      • supportPKCE : Attiva il supporto PKCE nel flusso di autorizzazione.
        • Valore predefinito: true
        • Tipo: boolean
      • 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.
      • 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.
      • tokenSigningAlg : Algoritmo di firma dei token ID.
        • Valore predefinito: RS256
        • Tipo: string
      • userInfoSigningAlg : Algoritmo per una risposta UserInfo firmata.
        • Valore predefinito: non definito
        • Tipo: string
      • skipSubjectCheck : Disattiva la verifica del claim sub.
        • Valore predefinito: false
        • Tipo: boolean
      • 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
      • allowPrivateIpAvatarDownload : Consente il download degli avatar OIDC da intervalli di indirizzi IP privati o interni.
        • Valore predefinito: false
        • Tipo: boolean

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.
  • 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/data dall'entrypoint Docker; omettere questo parametro dal file Docker environment.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.
    • 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
      • ocr:
        • Nota: consultare la documentazione dedicata
        • enabled : Attiva l'OCR per le immagini dei PDF.
          • Valore predefinito: true
          • Tipo: boolean
        • 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, deu ecc.
        • offline : Non scarica le lingue OCR e utilizza soltanto i file di lingua locali.
          • Valore predefinito: false
          • Tipo: boolean
        • 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: false o 0 disattiva la pulizia.
      • spaces : Intervallo di pulizia automatica del cestino degli spazi collaborativi, in giorni.
        • Valore predefinito: false
        • Tipo: number | false
        • Nota: false o 0 disattiva la pulizia.
    • 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.
    • editors: integrazioni degli editor collaborativi.
      • Nota: quando è definito, ogni valore externalServer deve essere un URL HTTP o HTTPS assoluto e valido.
      • Nota: i percorsi legacy applications.files.onlyoffice e applications.files.collabora rimangono supportati per compatibilità, ma sono deprecati e verranno rimossi in una versione futura. Spostare queste impostazioni in applications.files.editors.
      • onlyoffice:
        • enabled : Attiva l'integrazione di OnlyOffice.
          • Valore predefinito: false
          • Tipo: boolean
        • 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
      • eurooffice:
        • enabled : Attiva l'integrazione di Euro-Office.
          • Valore predefinito: false
          • Tipo: boolean
        • 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
      • collabora:
        • enabled : Attiva l'integrazione di Collabora Online.
          • Valore predefinito: false
          • Tipo: boolean
        • 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
        • 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.
  • 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 sotto applications.files.

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'
nota

Queste variabili d'ambiente forniscono una configurazione minima consigliata per avviare Sync-in senza un file environment.yaml.

informazioni
  • 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,drawio configura applications.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