Setting Up a Personal Cloud with Nextcloud: Is It Worth the Effort?

Date: 09/07/2025

“Should I install some software to make it easier to organize files on the server, share them, and access them from my phone?” I thought, and that’s when everything started to unfold! Even though my initial needs were modest, I decided to first take a look at Nextcloud—a personal cloud platform that not only replaces Dropbox but also does a bunch of other things, including document editing and even downloading torrents and videos from YouTube.

Initially, I considered more benign options like Dropbox or Google Drive. You can install one of these on a server to sync folders with a computer, and you can also access them on your phone if needed. However, these services offer limited free storage, and paying twice for storing the same files is not appealing—once to the VPS host where the data resides, and a second time for Dropbox. Besides, it’s always more satisfying to have your own solution, right?

The search showed that finding a solution that’s both simple and not entirely makeshift isn’t easy. However, in every discussion on this topic, there are always people who have set up ownCloud or Nextcloud and report smooth and reliable performance over many years. Even though I’m not a fan of all-in-one solutions, this sounded enticing enough to give them a try.

Both programs serve as platforms that can replace Dropbox by allowing file management and sharing. However, once plugins are installed, they start to resemble a compact operating system. They include email clients that aim to replace Gmail, collaborative editors similar to Google Docs, calendars with planners, notes, mind maps, and other mind-bending features.

ownCloud after installation
ownCloud after installation

ownCloud is not a new thing; “Hacker” wrote about it back in 2014. Nextcloud is more recent and is developing more actively: its first release was in 2016, and as of the writing of this article, it is on its twentieth version.

After thoroughly examining both, I found that Nextcloud can easily be considered a younger sibling to ownCloud—more a direct relative than a cousin. The similarities are apparent at every turn, even down to some interface elements and file names. It feels as if the creators of Nextcloud simply took the entire codebase from its predecessor and started upgrading it.

Both companies are based in Germany, which might suggest a more complex story involving a split among ownCloud’s employees. However, that’s beyond our knowledge. So let’s go with Nextcloud, as it’s the trendier option, and proceed with the installation.

Installation

A detailed guide for setting up Nextcloud on your server can be found in the official documentation, so we won’t reiterate it here. Instead, we’ll cover the main points to give you a sense of the scope of work involved and ensure you don’t miss any crucial steps if you decide to follow my path.

Here’s a general idea of what needs to be done.

  1. Download and Extract the Distribution. There are various installation methods, including packages for popular Linux distributions and a Docker container. However, how you initially get Nextcloud onto your server is not that critical (at least until the first update). I opted for the simplest method: just downloaded the archive and extracted it to the /var/www/ directory. Important: Ensure the file permissions are assigned to the www-data user (chown -R www-data nextcloud).

  2. Verify PHP and Required Dependencies are Installed. They are numerous enough to require installing something like Composer, but I simply installed packages for the required PHP version from the Ubuntu repository.

  3. Install MySQL or another supported database management system and follow the instructions to create a database user with the necessary permissions. You can skip configuring the DBMS for now, but if you plan to keep Nextcloud for the long term, it’s worth revisiting this later.

  4. Install and Configure a Web Server. You can use either Apache or nginx—configuration examples are available for both, and for nginx, which I chose, they are extremely detailed. You’ll need to adjust the server name, path to the directory, and possibly the php-fpm version. By the way, make sure you have php-fpm and php-mysql installed (or the driver of the database you’re using).

  5. Obtain an SSL Certificate. This is crucial; without HTTPS, not everything will function properly. A free Let’s Encrypt certificate will suffice, and Certbot can issue it and add it to the web server configuration with just a few commands.

When everything is ready, don’t rush to restart your server! As soon as you do, Nextcloud will start displaying the installer to the world, and anyone can use it to become the admin of your cloud instead of you 🙂 To prevent this, you can either complete the installation process via the command line or configure your web server to restrict unauthorized access. You can use authentication (the auth_basic directive) or set up a whitelist that only includes your IP address (using the allow <IP> and deny all directives).

To work with Nextcloud, you’ll need to set up a login and password for the admin account, and specify the database and its user credentials that you created. Basically, if you’ve ever installed WordPress or phpBB, you’ll definitely manage this without any trouble.

Interface and Applications

After navigating the intricate complexities of the command line, we finally emerge into the user-friendly realm of civilization. At first glance, everything looks quite modern.

