I run Nextcloud on a Pi 4 and it's a struggle to get acceptable performance out of it. The ecosystem is nice, but I would absolutely trade a few less plugin for a smoother file management experience.
I will definitely be checking out OCIS, assuming I find no reason for concern from a license / privacy / security scale.
Golang isn't an automatic guarantee of performance, and "microservices" has me pause in the context of a personal server, but it happens that most of the Golang-based applications I host tend to perform extremely well. This coming from someone who strongly dislikes the "simple is better than correct" design of golang.
I run nextcloud 20 on a i5-3470 CPU @ 3.20GHz (2c/4t) and for a small use case it works very well. The storage is a rotational (magnetic) hard drive (2TB, seagate barracuda, with zfs 0.8.something)
Maybe I hadn't been sufficiently clear: the hardware I mentioned is physical hardware, running at home.
No virtual OS or sharing the physical cpu with other tenants.
Cheap vps provider often do overselling on the bet that most customers won't be actually using the cpus in user-space 100% of the time (and that's often true). If your provider isn't doing anything nasty, you should be able to see "stolen time" (often indicated with 'st') in top/htop: that's when your vm wasn't actually scheduled on the real cpu.
- from what I see owncloud is now written in go whereas nextcloud is still PHP. That might give it a performance boost on a raspberry pi (it basically avoids all the overhead from reading and byte-compiling all the PHP files on every request)
There are things that you can do to speed up nextcloud though:
- look into php byte-code caching (opcache and stuff like that)
- make sure your database indexes are set up correctly: I can't remember where in the admin ui (I'm on the phone rn) but there's some sort of self-test/diagnostics page that will tell you about database indexes to create (and the SQL commands to run too, iirc)
- you can tell nextcloud to use a redis for caching too, that could give an additional performance boost
But yeah, again, the raspberry pi isn't really that good for this kind of things. For pretty much the same (total!) Price of a RPI and related accessories I'd get something like a Lenovo m93p tiny off eBay and slap an SSD into that. You'd get proper performance albeit with a higher tdp.
On a whim I tried the vps docker setup on the pi. Runs much smoother (seems like the db was the bottleneck but).
edit: Aaaaaaand now I can't login because I foolishly tried to setup webdav and nextcloud is adding 30 seconds to my login and it never actually cool downs. Why do I even bother.
Keep in mind that streaming video likely translates to a read-mostly and sequential-read workload for the underlying storage, and that's really an ideal use-case for storage (you can do stuff like file-system caching, stream buffering and file read-ahead).
Things like nextcloud/owncloud are a lot more random-io-bound, if you think about it.
I will definitely be checking out OCIS, assuming I find no reason for concern from a license / privacy / security scale.
Golang isn't an automatic guarantee of performance, and "microservices" has me pause in the context of a personal server, but it happens that most of the Golang-based applications I host tend to perform extremely well. This coming from someone who strongly dislikes the "simple is better than correct" design of golang.