Self-Hosted Cloud Storage: Tier, Don't Migrate

Nextcloud, Seafile, Syncthing, and File Browser get compared on feature tables as if they were substitutes. They answer different questions. This is the decision underneath: which model you need, what it costs to leave each one, why self-hosting is not encryption, and why replacing Google Drive wholesale is the wrong goal in the first place.

6 steps 21 min read 2026-08-21
Tools UsedSee full toolkit below →
Nextcloud
The server-sync default, and the only one of these that stores your files as ordinary files on disk
Seafile
Server-sync with a content-addressed block store; faster on large files, much harder to walk away from
Syncthing
The peer-to-peer model with no server at all, which is a different product than the other three
File Browser
A web UI over a directory, not sync; the right answer to a question people rarely realize they are asking
rclone
Client-side encryption and transport for the copies that leave your hardware

Most people arrive at this topic through the same door. Some story about an account getting flagged by an automated system, a decade of photos gone, an appeals process that is a form and a silence. Or just the accumulated sense that files sitting in someone else’s storage are being read by something, classified by something, and used to train something.

That instinct is sound. The usual conclusion drawn from it is not.

The conclusion almost every guide reaches is replace Google Drive. Stand up Nextcloud, pull a Takeout, move four hundred gigabytes, cancel the subscription. It is a satisfying story and it mostly does not survive contact with reality. The capacity gets expensive, the mobile clients are worse, sharing with people who will never install anything becomes a chore, and six months later there is a half-synced Nextcloud nobody opens and the photos are back on the phone’s default backup.

The move that works is smaller and less heroic:

Tip: You do not migrate. You tier. Decide which files should never have been on someone else’s hardware in the first place, put those somewhere you control, encrypt them client-side so it stops mattering who is holding the disk, and leave the bulk where it already works. The part that actually matters is usually gigabytes, not terabytes.

This guide is the decision layer, not an install walkthrough. The install for the server-sync case is already covered in detail in this site’s Proxmox guide, whose Step 8 builds Nextcloud in an LXC with a two-volume layout, tuned MariaDB and Redis, a locally-issued certificate, and the post-install warnings sweep every fresh install needs. This guide deliberately points there rather than repeating it.

What is not written up anywhere honestly is everything around that install. Which of these four things you actually need, what each one costs to leave, and the fact that moving files to your own box does not encrypt them.

Step 1

What You’re Actually Deciding

The word “control” gets used loosely here. It is worth separating, because it is three different questions with three different answers, and most people only notice the first one.

Control over your account. Can the thing holding your files take them away from you? With a hosted provider the honest answer is yes. An automated policy decision can take not just a file but the entire account and everything in it, and the recourse is thin. This is the one that gets people moving.

Control over your data. Can someone read what should not be read? This is a separate question and self-hosting answers it much less completely than people assume. Step 4 is entirely about this, because it is where the reasoning usually goes wrong.

Control over the software. Can the thing you depend on change under you? Not a hypothetical.

The fork is the evidence for the third one

In April 2016, Frank Karlitschek resigned from ownCloud, the project he had founded. His stated reason was not technical. It was governance, in his words: “Who owns the community? Who owns ownCloud itself? And what matters more, short term money or long term responsibility and growth?”

That June he announced Nextcloud, and the majority of ownCloud’s core contributors went with him. Within days, ownCloud Inc.’s US operation shut down entirely after its banks pulled its credit.

An entire self-hosting ecosystem reorganized itself around exactly the question this guide is about, one layer down. Not “is my provider scanning my files” but “who controls the thing I depend on.”

I was running ownCloud at the time, and the honest retrospective is that the case for self-hosting was weaker then than it is now. Home upload bandwidth was worse, the mobile clients were rough, and the reliability gap against a hosted provider was real and daily. What has changed since is less about the software than about the reasons. The software got good enough a while ago. The reasons got much stronger.