Dashboard!

File manager with thumbnails!

Changelog!

App Store!

It’s more like a mock store because no money is exchanged here; everything is free.

Since the developers initially created this as a replacement for Dropbox, the file-sharing features are well-optimized: you can get an internal link, share it with another user, or generate a publicly accessible URL. In the latter case, the link will open a preview, but if you add /preview at the end of the URL, it will grant access to the actual file.

File Sharing
File Sharing

You can also set a password and specify an expiration time, after which the link will no longer work.

Time Limit
Time Limit

The app store definitely grabs your attention first. There are no fewer than 281 apps available. These include various viewers (for example, to view RAW images, ePub books, or GPX tracks), music players, galleries for viewing and publishing images, several types of task trackers and notes, a password manager, and other similar utilities.

For example, there’s an excellent diagram editor based on open-source code called Draw.io, which I previously wrote about in the WWW column. It’s installed with just a single click, and afterward, you can create, open, and edit diagram files effortlessly.

However, it’s unrealistic to expect that all apps will install with a single click and function perfectly, magically giving Nextcloud a wonderful new capability. The apps vary greatly—both in terms of quality and requirements.

For instance, there are times when something extra needs to be manually installed on the server as Nextcloud only serves as the frontend. This means you can’t simply install the Collabora collaborative document editor with a single click—a suitable server is required.

The same goes for email. The application with the straightforward name Mail is just the client side, and if you want to set up your own web-based email system and avoid relying on third-party POP3/SMTP/IMAP services, you’ll need to install, configure, and maintain the server yourself. The developers recommend using Mail-in-a-Box as the easiest option to set up.

Sometimes, applications require specific versions of PHP or Nextcloud, for example. Essentially, you can’t escape the fact that you’re now your own system administrator.

Torrents and youtube-dl

It’s hardly surprising nowadays for a torrent client to come with a web-based interface, but it’s always nice when managing downloaded files is a breeze. As for youtube-dl, the well-known tool for downloading videos from YouTube and many other platforms (including Twitter, TikTok, and even Pornhub), it doesn’t have a graphical user interface at all. Therefore, having the ability to open a page in a browser, enter a URL, and get the file is a great idea, especially when using a mobile device.

ocDownloader

The first thing I tried was the ocDownloader plugin, which can be found in the Tools section. After installing it, go to the settings section and look for the Additional Settings option at the bottom of the left sidebar. Here, you’ll find a section for ocDownloader, where you can choose which program to use for downloading files—cURL or aria2. The former is likely already installed on your system, but the latter will require a bit more setup. However, once you have aria2 installed, you’ll also be able to download torrents using the same method.

www

A brief guide on configuring aria2 can be found in the ocDownloader README.

To download a video from YouTube, you should select ocDownloader from the top panel in Nextcloud, go to the YouTube tab, paste the link, and if youtube-dl is installed and accessible to the www-data user, the download will start. However, the plugin only uses youtube-dl to retrieve a direct link to the video; the actual download is handled by whichever tool you have chosen. In practice, this means that not all sites supported by youtube-dl are available through this method.

The second issue I encountered was that youtube-dl only worked alongside cURL and not with aria2. I didn’t bother investigating the problem further—why struggle with a flawed plugin that has such limitations when I can use the standard youtube-dl with Transmission instead of aria2?

youtube-dl

If you dig around a bit, you’ll find that there are indeed web front-ends for youtube-dl. Most of them are forks of the same code with various modifications. The most advanced version I’ve come across is by user katznboyz1, which can be found here. The installation process is described in the README, but it mainly covers running a test instance using Gunicorn. For a more robust deployment, it’s better to use Gunicorn behind a web proxy, like nginx in my case. This is all well-documented, so there’s no need to repeat it here.

Once you’ve installed and set everything up, you get an easy-to-use web interface. From there, you can send videos for download, select options, view history, and even subscribe to a channel so that videos are downloaded periodically and saved to a specified folder.

I encountered some errors while running my script, and once, it inexplicably stopped completely when downloading a video from Twitter, so I’ve still got some debugging to do. There’s also a similar project called youtube-dl-api-server, which offers a RESTful API instead of a web frontend. It’s a good option if you plan to initiate video downloads through browser plugins or custom scripts, rather than through a web interface.

Transmission

