Skip to main content

Nextcloud

LicenseFOSS problemsMaintenanceSSOUsersTested
AGPLv3Copyleft license. If you modify it and run it as a service, you must publish your changes. Surrounding linked code must also be open.Copyleft License with CLAActiveUnlimited

Evaluation

What it is

Nextcloud is a self-hosted cloud platform — file storage and sync, calendars, contacts, and a growing ecosystem of apps. Positioned as a replacement for Google Workspace or Microsoft 365.

Why it could be useful

The most complete self-hosted alternative to Google Drive. Files sync across devices via desktop and mobile clients, calendars and contacts work with standard CalDAV/CardDAV clients, and the app store extends it considerably. For an organisation that wants to move file storage and collaboration off Google or Microsoft, Nextcloud is the obvious starting point.

Why not to go for it

It's heavy. Nextcloud is resource-intensive and notoriously slow on modest hardware. The app ecosystem is wide but quality is inconsistent — some apps are well-maintained, others are abandoned. Setup is straightforward but ongoing maintenance has a higher burden than simpler tools. The cron runner is missing from the default Docker setup, leaving background jobs broken out of the box.

Setup

  1. Add DNS records pointing cloud.<domain> to the server:

    • A record: cloud<ipv4>
    • AAAA record: cloud<ipv6>
  2. In Coolify, go to New Resource → Service and search for Nextcloud. Set the domain on the nextcloud container (hidden inside the container settings, not at the service level).

  3. Deploy. On first boot, Nextcloud shows an admin setup screen:

    • Create an admin account
    • For the database credentials, use the values from the Coolify environment variables (auto-generated)
  4. The suggested apps search may fail on first boot — this is a timeout issue and harmless.

  5. Configure email in Settings → Administration → Basic settings → Email server using the shared SMTP team variables.

Known issues

Cron errors in logs

Nextcloud needs a cron runner for background jobs. The default Docker setup doesn't include one, so errors will appear in the logs.