🔗tl;dr

I'm using OpenCloud as a replacement for Google Drive. It's a near 1:1 replacement, with files stored on a computer in my house and Collabora for document editing. "We" and "us" below refer to the two users of this setup, myself and my wife Madeline.

🔗Files: How do they work?

There are lots of file management solutions. They mostly boil down to either systems like Google Drive where there's a central source of truth and you don't have your own copy locally, or systems like Dropbox where there's still a central source of truth but each client has their own copies and changes sync among the server and the clients. There are also some systems that don't have a central source of truth, but they're uncommon.

Since I was already using Google Drive's "one copy of everything on the server" model, I figured I'd probably stick with that. But I wanted to explore other options first.

🔗Syncthing

I started by exploring the syncing clients model and tried out Syncthing. It worked, but there isn't an official client for iOS and the recommended client — Möbius Sync — works okay but I didn't find myself actually wanting to use it. This is probably just an indication that syncing isn't the model I'm looking for more than anything being wrong with Möbius Sync.

🔗copyparty

I ran across copyparty and kind of loved the sheer cheek of trying to bundle so much functionality into a dependency-less python package. It is interesting and offers a lot of power user features, but it's not simple to use and so I went looking elsewhere.

🔗WhatCloud?

I'd seen Nextcloud and ownCloud in my research. How are those related again…? Oh, right. Looks like OpenCloud is a fork of ownCloud Infinite Scale (ocis), which is a rewrite of ownCloud — and Nextcloud is also a fork of ownCloud, made by ownCloud's own founder. Clear as mud.

OpenCloud doesn't require a database, instead using the file system itself as a sort of database by using extended file system attributes for metadata. The interface strongly resembles Google Drive, and so for familiarity reasons and ease of setup we went with OpenCloud.

🔗Hosting

I'd originally intended to keep the files (mostly PDFs) on my NAS and mount its Samba share in a place OpenCloud could read and write. Unfortunately, the ReadyNAS is so old (Debian 8) the versions of NFS and Samba it uses are too old to support extended attributes as used by OpenCloud, specifically because the names sometimes include colons :.

Because we only have about 20G of actual documents we'd want to store in OpenCloud, we actually just keep the data on the system that runs OpenCloud. I set up automated backups to the NAS via restic. OpenCloud itself is running in podman (like Docker) in a Fedora Server VM running in UTM on my M1 Mac Mini that's on the same network switch as the NAS. All of this was already running except the Fedora VM, so it wasn't quite as much setup as this makes it sound.

I can connect to it from anywhere using Tailscale. This is pretty great, and solves all of the reverse proxy port forwarding double-NAT workaround stuff I'd have to do myself.

🔗Document Editing

By default OpenCloud doesn't offer any sort of inline document editing beyond plain text files. If you configure it with Collabora, then you can edit Word docs and Excel spreadsheets directly in the browser in a pretty seamless way. Collabora's editing apps aren't as good as Google Docs or Microsoft 365 and feel a bit dated, but they get the job done and should work for us for anything that doesn't require sharing with other people.