Self-hosting Nextcloud properly, the gotchas nobody warns about

Nextcloud is the most-installed self-hosted file sync, calendar, contacts, and groupware platform. It is also the most-troubled-to-properly-deploy. The official documentation is comprehensive but assumes you understand its architecture. The community guides vary wildly in quality. The result is that many people set up Nextcloud, encounter performance or maintenance issues, and conclude that self-hosting is not for them.

This guide walks through a Nextcloud setup that actually performs well in production, with the parts other guides skip.

What Nextcloud is

Nextcloud is the open-source successor to ownCloud, forked in 2016. The product covers file sync (similar to Dropbox or Google Drive), calendar, contacts, tasks, and a growing list of collaboration features (Talk for video calls, Office for documents, Notes, etc.).

The architecture is PHP web application running on top of a database (MySQL, MariaDB, or PostgreSQL) with a web server (Apache or nginx). Files are stored on the underlying filesystem.

The product runs on Linux. Container deployments via Docker and the official Nextcloud All-in-One (AIO) image are the recommended approach for new installations.

What Nextcloud is good for

File sync across devices. Desktop clients for Windows, macOS, Linux. Mobile apps for iOS and Android. The sync works reliably for typical use cases.

Calendar and contacts via CalDAV and CardDAV. Standard protocols mean compatibility with all major calendar and contacts apps.

File sharing through links (with optional passwords and expiration), or through user-to-user shares within a Nextcloud installation.

Photos via the Nextcloud Photos app, including automatic upload from mobile devices.

Office documents via Nextcloud Office (integrated with Collabora Online or OnlyOffice for in-browser editing).

Tasks, notes, and other lightweight productivity apps.

What Nextcloud struggles with

Performance under any meaningful load. Nextcloud’s PHP-based architecture struggles when concurrent users exceed even modest counts (5 to 10 active users on default configuration). Tuning helps but the underlying architecture is not designed for high concurrency.

Memory usage. Nextcloud is genuinely RAM-hungry. The official “minimum 512 MB” is not realistic; 4 GB is the practical minimum for a usable single-user setup, and 8 GB+ for any household with multiple active users.

Update reliability. Nextcloud version updates have historically had a non-trivial chance of breaking installations. The official update process can leave you in a state where the upgrade failed but the old version is also broken.

The web interface has accumulated cruft. The home dashboard, the various app icons, the activity feed, and the settings system have grown over years and feel unintuitive.

The mobile experience for photo backup is functional but rough. Synology Photos, Apple Photos, and Google Photos all do this better.

When Nextcloud is the right tool

You want a self-hosted file sync that supports CalDAV, CardDAV, and standard sharing protocols.

You have a household or small team of 5 to 10 users.

You want office document collaboration without using Google or Microsoft.

You have the operational capability to maintain it (regular updates, occasional troubleshooting).

You can dedicate hardware (4-8 GB RAM, decent CPU) to running it.

When Nextcloud is the wrong tool

You only need file sync for one user. Sync.com or ProtonDrive at $5-10 per month is dramatically less operational overhead.

You need high reliability for business-critical data. Commercial alternatives have better uptime guarantees and you do not have to be your own ops team.

You want a polished mobile experience for photo backup. Synology Photos or commercial alternatives are better.

You are on minimal hardware (1-2 GB RAM Raspberry Pi). Nextcloud will run but the experience will be bad.

You are new to self-hosting and Nextcloud is your first project. Start with something simpler (Vaultwarden, Pi-hole) and come back to Nextcloud after building operational experience.

Recommended setup approach

For a new Nextcloud install on a small Linux server (Hetzner CX22 or similar):

Use the Nextcloud All-in-One (AIO) image. This is the official Docker-based installer that handles configuration of the database, web server, Redis cache, ClamAV, and all the other moving parts. The single command:

docker run \
  --sig-proxy=false \
  --name nextcloud-aio-mastercontainer \
  --restart always \
  --publish 80:80 \
  --publish 8080:8080 \
  --publish 8443:8443 \
  --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  nextcloud/all-in-one:latest

After this runs, visit https://your-server-ip:8080, set an admin password, configure your domain, and the installer handles the rest.

Configure a real domain pointing at your server. Caddy is the simplest reverse proxy if you want SSL termination outside of Nextcloud AIO, although AIO can handle SSL itself.

Allocate sufficient resources. 4 GB RAM minimum, 6-8 GB recommended. 2+ vCPUs.

Configure backups via the Hyper Backup-equivalent in the AIO interface. The backup target should be off-server (Backblaze B2 is the cheap option).

Set up external uptime monitoring (UptimeRobot or similar). Nextcloud failures are common enough that you want external monitoring catching them.

What to skip in the standard Nextcloud install

Most of the recommended apps. The default Nextcloud install includes activity, dashboard, mail, photos, contacts, calendar, files, and a long list of others. For a single-user install, disable the apps you do not actively use. Each enabled app adds load.

The desktop client’s “Calendar” feature. Use a native calendar app (Apple Calendar, Thunderbird) connected to Nextcloud via CalDAV. The web calendar in Nextcloud is fine for occasional use, but native apps are dramatically better.

The Talk video conferencing feature unless you specifically need it. Talk is functional but not as smooth as Jitsi or other dedicated alternatives, and adds significant complexity to your install.

The mail client. Nextcloud Mail is a basic IMAP client embedded in Nextcloud. It is not as good as your standard mail client. Disable it.

What to do well in the install

Set up Redis caching. The AIO installer does this by default. Without Redis, Nextcloud is dramatically slower for many operations.

Configure HTTPS properly. Either via Caddy in front of AIO, or via AIO’s built-in SSL handling. HTTP-only Nextcloud is not secure for any meaningful use case.

Use PostgreSQL instead of MySQL/MariaDB. AIO uses PostgreSQL by default. The performance and reliability are better.

Set up cron via systemd timer or external cron. Nextcloud relies on a periodic cron job for cleanup tasks. The web-cron alternative is unreliable.

Configure your file storage on a dedicated volume. Separating the OS volume from the file storage volume makes backups, restores, and capacity planning cleaner.

Common problems

Performance degrades over time. Usually because the Nextcloud database has grown and indexes need rebuilding, or because background jobs are not running. The AIO troubleshooting tools can identify these.

Mobile sync stops working. Often because the user’s auth token expired or the server’s URL changed. Re-authenticating in the mobile app fixes most cases.

Updates fail mid-process. The AIO installer handles updates more reliably than manual installs. If you have a non-AIO install and an update fails, the recovery process is documented but unpleasant.

Disk space runs out. The Nextcloud trash and version history grow over time. Configure retention policies for both, and monitor disk space.

The web interface becomes unresponsive. Often a memory issue (PHP processes running out of memory). Increase your PHP memory limit via the AIO configuration.

A specific recommendation

For most users wanting self-hosted file sync: do not use Nextcloud. Use Sync.com ($8/month) or ProtonDrive (bundled with Proton subscription). The operational simplicity is worth the recurring fee.

For users who specifically want Nextcloud’s groupware features (calendar, contacts, file sharing within a small team): Nextcloud AIO on Hetzner CX32 (8 GB RAM, $11/month) is the right setup.

For users who want to learn self-hosting and find it interesting: Nextcloud is a good learning project as your second or third self-hosted application, after you have built basic operational experience with simpler tools.

For users who want Nextcloud-style functionality with less operational overhead: Synology DSM with Synology Drive provides similar functionality with much better polish, on hardware you control. We have a separate guide.

Nextcloud | Nextcloud All-in-One docs

Related: 13 things I wish someone had told me before self-hosting, VPS specs guide, Sync.com review