Calendar Sync lets you connect your Nextcloud calendar to any CalDAV server - keeping both sides in sync automatically, every 30 minutes. Multiple external sources, configurable sync direction, and secure encrypted credential storage are all built in.
- Bidirectional sync - changes made on either side are reflected on the other
- Multiple configurations - connect to as many external CalDAV sources as you need
- Sync direction control - bidirectional, external → Nextcloud only, or Nextcloud → external only
- Conflict resolution - choose between "update with newer", "skip", or "keep both"
- Content-based duplicate detection - matches events by title to avoid duplicates
- Scheduled sync - runs automatically every 30 minutes in the background
- Manual sync - trigger a full sync with one click
- Sync history - view a log of recent sync runs with created/updated/deleted counts
- Secure credentials - passwords encrypted with Nextcloud's built-in
ICryptobefore storage - Auto-refresh - configurable live status updates (1, 5, 10, 15 min, or custom)
- Languages - English 🇬🇧 · German 🇩🇪
| Dependency | Version |
|---|---|
| Nextcloud | 20 – 33 |
| PHP | 8.0+ |
- Clone or download this repository into your Nextcloud
custom_apps/directory:cd /path/to/nextcloud/custom_apps git clone https://github.com/markusbegerow/nextcloud-calendar-sync calendar-sync - Enable the app in Nextcloud:
php occ app:enable calendar-sync
- Navigate to the Sync entry in the Nextcloud top navigation bar.
- Click Add Configuration to create a connection to an external CalDAV server.
- Fill in the CalDAV server URL, username, and password. Use Test Connection to verify.
- Choose a sync direction and how to handle duplicate events.
- Enable the configuration and click Sync Now to run the first sync manually.
- Background sync runs every 30 minutes automatically - check Recent Sync History for results.
| Provider | URL format |
|---|---|
| Nextcloud | https://cloud.example.com/remote.php/dav/calendars/user/calendar-name/ |
| Generic CalDAV | https://example.com/dav/calendars/user/default/ |
- Passwords are encrypted with Nextcloud's
ICryptoservice before being written to the database. They are never logged or stored in plain text. - All requests from the background job run within the Nextcloud security context of the owning user.
If you encounter any issues or have questions:
- 🐛 Report bugs
- 💡 Request features
- ⭐ Star the repo if you find it useful!
If you like this project, support further development with a repost or coffee:
- 🧑💻 Markus Begerow
- 💾 GitHub