I’ve been an ownCloud user for years, and I recently moved to using Nextcloud, which is based upon ownCloud. Both my wife and I use it to sync our calendars and contacts across all our devices, and also use it to sync our documents, music, pictures, and videos. It caters to my paranoid nature– the idea that all that information is being saved on my own in-house server instead of someone else’s greatly pleases me.

I’ve been on the snappy team for a little while now, and I still find one of the best ways to gain understanding about the system as well as prove out new functionality and find bugs is to simply create snaps. Snaps provide a particularly easy way to install software, and Nextcloud is a particularly complex system that requires a bit of work and knowledge to setup. Wouldn’t it be cool if you could install Nextcloud and it came all pre-configured and ready to go? Check this out:

$ sudo snap install nextcloud
120.87 MB / 120.87 MB [==================] 100.00 % 2.78 MB/s 
Name      Version     Rev Developer Notes
nextcloud 9.0.50snap2 5   canonical -

Visit localhost (or the device’s external IP) in your browser and you’ll see:

nextcloud login

Create an admin account by entering a desired username and password there, and you have a working Nextcloud installation. It’s using Apache, PHP 7, MySQL for the database, and redis for the cache, all installed and setup with a few keystrokes. It even includes mDNS for network discovery in case you installed it on a headless box. It’s also completely confined, so if (heaven forbid) Nextcloud was compromised, the attacker wouldn’t be able to walk all over your system.

There are, of course, limitations.

  • The target audience: this snap is really for those users who just want to get Nextcloud up and running with recommended settings. The side effect of getting all this preconfiguration and easy upgrades is that it’s not very customizable. If you’re wanting to run Nextcloud behind a load balancer connected to a MySQL cluster, you’re probably better off setting it up yourself.
  • HTTPS is not yet supported. I don’t recommend the use of this snap on production systems until it is. I’m working on on integrating Let’s Encrypt into the snap, but I want to make it as user-friendly as possible, which will take a little time. (Update: HTTPS support was added in 9.0.53snap2, released on 08/22/16.)
  • Overall still a work in progress, and probably has unknown rough edges.

I’m pleased with how far it’s come, but getting there wasn’t easy. In the following series of blog posts, I’d like to share some of the stumbling blocks I hit along the way (as well as how I solved them). I hope that doing so will help you snap up your complex system.

The next post in this series will discuss the web server.