The bookend is recent and most comparison content has not caught up to it. ownCloud was acquired by Kiteworks, and in May 2026 Kiteworks stood up a formal Open Source Program Office under the ownCloud brand, retired the legacy Contributor License Agreement in favor of a DCO model, and relicensed Infinite Scale under Apache 2.0. That is a company answering Karlitschek’s governance question directly, ten years later. At the same time, community reports are that ownCloud’s app ecosystem has thinned since the acquisition as community developer interest moved elsewhere. Both halves are true and neither shows up on a feature table.

The lesson generalizes, and it is the one to carry into the rest of this guide: pick for the exit, not the feature list. Every project in this space can change hands, change license, change direction, or stop. The question that survives all of that is what it costs you to leave.

Step 2

Three Models, and Why the Comparison Lists Are Wrong

Search for self-hosted cloud storage and you get ranked lists. Nextcloud at one, Seafile at three, Syncthing at five, File Browser at eight, scored across a grid of features. The format implies these are substitutes and that the differences are matters of degree.

They are not substitutes. There are three fundamentally different models here, and picking the wrong model is a much more expensive mistake than picking the wrong app within a model.

Server-sync: Nextcloud, ownCloud, Seafile

A server holds the authoritative copy. Clients sync against it. Because there is a server, there is a web interface you can reach from a machine that has nothing installed, share links you can send to people who will never install anything, server-side versioning and trash, and mobile photo autoupload that works the way people expect.

You pay for that with a server: a thing that has to be maintained, patched, backed up, and kept off the public internet or properly defended on it.

Peer-to-peer: Syncthing and its relatives

No server. Devices discover each other and agree on the contents of a folder. It is elegant, it is genuinely private by construction, and for keeping your own machines in agreement it is lighter and lower-maintenance than anything in the previous category.

What you give up is not a feature or two, it is a category:

None of that makes it worse. It makes it a different product. Compared as a Google Drive replacement it looks deficient; understood as “keep my own devices in agreement with no server and no cloud,” it is the best thing here.

Web file manager: File Browser

Not sync at all. A web UI over a directory on a machine. Upload, download, rename, browse, share a link.

The honest use is “let me see and grab what is on this box without opening an SSH session.” It is very good at that. It gets installed by people expecting Dropbox, who then conclude that self-hosting is bad, when what actually happened is that they installed a file manager and expected a sync engine.

The question that picks your model

One question does most of the work:

Does a file need to be reachable by a person who is not you, on a device you do not control?

Yes: you need server-sync. That is what share links, a web UI, and server-side permissions are for, and nothing in the other two categories substitutes.

No, it is only ever your own devices: peer-to-peer is lighter, has no server to maintain or breach, and has essentially no lock-in.

Neither, you just want to look at what is on a machine: that is a file manager, and it is a thirty-second install rather than a project.

Pick the model first. The app argument only makes sense inside a model.

Step 3

Exit Cost Is the Question That Decides It

You are reading this because a provider’s policy turned out to be something you were subject to rather than something you chose. Apply the same test to the replacement. The useful question is not which has more features, it is: if I want out of this one too, what does that cost me?

This is where the real technical difference between these projects lives, and it is almost never what the comparisons focus on.

Nextcloud stores your files as files

Under Nextcloud’s data directory, your files are ordinary files in ordinary directories. You can walk in with rsync, copy everything out, and leave. No export step, no database, no tooling from the project itself.

This is Nextcloud’s single most underrated property and it is not marketed as a feature anywhere, because “we did not invent a storage format” does not sound like an achievement. In a category defined by lock-in it is the most important thing on the list.

One caveat that matters and connects to the next step: this stops being true if you enable server-side encryption. Turn that on and the on-disk files are no longer plain. It is one of several reasons that feature is more often a mistake than a win.

Seafile does not store your files as files

Seafile splits files into blocks, addresses them by content, and keeps a database that maps libraries and versions onto those blocks. The payoff is real and measurable in daily use: identical blocks are stored once, so duplicate content across a library costs nothing, and syncing a change to a large file moves only the changed blocks instead of the whole file. On big files it is genuinely faster than whole-file sync.

The cost is the exit. Your data on disk is a pile of content-addressed blocks and a database. Without Seafile and an intact database, it is not meaningfully recoverable by hand. Your backup strategy has to cover both, consistently, or you have a pile of blocks and no map.

