Nextcloud: Performance, Burst-Mode Photos, and Preview Generation

I don't remember where this photo was taken; I had to pick one from my Nextcloud gallery quickly because it was pegging a CPU core on my laptop leaving it open.

I've been using Nextcloud for quite some time, starting as a replacement for Google Photos, but it has some performance limitations. Several major version bumps have promised - but none have delivered - real-world performance improvements. When Nextcloud 24 was released in May, it promised a new approach - streaming files to a separate container dedicated to preview generation. And written in Go! Surely this, right?

The server tuning guide provides a very quick and easy way to get started. I added the imaginary container to my docker-compose.yml, added the configuration lines to config.php for Nextcloud, restarted - and, well, it did seem to be doing something. CPU was clearly being consumed by the imaginary container, and perhaps it was a fresh restart or perhaps it was the placebo effect, but navigating to the Photos tab in the Nextcloud WUI did seem to stream in previews faster. Not only that, but imaginary supports more formats than Nextcloud's preview generation app - and I wouldn't have to bother with the clunky preview generation cron any more.

Unfortunately, the longer I used this integration, the more its shortcomings became obvious. Back in December, we got our first appreciable snow accumulation here on the Oregon coast for the first time since I moved here in October of 2020. I have a strong dislike for winter weather, but even I can admit it's a little bit fun to take your dog out into the back yard - especially your LA born-and-raised dog who hasn't had much experience in snow - and play in the first big snowfall of a season. So I took a lot of photos and videos of that snowfall, including, apparently critically, several action-shots using my phone camera's burst and slow-motion modes.

Nextcloud, unfortunately, sees each of these as a separate file; which makes a reasonable amount of sense, but the Photos view then has to hammer all these photos at once into imaginary. It seemed like too many similar files at once was too much for the service - without throwing any useful error messages, if I ever tried to scroll past December in my Photos view on either Nextcloud's WUI, the Nextcloud Android app, or the Nextcloud Yaga gallery-specific Android app, the page would stop loading - no more files were listed, let alone previews loaded.

I've given up in two different ways on this front today; first, I deleted those slow-motion and burst-mode shots - I never looked at them again anyway, they didn't turn out very well in the first place - so they can't choke up the preview generator. And since I never saw any real-world performance differences between Preview Generator and Imaginary, I've reverted to the original. Unfortunately, Nextcloud just remains a very useful background/backup application, with incredibly useful ancillary services like Nextcloud Talk, Nextcloud Notes to replace Google Keep, the calendar synchronization, and a pretty decent interface for creating Google Docs-like shared documents - all of which I can hopefully use with the minimal amount of interacting with the actual dog-slow web interface.

One last thing to say on this topic, I noticed recently that Nextcloud Notes doesn't seem to have a great way to actually share individual note files, unless the recipient sets their default folder for accepted shares Nextcloud-wide to their Notes directory. I really hope either Nextcloud or the Notes app fixes this soon, because I realized after over a year of using Notes for household notekeeping that my partner wasn't seeing any of the notes I'd shared with her, because they were stuck in her Nextcloud root directory as shares and not picked up by the Notes app on her phone - aside from the one shared grocery list Note that I apparently set up manually when I first set up our Nextcloud apps. Frustrating.

Jordan Cooks

Jordan Cooks

Jordan listens to too many podcasts, has too many streaming subscriptions, loves dogs, is the Integration Engineer Team Lead at Bitwarden, and makes a mean vegan baked mac and cheeze.
North Bend, OR