Seafile o Nextcloud per sincronizzare i file?
Confronta Seafile 13 e Nextcloud 34: velocità di sync, RAM, backup ed encryption. Scopri quale modello di archiviazione si adatta al tuo server.
Seafile vs Nextcloud: la risposta breve
Il confronto tra Seafile e Nextcloud si riduce a una differenza: che cosa diventa un file quando raggiunge il server. Seafile suddivide ogni file in blocchi e li archivia in un object store leggibile soltanto da Seafile. La sincronizzazione è quindi veloce, ma il backup diventa un'attività composta da due parti. Nextcloud scrive il file sul disco come file e considera la sincronizzazione una delle funzioni di una piattaforma che gestisce anche calendari, contatti, documenti e link di condivisione. La scelta dipende da questa differenza, perché tutto il resto ne deriva.
Ad agosto 2026, Seafile è alla serie 13.0 e Nextcloud alla serie 34. Entrambi sono prodotti maturi e nessuno dei due è destinato a cambiare a breve il proprio modello di archiviazione.
Come Seafile archivia i file
Seafile modella una library nello stesso modo in cui git modella un repository. Il manuale dell'amministratore descrive il modello interno come Repo, Commit, FS e Block e specifica che un repo è chiamato anche library. Ogni file viene suddiviso in block di lunghezza variabile tramite il content-defined chunking (CDC, un algoritmo che determina i limiti dei block in base ai dati stessi); il manuale indica una dimensione media dei block di circa 8 MB. I block prendono il nome dal proprio contenuto. Di conseguenza, due versioni dello stesso file di grandi dimensioni condividono tutti i block rimasti invariati e anche due library condividono i block identici.
Il database relazionale contiene solo una quantità ridotta di metadati relativi alle library. Tutto il resto, cioè commit, oggetti directory e block, si trova nella data directory. Nel layout Docker usato dalle serie 12 e 13, questa directory è /opt/seafile-data/seafile/seafile-data. Eseguire ls in quella directory non fornisce informazioni utili, perché mostra directory con nomi hash, non Invoices/2026/march.pdf.
La sincronizzazione segue lo stesso modello. Il client chiede al server quali elementi sono cambiati, riceve un elenco di hash dei block e scarica soltanto i block che non possiede già. Per questo Seafile mantiene buone prestazioni con una library di grandi dimensioni: i byte trasferiti sono proporzionali ai block modificati, non alla dimensione del file che li contiene.
Come Nextcloud archivia i file
Nextcloud salva il file su disco nel percorso previsto. Il percorso data/<username>/files/ rispecchia ciò che l’utente vede nell’interfaccia web. Una tabella del database, oc_filecache, rispecchia lo stesso albero con dimensioni, date di modifica ed etag. Nextcloud considera attendibile la tabella, non il contenuto del disco.
Il client desktop usa WebDAV (web distributed authoring and versioning) su HTTPS. Ogni file richiede almeno una richiesta. Per questo Nextcloud ha aggiunto un’API per il caricamento in blocco: il manuale per sviluppatori spiega che il caricamento di molti file piccoli è più lento del possibile perché la larghezza di banda di rete non viene utilizzata completamente. I file piccoli vengono quindi raggruppati. I file grandi usano invece l’API di suddivisione in blocchi. La dimensione predefinita dei blocchi del client desktop è 5 MiB (OWNCLOUD_CHUNK_SIZE predefinito a 5242880 byte).
Il vantaggio dei file archiviati su disco è che qualsiasi strumento già disponibile può leggere i dati. Lo svantaggio è che Nextcloud non rileva le modifiche effettuate al di fuori dell’applicazione. Se copi direttamente i file nella directory dei dati, restano invisibili nell’interfaccia web finché non esegui una scansione:
sudo -E -u www-data php occ files:scan --all -vvIl manuale per amministratori indica esattamente questi casi per una nuova scansione: dopo avere copiato direttamente i file nella directory dei dati, dopo una migrazione e durante l’analisi di incoerenze nella cache dei file.
Quale soluzione sincronizza più rapidamente una libreria di grandi dimensioni?
Seafile, nei due casi più penalizzanti: decine di migliaia di file piccoli e modifiche ripetute a file di grandi dimensioni. Il meccanismo è la deduplicazione a livello di blocco. Di conseguenza, se cambia la parte centrale di un'immagine disco da 4 GB, vengono caricati solo pochi blocchi. Nextcloud riduce il divario sui file piccoli con il caricamento in blocco, ma non può colmare quello sui file grandi, perché la sua unità di trasferimento è il file completo.
Non basarti sulle mie stime della differenza e nemmeno su un benchmark del fornitore. Crea una libreria simile alla tua e misura i tempi:
mkdir -p ~/synctest && cd ~/synctest
for i in $(seq 1 20000); do head -c 4096 /dev/urandom > "file_$i.bin"; done
du -sh ~/synctestCopia quella directory in una cartella sincronizzata su ciascun server e controlla quando il client completa l'operazione. L'affidabilità è importante quanto la velocità. Un client Seafile carica prima i blocchi e scrive per ultimo il commit che li referenzia. Se il caricamento viene interrotto, la libreria rimane quindi sul commit precedente, invece di lasciare un albero scritto solo parzialmente.
Cosa richiede ciascuna soluzione su un VPS di piccole dimensioni
La documentazione di Seafile richiede «almeno 2G di RAM e una CPU a 2 core (> 2GHz)». Nextcloud documenta invece la memoria per processo PHP: un minimo di 128 MB e 512 MB consigliati per processo. È necessario moltiplicare questi valori per il numero di worker, quindi aggiungere le risorse richieste dal database, dalla cache e dalla generazione delle anteprime. Di seguito sono riportati i valori iniziali che userei per un piccolo team. Sono valori di partenza, non misurazioni.
The data behind this chart
[
{
"label": "Seafile CE 13",
"start_ram_gb": 4,
"start_cpu_cores": 2,
"sql_databases": 3
},
{
"label": "Nextcloud 34",
"start_ram_gb": 4,
"start_cpu_cores": 2,
"sql_databases": 1
},
{
"label": "Syncthing 2",
"start_ram_gb": 1,
"start_cpu_cores": 1,
"sql_databases": 0
}
]Entrambe rientrano nella stessa classe: 4 GB di RAM e 2 core. La quantità di risorse non determina quindi la scelta tra le due. Syncthing funziona con 1 GB e 1 core. Questo è il motivo concreto per prenderlo in considerazione. Le differenze riguardano più i componenti coinvolti che la memoria richiesta. Seafile usa 3 database SQL, mentre Nextcloud ne usa 1. La distribuzione Docker predefinita di Seafile avvia il server, MariaDB, Memcached, SeaDoc e Caddy a partire dai file scaricati in precedenza:
mkdir /opt/seafile
cd /opt/seafile
wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml
nano .envIn .env imposta SEAFILE_SERVER_HOSTNAME, le password root e del database MySQL, l'account amministratore iniziale e JWT_PRIVATE_KEY. Il manuale richiede per questa chiave una stringa casuale di almeno 32 caratteri. La chiave viene letta al primo avvio, quindi generala prima di avviare lo stack:
openssl rand -base64 40
docker compose up -dIl primo avvio crea i tre database e l'utente amministratore. Le impostazioni equivalenti di Nextcloud, inclusi TLS e il reverse proxy, sono descritte nella guida a Nextcloud su un VPS con Docker, TLS e backup.
Come differiscono i backup?
Questo è l'aspetto che spesso viene sottovalutato e quello in cui i due prodotti differiscono maggiormente.
Per Seafile l'ordine è obbligatorio. Il manuale richiede di eseguire prima il backup di SQL e poi quello della directory dei dati, perché in questo modo ogni record del database ha un oggetto valido a cui fare riferimento e le librerie non si corrompono. Se si inverte l'ordine, una riga del database può puntare a un blocco che lo snapshot non ha acquisito.
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt ccnet_db > ccnet_db.sql
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt seafile_db > seafile_db.sql
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt seahub_db > seahub_db.sql
rsync -az /opt/seafile-data/seafile /backup/data/In quelle righe ci sono due dettagli importanti. Usa mariadb-dump, perché la serie di comandi mysql è deprecata nell'immagine MariaDB distribuita con Seafile. Rimuovi il flag -t da docker exec quando reindirizzi l'output verso un file, perché un TTY riscrive i caratteri di fine riga e danneggia il dump.
Le due parti vengono acquisite separatamente, quindi possono non essere più sincronizzate. Dopo ogni ripristino, verifica lo storage prima di considerarlo affidabile:
docker exec -it seafile bash
cd /opt/seafile/seafile-server-latest
./seaf-fsck.shQuando manca qualcosa, lo strumento identifica l'oggetto:
Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.
Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.Pianifica anche la garbage collection. La deduplicazione fa sì che i file e le librerie eliminati conservino i relativi blocchi finché non esegui ./seaf-gc.sh dalla stessa directory; l'esecuzione indica ciò che ha trovato, ad esempio GC finished. 507 blocks total, about 507 reachable blocks, 0 blocks can be removed.. Se la ometti per un anno, i backup continueranno a occupare spazio per dati che gli utenti hanno eliminato.
Nextcloud presenta lo stesso problema in due parti, ma in una forma diversa, perché la directory dei dati e il database devono descrivere lo stesso albero:
sudo -E -u www-data php occ maintenance:mode --on
rsync -Aavx /srv/nextcloud/ /backup/nextcloud-dirbkp/
mariadb-dump --single-transaction --default-character-set=utf8mb4 -u nextcloud -p"$DB_PASS" nextcloud > /backup/nextcloud-sqlbkp.bak
sudo -E -u www-data php occ maintenance:mode --offConserva la directory di configurazione, la directory dei dati, le eventuali app personalizzate e il tema, oltre a quel dump. Ripristina entrambe le parti riferite allo stesso momento. Se la directory dei dati è più recente del database, gli utenti vedono file che la cache dei file non conosce e occ files:scan --all la ripara. Se il database è più recente, le righe della cache puntano a file che non esistono più e occ files:cleanup rimuove le voci della cache prive di una corrispondenza nella tabella dello storage.
In entrambi i casi serve un programma di backup in grado di gestire molti file piccoli e di conservare la cronologia. È ciò che restic e BorgBackup fanno in modo diverso.
Client desktop e mobili
Seafile rilascia due applicazioni desktop. Il client di sincronizzazione mantiene una copia locale delle librerie selezionate. Il client Drive (SeaDrive) monta le librerie come unità virtuale e scarica i file al momento dell'accesso: su Windows usa l'API cloud files di Microsoft, su macOS la versione 3.0 è un'estensione di Finder e su Linux viene distribuito come AppImage dalla versione 3.0.12 e monta le librerie in ~/SeaDrive. Le librerie crittografate funzionano su tutte e tre le piattaforme desktop. Le applicazioni mobili servono per accedere ai file e non offrono altre funzioni.
Anche il client desktop di Nextcloud offre i file virtuali. Le applicazioni mobili includono inoltre il resto della piattaforma: calendario, contatti, Talk e note sono disponibili insieme all'accesso ai file. Se gli utenti lavorano principalmente da smartphone e hanno bisogno di più dei soli file, questa differenza incide concretamente sull'uso quotidiano.
Un aspetto di Seafile richiede una pianificazione specifica: la libreria è l'unità di condivisione, sincronizzazione, autorizzazioni e crittografia. Definisci la struttura delle librerie prima di caricare 500 GB in un'unica libreria, perché spostare un file tra librerie significa copiarlo ed eliminarlo, non rinominarlo. La cronologia del file, quindi, non viene trasferita.
Crittografia: cosa protegge realmente ciascuna soluzione
Le librerie cifrate di Seafile usano la cifratura lato client. La password non viene mai memorizzata sul server. Insieme alla libreria viene memorizzato un token derivato dalla password e dall'ID della libreria, in modo che il client possa verificare la password prima della sincronizzazione. La chiave del file viene cifrata con una chiave e un IV (vettore di inizializzazione) derivati dalla password tramite AES 256/CBC. I dati del file vengono quindi cifrati con quella chiave.
Leggete i limiti documentati, perché spesso vengono trascurati. Una libreria cifrata protegge soltanto il contenuto dei file. I nomi di cartelle e file non sono cifrati, così come non lo sono le dimensioni dei file e la cronologia delle modifiche. La consultazione di una libreria cifrata tramite browser web non offre cifratura end-to-end: inserite la password, il server la usa per decifrare la chiave del file e conserva la password in cache per un'ora. La documentazione specifica inoltre che una libreria cifrata non garantisce l'integrità, perché un amministratore del server può modificare parte del contenuto di un file senza che il client possa rilevarlo.
Nextcloud dispone di due funzionalità con nomi molto simili, ma con caratteristiche diverse. La cifratura lato server protegge i file a riposo, ma conserva le chiavi sullo stesso server. Protegge quindi i dati archiviati su storage esterno molto più di quanto protegga da un utente che dispone dell'accesso root al server. L'app di cifratura end-to-end protegge sul client le cartelle selezionate. Per progettazione, il server non può leggerle. Di conseguenza, neppure l'interfaccia web, la ricerca lato server e le anteprime possono accedere al contenuto di tali cartelle.
La cifratura di nessuno dei due prodotti sostituisce un backup cifrato. Cifrate il backup separatamente.
Calendari, contatti, suite office e piattaforma applicativa
Questo è un altro aspetto in cui le due soluzioni differiscono nettamente. Nextcloud include CalDAV (calendari tramite WebDAV) e CardDAV (contatti tramite WebDAV) nel core, integra Collabora o OnlyOffice per i documenti e dispone di un app store per tutte le altre funzioni. Seafile 13 include SeaDoc per i documenti collaborativi e le pagine wiki, e si ferma qui. Non offre né un calendario né una rubrica.
La piattaforma ha un costo, rappresentato dagli aggiornamenti. Ogni app installata è un ulteriore componente che può impedire un aggiornamento di Nextcloud o comportarsi in modo anomalo dopo l'aggiornamento. Di conseguenza, più funzioni dipendono da Nextcloud, più attentamente va pianificata la finestra di aggiornamento. Seafile offre meno possibilità di errore perché include meno funzioni. Va inoltre ricordato che è Seafile Professional, non la Community Edition, ad aggiungere la ricerca full text nei documenti e i permessi a livello di cartella con una licenza a pagamento. Verifica quindi che la funzione su cui fai affidamento sia inclusa nell'edizione che intendi utilizzare.
Il problema specifico per cui ciascuno è noto
Seafile non funziona quando il database e l'object store non sono più sincronizzati. Una libreria non si apre oppure alcuni file scompaiono, e seaf-fsck.sh mostra il blocco mancante. Non esiste un albero dei file da riparare manualmente: il ripristino richiede il dump del database e l'object store, ripristinati nell'ordine corretto. Testate una volta questo ripristino su una VPS separata, perché un backup che non è mai stato ripristinato è solo un'ipotesi.
Nextcloud non funziona quando la cache dei file e il disco non coincidono, di solito perché qualcosa ha scritto nella directory dei dati senza informare Nextcloud. Sul disco è presente un file che l'interfaccia web non elenca oppure una cartella ha una dimensione errata; occ files:scan risolve il problema. Gli altri due punti critici sono la velocità del protocollo con molti file di piccole dimensioni, che nessuna quantità di CPU può risolvere, e la memoria PHP: le anteprime di immagini e video di grandi dimensioni causano di solito il picco. Riservate quindi 512 MB per processo e generate le anteprime tramite un job pianificato invece che durante le richieste.
Nessuno dei due: Syncthing, se vuoi soltanto sincronizzare file
Se il requisito effettivo è avere una cartella replicata tra più macchine, entrambi i prodotti offrono più funzionalità di quelle necessarie. Syncthing non usa un server né account. Ogni dispositivo è un peer e un VPS diventa il peer che resta acceso quando il laptop entra in sospensione. Syncthing 2 è la versione attuale e i pacchetti provengono dal repository del progetto:
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthingEseguilo come utente normale, mai come root, in modo che i file creati abbiano permessi e proprietario corretti:
sudo systemctl enable --now syncthing@youruser
systemctl status syncthing@youruserL'interfaccia web è in ascolto su 127.0.0.1:8384 per impostazione predefinita. Non è quindi raggiungibile da Internet, che è l'impostazione corretta. Raggiungila tramite un tunnel SSH dal laptop:
ssh -L 8384:127.0.0.1:8384 youruser@your-serverQuindi apri http://127.0.0.1:8384 sul laptop. La sincronizzazione usa la porta 22000 tramite TCP e QUIC, mentre il rilevamento locale usa UDP 21027 e non funziona su Internet. Su un VPS, apri la porta 22000 e lascia chiusa l'interfaccia:
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udpRinunci a tutte le funzionalità server: niente link di condivisione per chi non esegue Syncthing, nessun browser web per i file, nessun account utente e nessun cestino lato server, a meno che tu non abiliti il versioning dei file per ogni cartella. Il problema più comune è il file di conflitto. Se modifichi lo stesso file su due dispositivi mentre non possono comunicare, viene creato un file associato con un nome simile a notes.sync-conflict-20260806-142233-ABCD1EF.md. Non viene visualizzato alcun avviso, quindi cerca periodicamente sync-conflict.
Se non vuoi una cartella sincronizzata, ma un bucket in cui le applicazioni possano scrivere, ti serve un altro strumento: consulta l'object storage compatibile con S3 self-hosted. Per una panoramica più ampia, il confronto tra le alternative self-hosted a Dropbox include anche le soluzioni che non sono state inserite in questo confronto.
La regola decisionale
- Scegli Seafile se l'obiettivo è sincronizzare molti dati: numerosi file, file di grandi dimensioni, più dispositivi e la disponibilità ad accettare un archivio dati leggibile soltanto da Seafile.
- Scegli Nextcloud se l'obiettivo è una piattaforma: calendari, contatti, documenti e link di condivisione, con file normali su disco che qualsiasi strumento di backup può leggere.
- Scegli Syncthing se l'obiettivo è una cartella replicata e nient'altro.
Scegli con attenzione, perché la migrazione tra Seafile e Nextcloud è il vero vincolo. Non esiste un convertitore. Devi sincronizzare tutti i dati su un client, caricarli sull'altro server e sostenere il costo in termini di banda e tempo, mentre la cronologia delle versioni e i link di condivisione restano sul server precedente. Dimensionare la soluzione scelta oggi per i prossimi tre anni costa meno che cambiare nel secondo anno.
FAQ
Seafile è più veloce di Nextcloud per sincronizzare librerie di grandi dimensioni?
Sì, nei due casi che generalmente causano più problemi, e per un motivo verificabile. Seafile suddivide i file in blocchi con una dimensione media di circa 8 MB e trasferisce soltanto i blocchi modificati. Una modifica all'interno di un file di grandi dimensioni trasferisce quindi pochi blocchi. L'unità di trasferimento di Nextcloud è il file intero. La stessa modifica richiede quindi il nuovo upload dell'intero file. Inoltre, molti file di piccole dimensioni richiedono almeno una richiesta WebDAV ciascuno. Per questo la relativa API di bulk upload raggruppa i file piccoli. Misura i tempi sul tuo VPS prima di decidere, perché CPU, disco e collegamento di rete incidono quanto il protocollo.
Posso eseguire il backup di Seafile eseguendo rsync sulla directory dei dati?
Solo insieme ai database e nell'ordine documentato. Il manuale di Seafile indica di eseguire prima il backup del database SQL e poi quello della directory dei dati. In questo modo ogni record del database fa riferimento a un oggetto presente nel backup. Il comando rsync -az /opt/seafile-data/seafile /backup/data/ copia conf, seafile-data e seahub-data, ma da solo non è ripristinabile. L'object store non contiene infatti un albero di file leggibile e il database ne costituisce l'indice. Dopo aver ripristinato entrambe le parti, esegui seaf-fsck.sh e verifica l'output prima di considerare il risultato valido.
Ho bisogno di Nextcloud se voglio soltanto sincronizzare file?
No. Nextcloud è una piattaforma. Calendario, contatti e app store consumano memoria e richiedono attività di aggiornamento anche se non li utilizzi. Per la semplice sincronizzazione dei file, Seafile è il prodotto più leggero e offre il protocollo più veloce. Syncthing è ancora più leggero, perché non richiede un componente server da eseguire. Scegli Nextcloud quando ti servono le applicazioni aggiuntive, non come scelta predefinita.
Una libreria Seafile cifrata nasconde i nomi dei file?
No. Una libreria cifrata cifra il contenuto dei file sul client e la password non raggiunge mai il server. Tuttavia, nomi delle cartelle, nomi dei file, dimensioni dei file e cronologia delle modifiche restano visibili sul server. Se apri una libreria cifrata nell'interfaccia web, la password viene inoltre inviata al server. Il server decifra la chiave del file e conserva la password in memoria per un'ora. Se anche i nomi sono sensibili, non utilizzare quella libreria nell'interfaccia web e cifra i dati a un altro livello.
Quanta RAM devo assegnare a Seafile o Nextcloud su un VPS?
Inizia con 4 GB e 2 core per una delle due soluzioni, se prevedi un numero ridotto di utenti. Monitora poi l'utilizzo della memoria durante la generazione delle anteprime e le ricerche. La documentazione di Seafile indica come requisito minimo 2 GB di RAM e una CPU con 2 core sopra 2 GHz. La documentazione di Nextcloud raccomanda 512 MB per processo PHP. Devi moltiplicare questo valore per il numero di worker prima di aggiungere il database e la cache. Syncthing funziona senza problemi con 1 GB.