There is a second-order consequence worth knowing before you commit: Community Edition has no automatic garbage collection. Because of deduplication, blocks belonging to deleted files are not removed when you delete the file. They sit in storage until you run garbage collection manually, which is an offline operation. Delete a large amount of data and watch the disk not go down, and this is why.

Seafile is a good piece of software. It is the right pick if fast delta sync on large files is the thing you actually need. Just make the trade knowingly, because it is exactly the kind of dependency you came here to get away from.

The other two

ownCloud Infinite Scale is a ground-up Go microservices rewrite with its own decomposed storage layout, now under Apache 2.0 with formal open-source governance. The governance story is arguably the healthiest it has been in a decade. The community app ecosystem is thinner than Nextcloud’s. It is a legitimate choice; it is just rarely the one that matches why a reader got here.

Syncthing’s exit cost is zero. There is no server format, because there is no server. Every device holds plain files in a plain directory. That is the flip side of everything it cannot do, and it is a real point in its favor.

File Browser’s exit cost is zero for the same reason. It is a viewer over a directory that already existed.

Important: Your exit cost is your real lock-in, and it is the one thing a feature comparison will never show you, because it is not a feature. It is the shape of the thing on disk.

Step 4

Self-Hosting Is Not Encryption

This is the step that corrects the premise most people arrive with, and it is the difference between a decision that holds up and one that just feels better.

Moving your files onto your own machine stops Google from scanning them. It does not encrypt anything. Those are separate problems and self-hosting only solves the first.

What Nextcloud’s encryption options actually do

Server-side encryption is the one people turn on because it is in the admin panel and sounds like the answer. Its actual properties:

So on a server you own, encrypting against a threat model where you own the server, it costs you your exit and buys you very little.

End-to-end encryption is real encryption and carries real costs. It is client-side only by design, which means the web interface cannot decrypt your files at all, sharing an encrypted folder requires key exchange between trusted devices, external sharing gets substantially harder, and collaborative editing is off the table. It protects file contents; it does not cover metadata. It is a deliberate trade, not a checkbox.

The part nobody mentions: whose disk is it

There is a distinction that self-hosting guides collapse constantly. Hardware in your house is a genuinely different claim from a virtual machine you rent. On a rented VPS the provider holds the physical disk, and on most hypervisors can snapshot memory. Self-hosting on rented infrastructure moves who you are trusting; it does not remove the trust.

That is fine, and plenty of things belong on a VPS. It just means “I self-host, therefore nobody can read my files” is not a sentence that follows.

What actually works

Encrypt on your machine, before the file leaves it, independent of where it is going. Then the destination stops being a security decision. Your Nextcloud, your VPS, a friend’s NAS, Google Drive: it does not matter who holds the ciphertext, which is the entire point.

This is the habit that makes tiering in Step 5 work, and it is worth being clear that it is a habit rather than a product. The tool follows the file class:

File class Tool Note
Archives you rarely open RAR or 7z with a password Universal, portable, nothing to maintain. Turn filename encryption on, see below.
Backup images The backup tool’s own encryption Most consumer backup software ships it. Do not double-wrap; you will regret it at restore time.
Offsite copies to object storage rclone crypt, or restic Covered properly in this site’s DocuSeal guide, which handles encrypt-before-upload to R2 and the restore-test discipline. Not repeated here.
A working vault you open daily VeraCrypt or similar Strong, but see the sync interaction below.

The finding: filenames leak at every layer

This one is worth internalizing because it is the same mistake repeating across four unrelated tools, and it is off by default in most of them:

A directory listing is frequently all an adversary needs. Filenames carry surnames, employers, case numbers, dates, diagnoses, account numbers. Encrypting the contents while publishing the index is a very common half-measure.

The interaction with sync, which decides your pairing

A monolithic encrypted container is hostile to file-level sync. One VeraCrypt volume or one large encrypted archive is, to the sync engine, a single enormous file. Change one byte inside it and Nextcloud re-uploads the entire thing, because Nextcloud syncs whole files.

This is one of the few places where Seafile’s block model wins outright: it moves only the changed blocks, so a large encrypted container is far less painful. Which means the encryption shape you choose and the sync engine you chose in Step 3 are not independent decisions.

