Connect macOS Calendar, Contacts and Reminders to NextCloud
Nextcloud Calendar and Contacts are solid cross-platform alternatives to iCloud’s equivalents, and Tasks is good enough I’ve been using it for several years.
On macOS, System Settings > Internet Accounts manages logins for all the built-in applications like Apple Mail, Calendar, Reminders and Contacts. Setting these up with Nextcloud is easy, but it’s not intuitive, because Apple has been optimizing the setup process for all-in-one services like iCloud, Google or Microsoft.
Option 1: Download a Device Profile
On your Nextcloud server’s website, open your account settings, then go to the Mobile & Desktop section. Below the app store links, look for “Download macOS/iOS configuration profile.” That link will download a config with all the info except your password. (You should generate an app-specific one, but it’s not necessary.)
On your Mac, open System Settings, go to General > Device Management and approve the Nextcloud profile. It’ll ask for the password twice because you’re still technically logging into two services, one for calendar and one for contacts.
Option 2: Add the Accounts Manually
If you don’t want to use Device Management, or run into trouble getting it to work, you can still set up the accounts in System Settings > Internet Accounts. The process is simple, if a little misleading.
First: Starting with macOS 26 (Tahoe), it only asks you for an email address when you press Add Account. To add a contacts/calendar account:
- Click on “choose from a list.”
- Scroll down and click on “Add other account…”
- Now you can add a CalDAV (Calendar/Reminders) or CardDAV (Contacts) account.
Alternatively: go through the Apple Calendar or Contacts apps’ settings and add the account there. It’ll still get added to the central set of accounts.
Second: It still asks you for an email address when you tell it to add one of those account types!
You can switch from Automatic to Manual in the dropdown, and it’ll ask for a username and server… or you can just enter the equivalent of username@server.example.com (even if it isn’t a real email address) and your (preferably app-specific) password, and it’ll find the right details for your server.
Easy, but not obvious!