There is supposedly a pre-existing Nextcloud app for Transmission, but much like with ocDownloader, I couldn’t get it to work. After some digging, I found that the author of the plugin didn’t bother to provide any settings or documentation, and actually recommends using a Docker container they created, which already includes both Nextcloud and Transmission.

For some purposes, this might work, but I decided to take a different approach. First, I installed and configured the Transmission daemon (you can read about how to do this on Ubuntu in the guide). Since it has its own web interface, there’s no need for Nextcloud plugins.

Transmission Web Interface
Transmission Web Interface

However, this brings up a question: how can we make Nextcloud recognize downloaded files? In fact, the whole reason I started this project was to ensure that files generated on the server by scripts could be easily accessed from my phone without exposing them to the entire internet.

Access to Files and Command Line Interface

It might not be obvious, but if you simply drop a file directly into the Nextcloud data directory at the file system level, Nextcloud won’t recognize it. The reason is straightforward—Nextcloud maintains its own database where it stores all metadata. What you see in a directory like /var/www/nextcloud/data/user/files is akin to attachments to emails without the emails themselves.

There are various ways to address this issue, but in any scenario, you must ensure that the folder, from which you want to access files in Nextcloud, is accessible to the user www-data—this includes write permissions, if necessary.

Now we need Nextcloud to recognize this folder. The easiest way to do this is by using the External storage support extension. Install and activate it, then proceed to configure it in the Administration section (not the Personal section, where it will also appear!).

Adding external storage
Adding external storage

Add a Local storage type and specify the path to the folder. If the permissions are set correctly, a green checkmark will appear on the left, and the folder will be displayed in the Files section.

External storage from Nextcloud
External storage from Nextcloud’s perspective

However, the Nextcloud developers themselves describe this method in their documentation as not particularly reliable. The folder will only be scanned when it is opened through the interface, and the scan depth is limited to just three levels.

That’s why it’s a great time to get familiar with the OCC tool. When you’re actively using Nextcloud, you’re bound to encounter it sooner or later.

info

The name of the utility, ownCloud Console, is derived from ownCloud, so the name has been retained from ownCloud.

OCC is a unified tool that allows you to perform many actions that are typically done through the Nextcloud web interface. It’s convenient for automation or executing from scripts when needed. The developer’s website provides detailed documentation on OCC.

Let’s focus on one command: files:scan. When executed, this command indexes the contents of Nextcloud folders and updates the database with information about new files. To use it, run the following command:

sudo -u www-data php occ files:scan --all

You can easily add this command to crontab to run every minute, for instance. The resulting load is minimal, and the method works flawlessly. With this approach, you don’t even have to configure External storage—just place the files in the same location where Nextcloud stores them.

However, if you find this solution lacking in elegance, you might want to try configuring the script nextcloud-inotifyscan. I personally couldn’t manage to set it up right off the bat.

Mobile and Desktop Applications

When discussing Nextcloud, it’s important to mention the mobile app component. The app is decent, but its features are quite basic, essentially serving as a counterpart to the Files section. It allows you to move files around, download them to your phone’s storage, share them, and send them to other applications. It also includes built-in viewers, including a PDF viewer, and a text editor.

I’m sorry, but the text you provided appears to be a reference to images, which I am unable to view or interpret. Please provide text content for translation or further assistance.

All the apps you install from the store will remain in the web version, and in my opinion, this is the main weakness of Nextcloud as an ecosystem. However, there’s nothing stopping you from accessing the web interface from your phone.

One feature that seems to be missing here and could have been included is integration with the phone’s operating system (I can only speak for iOS, as I haven’t had the chance to try the Android version). Unfortunately, Nextcloud didn’t show up as a section in the Files app, unlike Dropbox and Google Drive. It’s disappointing because I was expecting that kind of functionality.

Interestingly, ownCloud offers this feature and also includes an interface for Shortcuts, the iOS automation system. However, all of this is only available in the paid versions, which significantly detracts from its overall appeal.

What’s great is the ability to restrict access to the app and log in using the system’s built-in biometric features, like a fingerprint scanner or facial recognition.

There is also a program available for desktops (Windows, Linux, macOS). It synchronizes selected folders between the cloud and your hard drive and is similar to any standard client for similar services, with the small difference that you will need to specify your own server address.

Sync Configuration
Sync Configuration
Nextcloud Folder
Nextcloud Folder

