Switched to Nextcloud

As readers may or may not know, some time ago the original developer of Owncloud and several others split off from Owncloud to form a new project, Nextcloud.

Nextcloud seems to have a lot of momentum now and it’s uncertain what the future is for Owncloud.

I needed to set up a new server and was uncertain about what to do for a long time. I prefer stability over anything else. But the version of Owncloud available with Debian Jessie is really outdated. And there is no Nextcloud available in the Jessie (the current stable release of Debian) repo (package repository).

So I decided to download the current release of Nextcloud (version 11) from their site and install it that way (i.e. from source rather than through the Debian package repo or other source).

While you may sometimes find that someone has created .deb packages to make the installation of something like Nextcloud seemingly easier, you should be wary when using any packages that are not part of the official repository. Very wary! Think potential major security and other issues. These are often packages that some person managed to build in their spare time and their committment to maintaining them and updating them may be minimal to non-existent.

Installing and configuring Nextcloud is pretty much the same as setting up Owncloud: You install Apache, MariaDB (or MySQL or other DB – last time I was using PostgreSQL) and a few necesary PHP libraries. You can also use Nginx instead of Apache but I really love Apache and it’s many features and high configurability.

You then uncompress the Nextcloud source and move it to the web directory and create a new database. Initially you must change the perms on the Nextcloud directory in order to run the setup. There is a sample script included in the instructions at Nextcloud.com that you run after the setup in order to properly set permissions on the Nextcloud directory for security.

For web caching since my instance is only for a few users I am using APCu.

When you log into Nextcloud as admin the first time it will warn you if something is amiss.

There are a number of plugins available for Nextcloud but mostly I only care about Files and Calendar. I notice there there are two video calling plugins available now. The gallery is included by default but I find it kind of lacking. I would much rather install a dedicated gallery app in the future (or write my own).

Since I was migrating from Owncloud to Nextcloud, before I started the switchover I logged into the web interface of Owncloud and downloaded an export of my calendar from the settings panel of the calendar web interface. I also made a complete backup of my Owncloud directory to be safe.

When you connect your desktop/laptop system to Nextcloud for the first time via the Nextcloud desktop sync client (available for Linux, Windows, and Mac) it will prompt for which directory to use. You can rename your local owncloud directory for example to “nextcloud” or just leave it the same. I just left mine named “owncloud” which is minimally easier to type than “nextcloud” and I’m just so used to it by now. The install dialog has a checkbox to “keep local files” which of course I did.

For connecting your Android devices, there is the Nextcloud sync client for files. For calendar I use the excellent app CalDAV-Sync by Marten Gajda which is well worth the $2.89 cost.

With CalDAV sync when you go into Android settings -> Accounts and add a new account there will be a new CalDAV option where you can set up the connection to your Nextcloud calendar.

I like to use Google Calendar and use a 2×3 calendar desktop widget which is very convenient.

For setting up Nextcloud calendar with the Mozilla Thunderbird e-mail client which uses the Lightning calendar plugin, you need to install the SOGo Connector plugin which allows you to add network calendars in Lighting using CalDAV or iCS formats.

It was important to go into Thunderbird’s security settings and delete old passwords for my old Owncloud server, which is using the same IP address as my new Nextcloud server.

It’s also important to go into Lightning (i.e. the calendar view of Thunderbird) and right-click in the calendars pane on the left and select “Reset Calendar Cache” before adding the new Nextcloud calendar.

I had to use a URL similar to the following for adding the calendar in Lightning:
https://abc.com/nextcloud/remote.php/dav/calendars/myusername/personal/

For Android via CalDAV-Sync I used the default address that is displayed in the Nextcloud calendar’s web interface settings panel, which is like:
https://abc.com/nextcloud/remote.php/dav/

If I can manage to find some time between studying for my two intensive CS courses I will post more detailed info on how to setup Nextcloud, but actually the instructions at Nextcloud.com are really good and you can search and find a few pages with good info as well, e.g. “nextcloud install debian jessie” (without the quotes).

Finally I will just add that Nextcloud is the way of the future. Self-hosting things is the way of the future, and freedom of software and freedom of your own information and your own privacy is the future.

Just make sure you know what you’re doing when you set a web server. If you have questions there are good IRC forums on the freenode network dedicated to different topics including for Nextcloud, Debian, and many other things.

When you install a system like Debian, you have the backing of literally hundreds of amazing people around the world dedicated to keeping the system stable and secure. You are relying an a large community that is one of the best in the world. And I don’t mean to belittle other distros either. There are many good choices.

One thing I did not do on this installation was run my web server in a container, but that certainly is something I’m thinking of doing, probably running it in an LXC container which can be managed with virt-manager or some other utility. There are also other options for running containerized deployments such as CoreOS and snap.

The way I set it up is kind of the plain vanilla way but it is a solid way. Most likely though I will put it in an LXC container for security reasons when I can find time.

Nextcloud. Love it!