Seafile of Nextcloud: welke sync-oplossing kiezen?
Kies tussen Seafile en Nextcloud op basis van uw behoeften. Wij vergelijken de blokgebaseerde opslag van Seafile met het veelzijdige platform van Nextcloud voor uw data.
Seafile versus Nextcloud: het korte antwoord
Het verschil tussen Seafile en Nextcloud komt neer op één punt: wat een bestand is zodra het de server bereikt. Seafile splitst elk bestand in blokken en slaat deze op in een object store die alleen door Seafile kan worden gelezen; hierdoor is synchronisatie snel en wordt back-up een taak in twee delen. Nextcloud schrijft uw bestand als een gewoon bestand naar de schijf en beschouwt synchronisatie als slechts één functie van een platform dat ook agenda's, contacten, documenten en deellinks beheert. Maak uw keuze op basis van dit verschil, want de rest vloeit hieruit voort.
Sinds augustus 2026 bevindt Seafile zich in de 13.0-serie en Nextcloud in de 34-serie. Beide zijn volwassen producten en geen van beide zal zijn opslagmodel op korte termijn wijzigen.
Hoe Seafile uw bestanden opslaat
Seafile modelleert een bibliotheek op dezelfde wijze als git een repository modelleert. De beheerdershandleiding beschrijft het interne model als Repo, Commit, FS en Block, en merkt op dat een repo ook wel een bibliotheek wordt genoemd. Elk bestand wordt opgesplitst in blokken van variabele lengte door middel van content defined chunking (CDC, een algoritme dat blokgrenzen bepaalt op basis van de data zelf). De handleiding geeft een gemiddelde blokgrootte van ongeveer 8 MB aan. Blokken worden vernoemd naar hun inhoud; hierdoor delen twee versies van één groot bestand elk blok dat niet is gewijzigd, en delen twee bibliotheken eveneens identieke blokken.
De relationele database bevat slechts een kleine hoeveelheid metadata over de bibliotheken. Al het overige, oftewel de commits, de directory-objecten en de blokken, bevindt zich in de data-directory. In de Docker-layout die wordt gebruikt door de 12- en 13-series is dat /opt/seafile-data/seafile/seafile-data. Het uitvoeren van ls op die locatie levert geen bruikbare informatie op, omdat u daar directories vol hash-namen ziet en geen Invoices/2026/march.pdf.
Synchronisatie volgt hetzelfde model. De client vraagt de server wat er is gewijzigd, ontvangt een lijst met blok-hashes en haalt alleen de blokken op die hij nog niet bezit. Dit is de reden waarom Seafile efficiënt blijft bij een grote bibliotheek: het aantal overgedragen bytes is evenredig aan de blokken die zijn gewijzigd, niet aan de grootte van het bestand dat deze blokken bevat.
Hoe Nextcloud uw bestanden opslaat
Nextcloud plaatst het bestand op de schijf op de locatie die u verwacht. Het pad data/<username>/files/ weerspiegelt wat de gebruiker ziet in de webinterface. Een databasetabel, oc_filecache, weerspiegelt diezelfde boomstructuur met groottes, wijzigingstijden en etags, waarbij Nextcloud de tabel vertrouwt in plaats van de schijf.
De desktopclient communiceert via WebDAV (web distributed authoring and versioning) over HTTPS. Elk bestand kost ten minste één verzoek; daarom heeft Nextcloud een bulk-upload-API toegevoegd: de ontwikkelaarshandleiding legt uit dat het uploaden van veel kleine bestanden trager is dan mogelijk zou zijn omdat de netwerkbandbreedte niet volledig wordt benut, waardoor kleine bestanden worden gebundeld. Grote bestanden gaan in plaats daarvan via de chunking-API, en de standaard chunk-grootte van de desktopclient is 5 MiB (OWNCLOUD_CHUNK_SIZE is standaard 5242880 bytes).
Het voordeel van bestanden op de schijf is dat elk hulpmiddel waarover u al beschikt uw gegevens kan lezen. Het nadeel is dat Nextcloud wijzigingen die buiten zijn medeweten om worden aangebracht, niet opmerkt. Kopieert u bestanden rechtstreeks naar de datamap, dan blijven deze onzichtbaar in de webinterface totdat u een scan uitvoert:
sudo -E -u www-data php occ files:scan --all -vvDe beheerdershandleiding noemt precies deze gevallen voor een rescan: na het direct kopiëren van bestanden naar de datamap, na een migratie, en wanneer u inconsistenties in de bestandscache onderzoekt.
Welke synchroniseert een grote bibliotheek sneller?
Seafile, in de twee gevallen die voor vertraging zorgen: tienduizenden kleine bestanden en herhaaldelijke wijzigingen in grote bestanden. Het mechanisme is blokgebaseerde deduplicatie, waardoor een disk-image van 4 GB waarvan het midden is gewijzigd, slechts als enkele blokken wordt geüpload. Nextcloud verkleint het verschil bij kleine bestanden door middel van bulk-uploads, maar kan het gat bij grote bestanden niet dichten, omdat de overdrachtseenheid daar het volledige bestand is.
Vertrouw niet blindelings op mijn inschatting van het verschil, en vertrouw evenmin op benchmarks van leveranciers. Bouw een bibliotheek die lijkt op die van uzelf en meet de tijd:
mkdir -p ~/synctest && cd ~/synctest
for i in $(seq 1 20000); do head -c 4096 /dev/urandom > "file_$i.bin"; done
du -sh ~/synctestPlaats die map in een gesynchroniseerde folder op elke server en observeer wanneer de client klaar is. Betrouwbaarheid is net zo belangrijk als snelheid. Een Seafile-client uploadt eerst blokken en schrijft pas als laatste de commit die daarnaar verwijst; een onderbroken upload laat de bibliotheek dus achter op de vorige commit in plaats van in een half geschreven boomstructuur.
Wat elk systeem nodig heeft op een kleine VPS
De documentatie van Seafile vereist "minimaal 2G RAM en een 2-core CPU (> 2GHz)". Nextcloud specificeert het geheugengebruik per PHP-proces: minimaal 128 MB en aanbevolen 512 MB per proces. Dit vermenigvuldigt u met het aantal workers, waarna u het geheugen voor de database, cache en preview-generatie optelt. Hieronder staan de uitgangspunten die ik zou hanteren voor een klein team. Dit zijn startpunten, geen definitieve metingen.
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
}
]Beide vallen in dezelfde categorie, 4 GB RAM met 2 cores, dus de geheugenvoetafdruk is geen doorslaggevende factor. Syncthing draait op 1 GB met 1 core; dat is de eerlijke reden om dit te overwegen. De onderliggende componenten verschillen meer dan het geheugengebruik. Seafile onderhoudt 3 SQL-databases, terwijl Nextcloud er 1 gebruikt. De standaard Docker-implementatie van Seafile start de server, MariaDB, Memcached, SeaDoc en Caddy op basis van bestanden die u eerst downloadt:
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 .envStel in .env de SEAFILE_SERVER_HOSTNAME, de MySQL root- en databasewachtwoorden, het initiële beheerdersaccount en JWT_PRIVATE_KEY in. De handleiding vereist een willekeurige reeks van minimaal 32 tekens voor die sleutel. Deze wordt bij de eerste start ingelezen, dus genereer deze voordat u de stack opstart:
openssl rand -base64 40
docker compose up -dDe eerste start creëert de drie databases en de beheerder. De equivalente keuzes voor Nextcloud, inclusief TLS en reverse proxy, worden behandeld in de handleiding voor Nextcloud op een VPS met Docker, TLS en backups.
Hoe verschillen back-ups?
Dit is het aspect dat mensen vaak onderschatten, en het is het punt waarop de twee producten het meest van elkaar verschillen.
Voor Seafile is de volgorde niet optioneel. De regel in de handleiding is om eerst de SQL-database te back-uppen en daarna de datamap. Hierdoor heeft elk record in de database een geldig object waarnaar verwezen kan worden, waardoor de bibliotheken niet corrupt raken. Draait u dit om, dan kan een databaserij verwijzen naar een blok dat uw snapshot nooit heeft vastgelegd.
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/Let op twee details in die regels. Gebruik mariadb-dump, omdat de mysql-reeks commando's is verouderd in de MariaDB-image die Seafile meelevert. Laat de -t-vlag weg bij docker exec wanneer u de output naar een bestand omleidt; een TTY herschrijft namelijk regeleinden en beschadigt de dump.
De twee helften worden afzonderlijk vastgelegd, waardoor ze uit de pas kunnen lopen. Controleer na elk herstel de opslag voordat u deze vertrouwt:
docker exec -it seafile bash
cd /opt/seafile/seafile-server-latest
./seaf-fsck.shWanneer er iets ontbreekt, benoemt de tool het object:
Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.
Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.Houd ook rekening met garbage collection. Door deduplicatie blijven verwijderde bestanden en bibliotheken hun blokken behouden totdat u ./seaf-gc.sh uitvoert vanuit diezelfde map. De uitvoering rapporteert wat er is gevonden, zoals GC finished. 507 blocks total, about 507 reachable blocks, 0 blocks can be removed.. Slaat u dit een jaar over, dan blijven uw back-ups opslagruimte kosten voor data die uw gebruikers al hebben verwijderd.
Nextcloud heeft hetzelfde probleem met de twee onderdelen, maar in een andere vorm, omdat de datamap en de database exact dezelfde boomstructuur moeten beschrijven:
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 --offBewaar de config-map, de data-map, eventuele aangepaste apps en uw thema, plus de database-dump. Herstel beide helften vanaf hetzelfde moment. Als de datamap nieuwer is dan de database, zien gebruikers bestanden die de bestandscache niet kent, en occ files:scan --all herstelt dit. Als de database nieuwer is, verwijzen cacherijen naar bestanden die niet meer bestaan, en occ files:cleanup verwijdert cache-items die geen overeenkomstige vermelding hebben in de opslagtabel.
Hoe dan ook heeft u een back-upprogramma nodig dat overweg kan met veel kleine bestanden en dat een historie bijhoudt; dat is wat restic en BorgBackup anders doen.
Clients op desktop en mobiel
Seafile levert twee desktop-programma's. De synchronisatie-client houdt een lokale kopie bij van de bibliotheken die u selecteert. De Drive-client (SeaDrive) koppelt uw bibliotheken als een virtuele schijf en downloadt bestanden bij toegang: op Windows gebruikt het de cloud files API van Microsoft, op macOS is versie 3.0 een Finder-extensie, en op Linux wordt het sinds 3.0.12 geleverd als een AppImage en gekoppeld op ~/SeaDrive. Versleutelde bibliotheken werken op alle drie de desktop-platformen. De mobiele apps zijn bedoeld om bestanden te benaderen, en dat is hun enige doel.
De desktop-client van Nextcloud biedt ook virtuele bestanden, en de mobiele apps ondersteunen de rest van het platform, waardoor agenda, contacten, Talk en notities naast bestandstoegang beschikbaar zijn. Als uw gebruikers veel op telefoons werken en meer willen dan alleen bestanden, is dat een wezenlijk verschil in het dagelijks gebruik.
Eén detail van Seafile vereist planning: de bibliotheek is de eenheid voor delen, synchroniseren, rechten en versleuteling. Bepaal uw bibliotheekstructuur voordat u 500 GB in één bibliotheek plaatst, want een verplaatsing tussen bibliotheken is een kopieer- en verwijderactie, geen naamswijziging, waardoor de geschiedenis van het bestand niet wordt meegekopieerd.
Encryptie: wat elk onderdeel daadwerkelijk beschermt
De versleutelde bibliotheken van Seafile werken aan de clientzijde. Het wachtwoord wordt nooit op de server opgeslagen. Een magic token, afgeleid van het wachtwoord en de bibliotheek-id, wordt bij de bibliotheek bewaard zodat een client het wachtwoord kan verifiëren voordat de synchronisatie start. De bestandssleutel wordt versleuteld met een sleutel en IV (initialisation vector) die via AES 256/CBC uit uw wachtwoord zijn afgeleid, en de bestandsgegevens worden vervolgens met die bestandssleutel versleuteld.
Lees de gedocumenteerde beperkingen, aangezien deze vaak over het hoofd worden gezien. Een versleutelde bibliotheek versleutelt alleen de inhoud van bestanden. Map- en bestandsnamen worden niet versleuteld, evenmin als bestandsgroottes of de bewerkingsgeschiedenis. Het browsen door een versleutelde bibliotheek in een webbrowser is niet end-to-end: u voert het wachtwoord in, de server gebruikt dit om de bestandssleutel te ontsleutelen en slaat het wachtwoord gedurende één uur op in het geheugen. De handleiding stelt ook duidelijk dat een versleutelde bibliotheek geen integriteit garandeert, omdat een serverbeheerder een deel van de bestandsinhoud kan wijzigen zonder dat de client dit kan detecteren.
Nextcloud beschikt over twee functies met verwarrend vergelijkbare namen. Server side encryption versleutelt bestanden in rust (at rest), maar bewaart de sleutels op dezelfde server. Dit beschermt gegevens op externe opslag aanzienlijk beter dan dat het u beschermt tegen iemand met root-toegang op de server. De end to end encryption app versleutelt geselecteerde mappen op de client. Het ontwerp voorziet erin dat de server deze niet kan lezen, waardoor de webinterface, server-side zoekfuncties en voorbeelden geen toegang hebben tot de inhoud van die mappen.
De encryptie van beide producten vervangt geen versleutelde back-up. Versleutel de back-up afzonderlijk.
Agenda's, contacten, kantoor en het applicatieplatform
Deze as is niet vergelijkbaar. Nextcloud levert CalDAV (agenda via WebDAV) en CardDAV (contacten via WebDAV) standaard mee, integreert Collabora of OnlyOffice voor documenten en beschikt over een app store voor alle overige functionaliteit. Seafile 13 levert SeaDoc voor gezamenlijke documenten en wiki-pagina's, maar daar houdt het op. Er is geen agenda en geen adresboek aanwezig.
Het platform heeft een prijs, en die prijs bestaat uit upgrades. Elke geïnstalleerde app is een extra factor die een Nextcloud-upgrade kan blokkeren of na afloop voor problemen kan zorgen. Hoe meer uw gebruikers afhankelijk zijn van deze apps, hoe zorgvuldiger u uw upgradevenster moet plannen. Seafile heeft minder onderdelen die kapot kunnen gaan omdat het minder functionaliteit biedt. Let er ook op dat Seafile Professional, en niet de Community Edition, de versie is die volledige tekstzoekopdrachten in documenten en rechten op mapniveau toevoegt onder een betaalde licentie. Controleer daarom of de functie waar u op rekent aanwezig is in de editie die u van plan bent te draaien.
De faalwijze waar elk systeem om bekendstaat
Seafile faalt wanneer de database en de object store niet langer synchroon lopen. U ziet een bibliotheek die niet opent of bestanden die verdwijnen, en seaf-fsck.sh toont het ontbrekende blok. Er is geen bestandshiërarchie die handmatig kan worden hersteld; herstel vereist daarom uw database-dump en uw object store, die in de juiste volgorde moeten worden teruggezet. Test dit herstel eenmaal op een reserve-VPS, want een back-up die u nooit heeft teruggezet, is slechts een aanname.
Nextcloud faalt wanneer de file cache en de schijf niet overeenstemmen, meestal omdat er iets naar de data-directory is geschreven zonder Nextcloud hiervan op de hoogte te stellen. U ziet een bestand op schijf dat niet in de webinterface verschijnt, of een map waarvan de grootte onjuist is; occ files:scan biedt hiervoor de oplossing. De andere twee pijnpunten zijn de protocolsnelheid bij veel kleine bestanden, wat niet met extra CPU-kracht is op te lossen, en het PHP-geheugen: previews voor grote afbeeldingen en video's veroorzaken doorgaans pieken. Houd daarom 512 MB per proces aan en genereer previews via een geplande taak in plaats van tijdens verzoeken.
Geen van beide: Syncthing, als u alleen bestanden wilt synchroniseren
Als uw werkelijke behoefte het spiegelen van één map tussen machines is, zijn beide producten uitgebreider dan nodig. Syncthing heeft geen server en geen accounts. Elk apparaat is een peer, en een VPS fungeert als de peer die actief blijft wanneer uw laptop in de slaapstand staat. Syncthing 2 is de huidige lijn en de pakketten zijn afkomstig uit de eigen repository van het project:
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 syncthingVoer het uit als een normale gebruiker, nooit als root, zodat de bestanden die het schrijft de juiste eigendomsrechten hebben:
sudo systemctl enable --now syncthing@youruser
systemctl status syncthing@youruserDe webinterface bindt standaard aan 127.0.0.1:8384, waardoor deze niet bereikbaar is vanaf het internet; dit is de juiste standaardinstelling. Benader deze via een SSH-tunnel vanaf uw laptop:
ssh -L 8384:127.0.0.1:8384 youruser@your-serverOpen vervolgens http://127.0.0.1:8384 op de laptop. Syncthing zelf gebruikt poort 22000 via TCP en QUIC, en lokale detectie gebruikt UDP 21027, wat niet werkt via het internet. Open op een VPS poort 22000 en laat de interface gesloten:
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udpWat u inlevert, zijn alle serverfuncties: geen deellinks voor mensen die Syncthing niet gebruiken, geen webgebaseerde bestandsverkenner, geen gebruikersaccounts en geen prullenbak aan de serverzijde, tenzij u bestandsversiebeheer per map inschakelt. De klassieke verrassing is het conflictbestand. Bewerk één bestand op twee apparaten terwijl ze elkaar niet kunnen zien, en u krijgt een kopie met een naam zoals notes.sync-conflict-20260806-142233-ABCD1EF.md. Niets waarschuwt u hiervoor, dus zoek van tijd tot tijd naar sync-conflict.
Als u geen gesynchroniseerde map wilt, maar een bucket waar applicaties naar kunnen schrijven, dan is dat weer een ander type tool: zie self-hosted S3-compatibele objectopslag. Voor een breder overzicht behandelt het overzicht van self-hosted Dropbox-alternatieven wat niet in deze vergelijking is opgenomen.
De beslissingsregel
- Kies Seafile als de taak synchronisatie op schaal is: veel bestanden, grote bestanden, meerdere apparaten, en u accepteert een gegevensopslag die alleen door Seafile kan worden gelezen.
- Kies Nextcloud als de taak een platform is: agenda's, contacten, documenten en gedeelde links, met gewone bestanden op schijf die door elke back-uptool kunnen worden gelezen.
- Kies Syncthing als de taak enkel een gespiegelde map is en niets anders.
Kies nu zorgvuldig, want de migratie tussen Seafile en Nextcloud is de werkelijke lock-in. Er is geen converter. U synchroniseert alles naar een client, uploadt het naar de andere server en betaalt in bandbreedte en tijd, terwijl versiegeschiedenis en gedeelde links achterblijven. De huidige keuze afstemmen op de komende drie jaar is goedkoper dan overstappen in het tweede jaar.
FAQ
Is Seafile sneller dan Nextcloud voor het synchroniseren van grote bibliotheken?
Ja, in de twee gevallen die doorgaans voor problemen zorgen, en wel om een reden die u kunt verifiëren. Seafile splitst bestanden in blokken van gemiddeld 8 MB en verstuurt alleen de gewijzigde blokken; een bewerking in een groot bestand verplaatst dus slechts enkele blokken. De overdrachtseenheid van Nextcloud is het volledige bestand, waardoor dezelfde bewerking het hele bestand opnieuw uploadt. Daarnaast kost elk klein bestand minstens één WebDAV-verzoek, wat de reden is dat de bulk-upload-API kleine bestanden samenvoegt. Meet de tijd van beide op uw eigen VPS voordat u een keuze maakt, aangezien uw CPU, schijf en netwerkverbinding even zwaar wegen als het protocol.
Kan ik een back-up van Seafile maken door rsync uit te voeren op de datamap?
Alleen in combinatie met de databases, en in de gedocumenteerde volgorde. De handleiding van Seafile schrijft voor om eerst de SQL-back-up te maken en daarna de datamap, omdat elk database-record dan verwijst naar een object dat in de back-up bestaat. Het commando rsync -az /opt/seafile-data/seafile /backup/data/ kopieert conf, seafile-data en seahub-data, maar op zichzelf is dit niet te herstellen. De objectopslag bevat namelijk geen leesbare bestandsstructuur en de database fungeert als index. Voer na het herstellen van beide helften seaf-fsck.sh uit en lees de uitvoer voordat u het resultaat vertrouwt.
Heb ik Nextcloud nodig als ik alleen bestanden wil synchroniseren?
Nee. Nextcloud is een platform; de agenda, contacten en app store kosten u geheugen en onderhoud bij updates, ongeacht of u ze gebruikt of niet. Voor eenvoudige bestandssynchronisatie is Seafile het lichtere product met een sneller protocol, en Syncthing is nog lichter omdat er geen servercomponent hoeft te draaien. Kies voor Nextcloud wanneer u de extra applicaties wilt gebruiken, niet als standaardkeuze.
Verbergt een versleutelde Seafile-bibliotheek mijn bestandsnamen?
Nee. Een versleutelde bibliotheek versleutelt de bestandsinhoud op de client en het wachtwoord bereikt de server nooit, maar mapnamen, bestandsnamen, bestandsgroottes en de bewerkingsgeschiedenis blijven zichtbaar op de server. Het openen van een versleutelde bibliotheek in de webinterface verstuurt bovendien het wachtwoord naar de server, die de bestandssleutel ontsleutelt en het wachtwoord gedurende één uur in het geheugen houdt. Als de namen zelf gevoelig zijn, houd die bibliotheek dan buiten de webinterface en versleutel op een andere laag.
Hoeveel RAM moet ik toewijzen aan Seafile of Nextcloud op een VPS?
Begin bij 4 GB met 2 cores voor beide opties bij een klein aantal gebruikers, en monitor daarna het geheugen tijdens het genereren van previews en het indexeren van de zoekfunctie. De documentatie van Seafile stelt de ondergrens op 2 GB RAM en een 2-core CPU van boven de 2 GHz. Nextcloud adviseert 512 MB per PHP-proces, wat u vermenigvuldigt met het aantal workers voordat u de database en cache meerekent. Syncthing draait comfortabel in 1 GB.