I’ve been a reasonably happy and paying Dropbox customer for the past 5 years, and before that I used a free account that I’d amassed a decent amount of space on through their referral program. I say reasonably happy, because there have been some controversies in the past, enough that they have a whole wikipedia page dedicated to them. The last one was the final straw however as it once again reminded me that I have no control over the data I store with them, or really any cloud service.
In their latest controversy Dropbox restored files from as far back as 2011 that users (like myself) had deleted. I understand that this was a bug that was being fixed and that Dropbox generally deletes files within 60 days of a user deleting them, but it was still a reminder of that lack of user control. Additionally politics and changes in various government policies also affected my decision to store my data in the United States.
I considered trying to find a Dropbox equivalent that was hosted in Canada (is there even one?), but ultimately that would have had the same issues of user control over their own data. So I decided to try my hand at hosting my own ‘cloud’ service. I’d heard of ownCloud in the past (though misremembered their name, kept thinking ownDrive) and in researching ownCloud came across Nextcloud. Nextcloud is a fork of ownCloud with an identical feature set, but differing ideologies. Nextcloud was forked by the original creator of ownCloud, Frank Karlitschek, along with a number of ownCloud’s core contributors. I opted to go with Nextcloud because I could agree with the ideological reasons the founder and core contributors jumped ship for.
“The most important difference of Nextcloud compared to other solutions is its complete openness. We don’t require a contributor license agreement from contributors or partners,” Karlitschek said. “There will be no closed source code, and all the planning and development happens in the open. The Nextcloud team worked together for many years and is, in fact, the team that has built the technology in the first place”
Both ownCloud and Nextcloud offer good documentation and due to the extreme similarities between the two, both sets of documentation are helpful in troubleshooting problems. ownCloud however is by far the easiest to get running as they offer both easy to setup appliances as well as have packages in many popular Linux distributions such as Ubuntu, Fedora, RedHat, CentOS, and openSUSE.
Because of this I started with an ownCloud appliance to get an understanding of how the system worked and whether it would be a decent Dropbox replacement. One thing I’ll note about the ownCloud appliances is the fact they’ll display your administrator password at boot. I didn’t look into ways to disable this, but I didn’t like that at all and would never use that in production.
How does Nextcloud compare to Dropbox?
The biggest difference by far is the simplicity of Dropbox. With Dropbox (or similar services) you aren’t required to maintain, run, and secure your own server(s). All you have to focus on is access to the service, configuration within the service, and the desktop clients, something you also have to do with Nextcloud on top of maintaining, running, and securing your own server(s).
Of course, the counter to that simplicity is control as previously mentioned, with most cloud services you don’t have control over how your own data is handled. Some services like cloud backup can offer TNO (Trust No One) encryption, but you lose the ability to easily access and share that content in the way Nextcloud or Dropbox offer, so they don’t really apply in this situation.
My experience thus far with Nextcloud is reasonably good. It offers quick synchronization like Dropbox does, and if configured to do so can offer 2FA (2-Factor Authentication), password policies can be set, encryption at rest can be configured, files can be shared with users or groups, all the basics are there and easy to understand. And you can augment the core functionality with add on “apps” or modules.
The biggest downside of Nextcloud for me however is the way it handles thumbnail generation and previews with galleries. It generates the thumbnails on the fly as they’re requested, caching them as it does so, and I can see how this would make sense. If it weren’t so slow, and it’s really slow. It also consumes a lot of resources as it generates the thumbnails.
I’ve read that this is due to their choice to use GD over Imagick or Gmagick, and that their choice is based on security concerns with the alternatives, which is a valid concern. Regardless, it’s painfully slow if you have large directories full of images as I do. There are some methods of alleviating this by using cron jobs to pre-generate all the thumbnails ahead of time, however I’ve not yet configured this on my installation.
Another downside for Nextcloud is that the iOS app will cost you money. Mind you it’s just C$1.39, so it’s not a big deal but comparing to Dropbox there is a cost difference. On Android the Nextcloud app is free. For some it might be worth noting that neither the Nextcloud Android app nor iOS app has a build in text editor. You can however use the ownCloud iOS app to connect to Nextcloud installs, and it does have a built in text editor. I’m unsure if ownCloud applications will forever be able to connect to Nextcloud, so your mileage may vary on this one. I did not test the ownCloud Android app, but it also costs money.
The final downside really applies to both Nextcloud/ownCloud and Dropbox. It would be nice to limit the amount of cache the iOS/Android apps use. You can clear the cache, but it would be nice to set a limit and have it auto manage in a predictable way.
Aside from the extremely sluggish performance generating thumbnails, that research indicates is not due to the older hardware1 I have in use, I’m very happy with what Nextcloud offers and will continue to use it into the future. Since I started testing Nextcloud a month ago I’ve cancelled my Dropbox subscription and made the switch entirely. Hopefully I’ll continue to be this happy with Nextcloud into to the future.
In my next post I’ll outline how I set my Nextcloud server up, though their own documentation is pretty thorough there were some things I did differently that might help others out.
I’ve been running Nextcloud 11 in a Hyper-V container with 4 virtual cores and 2 GB of RAM, running Ubuntu 16.04 LTS with PHP7 and MariaDB 10. The underlying hardware is an old Intel i7-950 with 24 GB of RAM, I mainly use this machine for testing. ↩