Privacy and Security

Using Nextcloud to enhance data security against hacking is questionable at best, especially if you’re not prepared to implement additional protective measures. Primarily, it’s important to limit access through a VPN or another method and ensure all software is kept up-to-date.

Unfortunately, in practice, any access restrictions tend to clash with convenience, and tech support isn’t something you want to deal with once a year on your first day of vacation—especially if security is a priority for you. As a result, your server or one of your applications is more likely to get hacked much sooner than something like Gmail.

If the thought of Gmail collecting keywords from your emails to target advertisements makes you uneasy, then Nextcloud is definitely a way to alleviate that concern. However, it comes at the cost of some effort and the loss of various features.

If you’re worried about your data being handed over to any government… well, that’s not my place to teach you about! Nextcloud might or might not be one of the tools you use, but encryption should definitely be another.

Nextcloud doesn’t fully meet the most paranoid security requirements, especially if you plan to use the mobile app. Unlike the open-source Nextcloud server software, the source code for the mobile app isn’t publicly available. This means that, in theory, developers could collect usage data if they wanted to.

You should also reconsider one-click installs of various unofficial apps if you’re serious about privacy and security. The more enthusiast-created code you put on your server, especially code that hasn’t gone through any audits, the greater the chances of vulnerabilities and leaks.

Summary

Setting up a Nextcloud server is certainly something that appeals to a niche audience. If you’re planning to deploy such a setup, be prepared for the fact that its applications are mostly pale imitations of their commercial counterparts, falling short in terms of both convenience and functionality, and sometimes even reliability.

Besides enhancing privacy, there are other arguments in favor of Nextcloud and similar platforms. One of these is cost savings. For instance, I utilized the extra storage provided by my VPS hosting plan. But a server could also be set up at home, with connected drives or access to a NAS via the local network. This can significantly reduce the cost per gigabyte.

Lastly, if you’re like me—a personal automation enthusiast with a ton of scripts and workflows for various tasks—then you’ll probably realize on your own why all of this could be useful to you!

Related posts:
2023.07.29 — Invisible device. Penetrating into a local network with an 'undetectable' hacker gadget

Unauthorized access to someone else's device can be gained not only through a USB port, but also via an Ethernet connection - after all, Ethernet sockets…

Full article →
2022.01.13 — Bug in Laravel. Disassembling an exploit that allows RCE in a popular PHP framework

Bad news: the Ignition library shipped with the Laravel PHP web framework contains a vulnerability. The bug enables unauthorized users to execute arbitrary code. This article examines…

Full article →
2023.07.07 — VERY bad flash drive. BadUSB attack in detail

BadUSB attacks are efficient and deadly. This article explains how to deliver such an attack, describes in detail the preparation of a malicious flash drive required for it,…

Full article →
2022.06.03 — Challenge the Keemaker! How to bypass antiviruses and inject shellcode into KeePass memory

Recently, I was involved with a challenging pentesting project. Using the KeeThief utility from GhostPack, I tried to extract the master password for the open-source KeePass database…

Full article →
2023.07.07 — Evil Ethernet. BadUSB-ETH attack in detail

If you have a chance to plug a specially crafted device to a USB port of the target computer, you can completely intercept its traffic, collect cookies…

Full article →
2022.01.12 — First contact. Attacks against contactless cards

Contactless payment cards are very convenient: you just tap the terminal with your card, and a few seconds later, your phone rings indicating that…

Full article →
2023.02.21 — SIGMAlarity jump. How to use Sigma rules in Timesketch

Information security specialists use multiple tools to detect and track system events. In 2016, a new utility called Sigma appeared in their arsenal. Its numerous functions will…

Full article →
2022.02.09 — Dangerous developments: An overview of vulnerabilities in coding services

Development and workflow management tools represent an entire class of programs whose vulnerabilities and misconfigs can turn into a real trouble for a company using such software. For…

Full article →
2022.12.15 — What Challenges To Overcome with the Help of Automated e2e Testing?

This is an external third-party advertising publication. Every good developer will tell you that software development is a complex task. It's a tricky process requiring…

Full article →
2022.01.11 — Persistence cheatsheet. How to establish persistence on the target host and detect a compromise of your own system

Once you have got a shell on the target host, the first thing you have to do is make your presence in the system 'persistent'. In many real-life situations,…

Full article →