My Experiences Working with Nextcloud

Cloud computing has become a staple of our connected lives. We now store and share data that’s being kept on servers far away from us. Cloud computing has many benefits such as remote backups of data, flexibility, and scalability. Organizations can host much of their infrastructure in the cloud which carries benefits such as business continuity in the event of a local disaster that would normall impair the organization’s ability to operate. The inherent nature of cloud computing, however, raises some potential concerns such as privacy. Storing sensitive data in cloud storage puts your data in the hands of the chosen cloud service provider. While this has its own benefits such as splitting the responsibilities of maintaining and securing the organization’s infrastructure, the exact degree of which depending on the cloud service model being used, it also means that an entity outside of the organization has some degree of control over the organization’s assets.

Nextcloud

Recently, I was introduced to Nextcloud; an open-source cloud platform designed to do many of the common tasks that cloud platforms are used for. On top of the typical data storage features it offers, it also offers mail services, chat/video communications, multimedia, calendar scheduling, and even its own Office Suite of tools similar to tools like LibreOffice and Microsoft office. I was surprised by how many features it had out of the box, but was even more surprised by the many apps it has available on its own app store. Apps for everything from file management, additional security, and apps for integrating sites such as Github into Nextcloud could be found in the app store. From my perspective, Nextcloud looked to be trying to do everything at once.

Unlike a typical cloud platform, Nextcloud is open-source. You can install it at home for no cost and reap most of the benefits of cloud platforms right from your home. Simply deploy Nextcloud on a host at your home and configure the router to point towards the Nextcloud host when connecting to your home’s public IP address and/or a domain name that you’re using from elsewhere. Alternately, you could rent out a server in a farm and deploy Nextcloud on it if you wanted to deploy Nextcloud in a remote environment like you would a typical cloud service. For a more customized instance of Nextcloud, you could go with Nextcloud’s Enterprise Edition which carries a subscription fee for usage. For general home lab usage, however, you would be fine with the regular free version.

Installation

There are several different ways to install Nextcloud. At minimum, Nextcloud requires three tools to operate: a web server like Apache2, a database such as MySQL, and PHP along with relevant packages. For my experience, I used an Ansible playbook in order to install and configure Nextcloud. While this playbook would configure most of the required tools and settings, it didn’t fully complete the installation and had some issues after the installation was completed by hand. In response, I set out to improve on the playbook to take out some of the extra work needed for Nextcloud to operate while fixing some of the post-installation issues. After some time, I was able to complete the playbook that would fully install Nextcloud while also making configuration changes and additions to improve the overall experience.

General Usage

Once Nextcloud was installed fully, I began testing its various features to see how they work. The file system was the first tool tested and it was simple to use. You could upload, download, view, rename, copy, move, or delete files right from Nextcloud’s web browser interface. The part that really caught my attention was the link share system. You could generate links that would allow anyone with the link to access the designated folder and resources on the Nextcloud server. You could customize these links to have specified permissions. For example, you could create a link that would allow users to view and download files in the specified folder, but they couldn’t upload or delete anything in the folder. You could even configure a folder as a File Drop folder. This works similarly to a service like DropBox where users would be able to upload files to a folder, but couldn’t do anything else. You could even set passwords and expiry dates on these links which impressed me given my background is in security.

On top of the link shares, you can also access Nextcloud resources through other methods. There’s an official Desktop Sync Client available for Windows, Mac, and Linux that allows you to create a sync folder on a desktop that’s synced with folders on the Nextcloud server. The two folders would act as a single folder; any changes made to one, such as adding or deleting a file, would be reflected on the other. You could even pick and choose what Nextcloud folders are part of the sync which was a good feature for me as my Nextcloud was being used to store some large .iso files that would take up too much space on the desktop.

You can also connect a host to a Nextcloud server through mounting a Nextcloud user’s folders to a different host, allowing quick access to the folders on Nextcloud from your current host.

The Talk tool allowed me to create conversations on Nextcloud that could be accessed by Nextcloud users and external users. Users could chat with text and/or organize video calls in a coversation. I was impressed by how easy it was to set up and use.

General Thoughts

Overall, I was quite impressed by Nextcloud and its many features. I’m still learning more about Nextcloud each day but my current impressino is overall positive. Being able to utilize most of the benfits of cloud platforms while deploying the actual server at home and having full control over it isn’t something I thought was possible beforehand. I’m looking forward to using Nextcloud more in the future.

4 Likes

I like Nextcloud, but I wish it was a bit simpler to administer. I have installed it in a VM from scratch, I have installed it using a pre built Turnkey LXC container, and I have installed using docker images. I even installed it in my AWS account, using a marketplace image. Regardless of how I install it, there always seems to be issues reported on the admin page that I have to track down, ranging from installing caching, to various php configuration changes, to figuring out why cron jobs aren’t running. I think it could have a better out of the box experience.

Yes there is some fine-tuning that needs to be done on a new installation. I suppose that settings such as opcache interned strings are going to vary based on what it’s installed on.

With that said, I’ve developed an Ansible playbook that installs Nextcloud while configuring some of those settings. You can take a look at it here if you want. GitHub - curtis-leblanc/nextcloud-ansible at general_improvements

But if it is containerized, there is no reason that it should need any fine tuning. That’s what irked me. I downloaded their AIO container and still had to tweak stuff.