So far my experience with Nextcloud has been that it is a pain in the arse to install, and once it's installed is slow as anything. Literally couldn't run it on my pi 3b, now got it up and running pretty nicely on a NUC but it's still not great. Have caching set up.
I have the notes app installed on my android phone and I can never used rich text editing because it gives timeout error.
This shouldn't be this complicated. All I want is to de-Google my documents and notes, and self-host my kanban. I don't really need the rest though it's nice to have the options.
Do people use alternatives? Am I doing something completely wrong? I set it up using nginx which I know is not supported, but the alternative using Docker AIO didn't allow me to use custom port easily.
I suspect nextcloud having performance issues with slow Disk IO. With rootless containers I had a much worse performance than rootfull. Also using MySQL Backend instead of SQLite did speedup the performance.
Nevertheless I have the same problems with nextcloud as you stated. Pretty much not as usable as I thought.
It's on a SATA drive, albeit hard drive not ssd and I'm using mariadb. Everybody seems to suggest I need a beefier server but as a developer myself, the functionality of the software doesn't seem to warrant anything more powerful.
Software config optimizations help a little bit but my biggest improvement was moving the DB to SSD. Spinning disks are great for capacity but not for DB performance. Random I/O is a big factor for them and those drives drop in performance so fast for that type of I/O due to physically spinning media.
I started out using Owncloud and later switched to Nextcloud once that fork was stable. For all my uses it has always needed beefy hardware to run well but I definitely have way more junk files in synced folders than I should & rarely clean things up.
Just want to say that I've been there. There was a time my Nextcloud install was incredibly slow. Fortunately (or unfortunately?), it is featureful enough and widely supported that once you figure this issue out, it is a nice service to keep running.
For me, adding Redis was essential. It doesn't really make sense to me why (nothing I do on Nextcloud is intensive or data heavy) but it has greatly improved the performance of my app.
My entire setup is a containerized Nextcloud, Nextcloud Cron, MariaDB (if I knew Postgres was an option, I would've chosen that), and Redis:
Pg has significantly better performance in a smaller self hosted environment. Notably because you're doing a balance of reading and writing, or mostly writing since data changes regularly. For large scale operations where reading data is the primary use, MariaDB/MySQL is faster.
The separate cron container made the most sense to me. Other variants "work" but imo are mostly workarounds to avoid setting up a real cronjob. Beyond this I have no real reason, nor can I vouch that is is more or less performant than others.
Yes, the mysqldump container is for easier restores. It's much easier to restore from a .sql file than a raw data dir that was copied while the DB was running ;) (speaking from experience...)
Nextcloud is not easy to setup, that´s right, but it is not this complicated. Use Postgres as database, it is faster than MySQL. Install Redis as Cache and configure PHP Cache too. This will speedup the most. I use nextcloud installed directly on the host, no docker. Another small guide is here for Postgres and Apache
If you create an account they'll give a pro license (limited to 3 users) for free. Or you can stick with the always free community edition which works great too.
I have nextcloud running on docker on a Raspberry Pi 4 and I'd say the performance is comparable to Onedrive web interface. If you're getting timeouts then something must be wrong with the setup, not the machine it's running on. Using Postgres instead of MySQL or using an SSD instead of HDD is not going to help your issue.
I'm my experience, nextcloud is quite I/O bound. The performance of your storage device will greatly affect nextcloud performance. But if you're already using SSD and the performance still bad, maybe there are other issues with your setup.
For me, speed isn't the only issue. Everything about nc seems to be cobbled together in the most inconvenient way possible. Updates have always been hit or miss for me - and if you choose to use dockerized versions, you might as well shoot yourself, everything is very slow, even as the only use having it running on a quite capable machine it feels sluggish (not slow, but uncomfortably delayed).
It's a glorified Dropbox clone, why do I need anything more than a rpi1 for that?
It's a PHP app inherited from owncloud so at some point you'll just have to accept it won't be as performant as apps written in compiled languages (and it also inherit owncloud's quirks and other annoyance related to its php-based deployment). But this weakness is actually a strength too, being a php app makes extending its functionality very easy, resulting in a lot of community-developed plugins. Basically a trade-off between performance and features + community plugins availability. If you value performance more and don't need anything beyond file sharing feature, there are plenty of other options right now.
Nextcloud is hard to install in manual way (even sometimes with Docker). As far I know, both Snap and Yunohost versions of Nextcloud are solid. I used Snap version on the cheapest Linode VPS, and it worked fine, especially when I doubled the SWAP to 1 GB. Now I use Yunohost version and I have only good time with it. It is super stable, fast and reliable. I used Nextcloud_ynh on HP 800 Mini G3 with i5-6500t and now on Asrock Mini PC with Ryzen 7 5700g. It is working just great.
If you don't want to use Nextcloud, you ca install Vikunja for kanban and tasks. For notes Hedgedoc can be great.
I have had issues with nextcloud breaking randomly every time ive tried it. The thing I wanted the most was the caldav/webdav to integrate with Gnome and Davx5 (and finally kill google calender), and to get that I tried Owncloud instead. The UI leaves a lot to be desired but if you only use the *dav functionality it works like a charm. It also has a mobile app for syncing and several extensions but I havent delved into them.
Nginx alone will not speed up Nextcloud. Use Postgres instead of MySQL and configure Redis and PHP Cache. This will speed up most.
And Nginx is not officially support, see here
I run Nextcloud, its responsive and has all my stuff in it. Notes, Calendar, Contacts, Kanboard, Photos, RSS reader, others.
You do need look at the setup, how many PHP processes are you running, how much memory does MySQL use.
My current setup is a a PHP vm, 6 cores and 8GB of memory and a MySQL vm that is 2 cores and 8GB memory. But I work for a SaaS provider and thats now we carve up our systems, a vm/instance for 1 job.
The way I sorted it was to run nextcloud for a week, then run ps aux on the host and see what the memory use of a php process is.
The 5th column is the memory use of a process, divide the number into the amount of memory you want PHP to use. The number from ps is bytes, so you will need to use some maths to make it all fit
in Debian running PHP-FPM in /etc/php/{{ php_version }}/fpm/pool.d/www.conf
edit or add the below lines with the settings you need
Pydio and Seafile are alternatives I've tried. Pydio was pretty fast too. I agree with you on Nextcloud, I want to like it but I inevitably start having issues and it's slow even after tuning. It just tries to do too much and shouldn't be that complex to spin up a file server.
To be honest I'm not interested in the file sharing side of nextcloud as I use Syncthing, I'm more interested in the utilities (eg notes, kanban) and the office capabilities. I want to replace gsuite
I guess you are doing something very wrong if you have such performance trouble all the time.
The Pi (up to 4) is known for bad disk I/O. Look into this area first.
I am running my nc on a weak old low power deskop CPU (and with real SATA harddisks) and only when I ask for long running jobs (like, create the previews and icons for 200 new photos) I can watch any slow responses at all.
I've also had nothing but troubles with NC. I tried the AIO option and while it was easier to setup, it was still slow on both a VPS and my local unRAID server. I find that if you're simply using it as a sync point for apps instead of regularly using the web portal, it's ok. Seafile is insanely fast. But it stores the data in chunks on the server which some do not like as it can complicate backups. I work around that by just backing up from one of my always on clients since the seadrive client mounts the chunks into usable format. That works great.
It runs quite nicely on my Pi 3 with Apache and no Docker. I only use cloud storage, but the rest seems to work fine if needed. Maybe switching to a supported configuration would help?
Go for the AllinOne (AIO) Installation!
Had huge performance issues first (Nextcloudpi Docker & normal Nextcloud Docker) and none with the current install.
You get a self servicing (updates/installation/etc.) docker install with backups and administration portal.
From the instructions it looked like anything other than the default ports is not supported in AIO. I want to host other sites on this server without much complication.
For Kanban I use wekan, because it has more features.
Nextcloud I host using snap, which I cannot 100% recommend because it sometimes has troubles upgrading to the latest version. Still, for me it causes less trouble than a manual install.
I am actually in a clinch with my nextcloud experience and found some different ways to handle this. My plans (tests looks good) is to simply use a small free nextcloud provider just to handle caldav/carddav/notes and stuff without all my data. Just enough to get everything synced.
For my data I plan to use ocis. It's a long year rewrite of owncloud getting rid of PHP and hassle. It's just a single binary. Docker support, too, but it needs some extra steps to initiate, unfortunately. But the experience is fast, modern, clean and simple. Without to much bloat.
I dont know about kanban but the other stuff can be achieved via webdav. All major webservers can do that or you just use filebrowser.org (a selfhosted webdav server with built-in user management).
Wdym nginx is not supported? It very much is. Nextcloud is a pain to set up but after fiddling with settings for a day or two you can get it working smoothly. In my experience there are no good alternatives to it.