I Really Want to Like Nextcloud
_Warning: PHP._
One of the most prominent applications that you will come up when looking in the self-hosted space is probably Nextcloud. Nextcloud touts itself as a file sharing service much like Dropbox or Google Drive, a series of productivity tools like calendars and contacts, an entire 365-like Office suite, and now even a chat platform. Trying very hard to advertise itself as a replacement to the Google Workplace or Microsoft's enterprise offerings for companies sceptical of the US and/or tech monopolies, Nextcloud is trying its hardest to be a smaller, friendlier alternative.
Naturally, being the self-hosting freak I am, I have been running Nextcloud probably since I first port forwarded my parents' router. I use it all the time for its file storage feature, and try to use its calendar and contact features as well. I really, really want to like Nextcloud, but it is such a mess. I can think of three major reasons why.
## Problem the First: Actually Installing It
Naturally, when running something, you want to have to install it. While I have not tried the newer options Nextcloud features on their website (prominently, this “AIO” setup that uses Docker), the main way I had to install it was manually. Being a PHP application (a **gigantic** red flag), the official documentation is extensive. Being extensive is both a blessing (depth for when things go wrong) and a curse (way too many things _can_ go wrong). Getting everything to work exactly as it should was what I remember as a gigantic pain, but eventually everything functions and I only run into sporadic issues caused by things like updates (I hate you, `php-fpm`).
I decided to create a second Nextcloud server for a reason I have since forgotten (besides one being attached to my real name and the other one being attached to froth.zone), and I did not want to install everything manually again. I decided to use one of the Linux community's punching bags since this was on an Ubuntu server, the community provided snap. Surprisingly enough, it largely _just worked_. I even was able to set up S3-backend storage as well as setting up the push. I would probably never install `snap` on something other than Ubuntu, but for something as complicated as Nextcloud where you would need to configure PHP, MySQL/MariaDB, Redis, and Apache manually, having it bundled all in one sandboxed package was fine. Maybe the Docker-backed AIO situation is even easier, I plan on never installing Nextcloud again.
### Addendum: Frozen Snaps
For some bizarre reason, the Nextcloud snap decides after about 24 hours to freeze. The logs have never provided anything worthwhile so to fix it I just set up a `cron` job to restart the snap (something that is thankfully easy) once a day.
## Problem Two: Performance and PHP
PHP is not a well-loved language among the “newer” generation of programmers. This reputation is, in my opinion, wholeheartedly deserved. Beyond being a pain to configure, it also seems to love to be as fast as a frozen snail. Maybe it is because it, like Synapse for Matrix, requires powerful hardware I frequently did not give it (my first Nextcloud instance ran on a dual core, 2GB RAM office computer from ~2005), but Nextcloud is just... _slow_. Uploading or downloading files just seems to take way longer than it should no matter what. Even the newer hardware I have given my first instance (hardware from the recent year of 2011) is still just _slow_.
If you decide to run Nextcloud yourself (and you probably should), make sure the hardware you use is high performance. If you use old or low performance hardware, you will not have a good time. Things like thumbnails will take an eternity, and file syncing even with the higher performance backend will not be anything close to “speedy”.
## 3: The “Jack of All Trades, Master of None” Problem
As stated in the intro, Nextcloud tries its hardest to support just about anything.
* Files? That was why it was originally made. Yep.
* Contacts? Calendars? Both.
* Photos? Yep.
* Email? Not a server but a client, yes.
* An RSS reader? Sure, why not?
* AI Assistants? Who knows, but it supports them.
* Podcast client syncing? Yes.
* PDF Viewing? Your browser can do that now, but so can Nextcloud.
* An Element web client for Matrix? Sure?
* Bookmark syncing? You bet.
* Polls? Absolutely.
While many of these are, by Nextcloud's open source nature, exclusively community supported projects, having so many little things will bring all sorts of quality inconsistencies and (in the next section) a problem of size. Most of these options are okay for what they do, but having many okay things together can rapidly just fall apart when compared with less all-in-one options. Sure, the convenience of having all of the things I mentioned and more is worth it for some, but the cost of said convenience is steep.
### 3.5 Problems: The Web Interface
In what is likely a deceptive experiment, I opened the Nextcloud Dashboard on my browsers. On both, it proceeded to grab somewhere between 20 and 30 **megabytes** of HTML, CSS, JavaScript and images. I am not the first person to write about this. Opening anything on a lower end client or using a lower end server feels like I am getting thrown back to the days of modems for something _self-hosted_.
## Conclusion
I will probably not stop using Nextcloud anytime soon. The “Files” feature alone is enough to make me want to keep using it, as I have yet to find something that could replace it. I also have not really bothered looking, because Nextcloud is good enough. Sure, it is not perfect, and it really bothers me, but I still recommend it for the Files functionality alone.
I will not pretend to be intelligent enough to know what if anything can be done to fix Nextcloud's problems. I think, though, that it can be largely fixed. If it ever would get fixed, it would be easy to recommend it for anyone who wants a more self-hosted alternative to the tech giants.
—
Part 82 of #100DaysToOffload
><>
Follow this blog on RSS or on the Fediverse, @[email protected]. Alternatively, follow the author, Sam Therapy, on the Fediverse or Bluesky.
Questions? Comments? Scroll down and leave a comment! (JavaScript required)