The practical resolution for most people is per-file encryption rather than one big container, so that only the changed file moves. If you want the single-vault experience anyway, know that you are choosing to re-upload the vault on every change, and size it accordingly.

Warning: Wherever the key lives, it is not on the machine you are protecting against. A key sitting on the VPS whose disk you are worried about has bought you nothing. Password manager, second device, or paper, and rehearse the decrypt before you trust it. A backup you cannot decrypt is not a backup.

Step 5

Tiering in Practice

Here is the actual recommendation, and the reason the migration framing is a trap. Sort by two questions: what happens if this is read, and what happens if this is lost. They produce different answers and most people only ask the second.

Tier 1: never leaves hardware you own, and is encrypted by you regardless. Identity documents, tax and financial records, legal correspondence, medical records, credential exports, and anything containing someone else’s personal information that they gave you in confidence. The defining feature of this tier is that it is small. For most people it is single-digit gigabytes. It is also the only tier where the original worry actually applies with force.

Tier 2: self-hosted, not paranoid. Working documents, project files, notes, configuration, personal photos you would simply rather not have classified by somebody’s model. This is what a Nextcloud is genuinely for: your stuff, on your box, reachable from your phone, without a subscription and without a scanner. Encrypt selectively rather than universally, because encrypting this tier wholesale is what makes people abandon the setup.

Tier 3: leave it where it is. Bulk media, shared albums, anything going to people who will never install a client, anything where availability matters more than privacy. Hosted providers are extremely good at this and self-hosting it is a chore that buys nothing. This is also where the terabytes are.

The single most useful thing about this split is what it does to the size of the problem. Treating all three as one job makes self-hosting look like a four-hundred-gigabyte migration with a capacity bill attached. Separated, the part that actually addresses the concern is small enough to do in an evening.

Where it lands

For Tier 2, the build is already written: Proxmox guide, Step 8. Container with a separate data volume, MariaDB and Redis, a certificate from a local CA so internal names get real HTTPS, and the warnings sweep. Nothing in this guide changes that build.

For Tier 1, the storage does not need to be an application at all. A directory on a machine you own, holding encrypted files, backed up, is sufficient and has the lowest possible exit cost. Adding a sync engine to your most sensitive tier adds attack surface to the tier that least wants it.

File Browser fits here, and it is not a tier. It is the utility you put on a box so you can see and pull files off it from a browser without an SSH session. It belongs on a host you already run, on your internal network or tailnet, and it does not belong on the public internet.

For reaching any of it from outside the house, this guide family’s consistent answer is an overlay network rather than published ports. Files are the easiest case to accept that for, because unlike a webhook endpoint or a client portal, there is no public that needs to reach your files. Names and internal certificates for all of this are covered in the local DNS and reverse proxy guide.

Important: Tiering is not a backup strategy, and the two get confused. A Tier 1 file on hardware you own with no backup is in a worse position than it was on Google Drive, because now the single point of failure is a drive in your house and nobody else is keeping a copy. The DocuSeal guide covers encrypted offsite backup properly, and the Proxmox guide covers Proxmox Backup Server for the container itself. Do one of them before you move anything you care about.

Step 6

If You Do Want Out Entirely

Important: Provenance, stated plainly. I did not do a full migration. I run Nextcloud as an alternative destination for the files that should not have been in a hosted service, not as a replacement for one, which is the entire argument of this guide. This step is researched rather than lived. Treat it as a map of the wall, not a trip report.

Some readers will want the full exit anyway, and there is a specific, well-documented place where it goes wrong. It is worth knowing about before you start rather than after.

Drive files are mostly fine. Ordinary files come back as ordinary files. The catch is native Google formats. Docs, Sheets, and Slides do not exist as files; they are exported through a conversion on the way out, and that conversion is lossy for anything with real formatting, embedded objects, or complex spreadsheet features. Check a few important ones by hand rather than assuming.

Photos is where it hurts, and this is the part that surprises people:

Import that raw into any photo application and the result is predictable and demoralizing: a decade of photos all dated the day you extracted them, sorted into one enormous pile, with the albums gone.

The fix direction is to reconcile the sidecars into the images’ own EXIF before importing anything. exiftool is the standard instrument for this and there are several purpose-built wrappers around it. The discipline that matters more than the tool choice:

The sidecar reconciliation is a genuinely good task to hand off, because the rules are fiddly, mechanical, and well documented. It is exactly the kind of problem where the difficulty is in the edge cases rather than the concept.

  • Write the reconciliation script. Give it the actual directory listing from your extraction, including examples of both sidecar naming patterns and a few files that have no sidecar. Ask for the matching logic to be explicit about which case each file fell into, and to write a report rather than only mutating files.
  • Ask for the dry-run first. A pass that reports what it would change, how many files matched by each naming pattern, and how many matched nothing at all. The count of unmatched files is the number that tells you whether the run is trustworthy.
  • Have it write the verification separately. A second script that samples files at random after the run and prints the resulting EXIF date next to the sidecar's claimed date, so you are checking the output rather than trusting the process.
  • The Google Docs conversion audit. Point it at the export and ask which files came from native Google formats and therefore went through a lossy conversion, so you know the short list to check by hand.

What This Guide Deliberately Leaves Out

On provenance: Steps 1 through 5 come from a Nextcloud running in production on the Proxmox build linked above, from ownCloud use that predates the 2016 fork, and from a long-standing habit of encrypting before upload regardless of destination. Step 6 is researched rather than run, and says so. The ownCloud and Seafile positions in Steps 2 and 3 are structural comparisons drawn from their documentation and licensing, not from running either at current versions.

Toolkit Reference

The four models this guide compares, the encryption layer that sits across all of them, and the places an AI assistant is genuinely worth using.

The Options

Nextcloud
Server-sync, and the default recommendation for Tier 2. Stores your files as ordinary files on disk, which is the lowest exit cost of anything in its category. The build is in this site's Proxmox guide, Step 8.
Seafile
Server-sync over a content-addressed block store. Deduplication and fast delta sync on large files; in exchange your data is not recoverable without Seafile and an intact database, and Community Edition needs garbage collection run by hand.
ownCloud Infinite Scale
The Go microservices rewrite, relicensed Apache 2.0 in 2026 alongside a formal Open Source Program Office. Healthy governance, thinner community app ecosystem since the Kiteworks acquisition.
Syncthing
Peer-to-peer, no server, essentially zero lock-in. No web access, no share links, and nothing moves unless two devices are on at once. A different product, not a lesser one.
File Browser
A web UI over a directory. The right answer to "let me grab a file off that box without an SSH session," and the wrong answer to anything involving the word sync.

The Encryption Layer

rclone crypt and restic
Client-side encryption for copies headed to object storage. Both handle filename encryption; both need the key stored off the machine being protected. The DocuSeal guide covers this path end to end including restore testing.
VeraCrypt
Container-based encryption for a working vault. Strong, and hostile to file-level sync, since any change re-uploads the whole container on a whole-file sync engine like Nextcloud.
Archive encryption (RAR, 7z)
The simplest durable option for files you rarely open. Filename encryption is a separate option in both and it is not on by default, which is the single most common mistake in this whole area.
exiftool
The instrument for reconciling Google Takeout's JSON sidecars back into photo EXIF before import. Work on a copy.

Where AI Earns Its Keep

Sorting your own files into tiers
Give it a directory tree with no file contents and ask it to propose a tier for each branch and justify the sensitive ones. Good at spotting the folder you forgot had tax documents in it.
Arguing the model choice against you
Describe how you actually work, then ask it to make the strongest case for peer-to-peer over server-sync in your specific situation. If the case is strong you have saved yourself a server.
Takeout sidecar reconciliation
Fiddly, mechanical, and well documented, which is the ideal profile. Insist on a dry run that reports unmatched files before anything is written.
Encryption tooling per file class
Feed it the table from Step 4 and your real workflow, and have it flag where a monolithic container would fight your sync engine.
Restore rehearsal scripts
The decrypt-and-verify path is the one nobody tests. Have it write the rehearsal, not just the backup.