DAV server (CalDAV/CardDAV/WebDAV)¶
Overview¶
The xynap DAV server implements the CalDAV (RFC 4791), CardDAV (RFC 6352) and WebDAV (RFC 4918) standards for the synchronization of calendars, contacts and files with external clients.
Service Discovery¶
Clients find the server automatically via:
| Method | URL/record | Objective |
|---|---|---|
| SRV | _caldavs._tcp.xynap.tech |
platform.xynap.tech:443 |
| SRV | _carddavs._tcp.xynap.tech |
platform.xynap.tech:443 |
| SRV | _imaps._tcp.xynap.tech |
mail.xynap.tech:993 |
| SRV | _submission._tcp.xynap.tech |
mail.xynap.tech:587 |
| Well-known | /.well-known/caldav |
→/dav/calendars/ |
| Well-known | /.well-known/carddav |
→/dav/addressbooks/ |
| Autoconfig | autoconfig.xynap.tech |
Thunderbird Mail-Config |
URL Schema¶
Principals:
/dav/principals/{user_slug}/ → PROPFIND: calendar-home-set, addressbook-home-set, files-home-set
CalDAV:
/dav/calendars/{user_slug}/ → Kalender-Liste
/dav/calendars/{user_slug}/{slug}/ → Kalender-Collection (PROPFIND, PROPPATCH, REPORT)
/dav/calendars/{user_slug}/{slug}/{uuid}.ics → Einzelnes Event (GET, PUT, DELETE)
CardDAV:
/dav/addressbooks/{user_slug}/ → Adressbuch-Liste
/dav/addressbooks/{user_slug}/{slug}/ → Adressbuch-Collection (PROPFIND, PROPPATCH, REPORT)
/dav/addressbooks/{user_slug}/{slug}/{uuid}.vcf → Einzelner Kontakt (GET, PUT, DELETE)
WebDAV:
/dav/files/{user_slug}/ → Datei-Home
/dav/files/{user_slug}/{pfad} → Dateien (GET, PUT, DELETE, MKCOL, MOVE, COPY)
User-Slug-Format:admin@xynap.tech→admin_at_xynap.tech
Authentication¶
| Method | Format | Note |
|---|---|---|
| Bearer JWT | Authorization: Bearer <token> |
Standard login |
| App password | Authorization: Basic <base64> |
Format:xynap-xxxxx-xxxxx-xxxxx-xxxxx, bypasses 2FA |
| Basic Auth | Authorization: Basic <base64> |
Only if no 2FA is active |
PROPPATCH — Change Properties¶
Calendar (CalDAV)¶
curl -X PROPPATCH https://platform.xynap.tech/dav/calendars/{user}/{slug}/ \
-H "Authorization: Basic <base64>" \
-H "Content-Type: application/xml" \
-d '<d:propertyupdate xmlns:d="DAV:" xmlns:ic="http://apple.com/ns/ical/" xmlns:cal="urn:ietf:params:xml:ns:caldav">
<d:set><d:prop>
<d:displayname>Neuer Name</d:displayname>
<ic:calendar-color>#ff0000</ic:calendar-color>
<cal:calendar-description>Beschreibung</cal:calendar-description>
</d:prop></d:set>
</d:propertyupdate>'
Supported Properties:
| Property | Namespace | DB field |
|---|---|---|
displayname |
DAV: |
Calendar.name |
calendar-color |
http://apple.com/ns/ical/ |
Calendar.color |
calendar-description |
urn:ietf:params:xml:ns:caldav |
Calendar.description |
Address Book (CardDAV)¶
curl -X PROPPATCH https://platform.xynap.tech/dav/addressbooks/{user}/{slug}/ \
-H "Authorization: Basic <base64>" \
-H "Content-Type: application/xml" \
-d '<d:propertyupdate xmlns:d="DAV:">
<d:set><d:prop>
<d:displayname>Neuer Name</d:displayname>
</d:prop></d:set>
</d:propertyupdate>'
Supported Properties:
| Property | Namespace | DB field |
|---|---|---|
displayname |
DAV: |
AddressBook.name |
addressbook-description |
urn:ietf:params:xml:ns:carddav |
AddressBook.description |
WebDAV Quota (RFC 4331)¶
PROPFIND on the user root directory withDepth: 0provides Quota information:
curl -X PROPFIND https://platform.xynap.tech/dav/files/{user}/ \
-H "Authorization: Basic <base64>" -H "Depth: 0" \
-d '<d:propfind xmlns:d="DAV:"><d:prop>
<d:quota-available-bytes/><d:quota-used-bytes/>
</d:prop></d:propfind>'
| Property | Description |
|---|---|
quota-available-bytes |
Free memory in bytes |
quota-used-bytes |
Documented memory in bytes |
Clients such as CyberDuck, Windows Explorer and Nautilus automatically display the storage space.
Client setup¶
Thunderbird¶
- Enter new account → Enter email address (
user@xynap.tech) - Everything is found automatically (CalDAV, CardDAV, IMAP/SMTP)
- At 2FA: Create an app password and use it as a password
DAVx5 (Android)¶
- Login with URL →
https://platform.xynap.tech - Enter email + app password
- Calendar and contacts are automatically detected
Apple iOS/macOS¶
- Settings → Add Accounts → CalDAV/CardDAV
- Server:
platform.xynap.tech - User name: E-mail address
- Password: App password
Web File Manager¶
The integrated File Manager is available under/app/filesand offers:
| Feature | Description |
|---|---|
| Dateiliste | Sort by name, Groesse, date — folder always first, checkbox selection |
| Navigation | Breadcrumb-Pfadnavigation, double-click to open |
| Upload | Drag & Drop or File Selection, Progress Display |
| Vorschau | Images, PDF, Video, Audio, text directly in the browser |
| Row-Actions | Visible buttons per line: Preview, Download, Rename, Move, Release, Loeschen |
| Kontextmenue | Right-click: all Actions + Copy |
| Verschieben/Kopieren | Folder browser dialog to target |
| Freigeben | Create release link with optional password and expiry date |
| Umbenennen | Modal dialog (no longer prompt) |
| Loeschen | Adjustment for single and multiple slots |
| Neuer Ordner | Dialog to create new directories |
| Speicherplatz | Quota Sheets shows occupied/free storage |
Access¶
- Log in to
https://platform.xynap.tech - Sidebar:Dateienclick
- Or directly:
https://platform.xynap.tech/app/files
Web calendar¶
The integrated calendar can be reached under/app/calendar:
| Feature | Description |
|---|---|
| Ansichten | Month, week, day — switchable via Toolbar |
| Navigation | Today-Button, Vor/Zurueck, Mini Calendar in Sidebar |
| Termine | Click on Zeitslot → Click on a new event → Edit/Loeschen |
| Kalender | Create multiple calendars with colors, visibility toggle, new calendar |
| Einstellungen | Calendar rename + change color (PROPPATCH) |
| Sync | Bidirectional with Thunderbird, DAVx5, Apple — Polling all 60s |
| Protokoll | CalDAV (RFC 4791), iCalendar (RFC 5545) |
Access¶
- Log in to
https://platform.xynap.tech - Sidebar:Kalenderclick
- Or directly:
https://platform.xynap.tech/app/calendar
Contacts (CardDAV-Sync)¶
Contact management under/app/contactsis extended by CardDAV-Sync:
| Feature | Description |
|---|---|
| Sync-Leiste | Shows active address book and contact number via CardDAV |
| Sync-Button | Synchronize contacts with CardDAV servers |
| **vCard Export ** | Download all contacts as.vcffile |
| Bidirektional | Changes in Thunderbird/DAVx5/iOS are synchronized |
| *vCard 3.0 * | Standard format (RFC 6350) for maximum compatibility |
| Konflikterkennung | Etag-based (If-Match Header) |
Access¶
- Log in to
https://platform.xynap.tech - Sidebar:Kontakteclick
- CardDAV-Sync bar shows connection status
Webmail (Roundcube SSO)¶
Integrated webmail under/app/webmailwith automatic login:
| Feature | Description |
|---|---|
| SSO | Automatic login via platform authentication (Dovecot Master User) |
| Iframe | Roundcube in the Iframe, no separate login noetig |
| IMAP/SMTP | Full email client (reading, writing, tap, folder) |
| Skin | Elastic (responsive, mobile-optimized) |
| Datenbank | MariaDB (shared with Platform) |
| Sicherheit | CSP frame-ancestors, SameSite=None Cookies, short-lived SSO tokens (60s) |
SSO drain¶
1. User klickt "Webmail" in Sidebar
2. Frontend: GET /api/v1/mail/sso-token → kurzlebiger Token (60s TTL)
3. Iframe laedt: https://mail.xynap.tech/?_sso_token=xxx
4. Roundcube Plugin (xynap_sso) validiert Token gegen Platform-API
5. Dovecot Master-User authentifiziert → automatischer Login
Access¶
- Log in to
https://platform.xynap.tech - Sidebar:Webmailclick
- Or directly:
https://platform.xynap.tech/app/webmail - Alternatively:
https://mail.xynap.tech(Roundcube direct, manual login)
Service Portal (M8)¶
The Service Portal (/app/service-portal) offers a central overview:
| Function | Description |
|---|---|
| Service-Kacheln | E-mail, calendar, contacts, files — with "Open" and "Set up" buttons |
| Speicherplatz | Quota Sheets with Categories (Documents, Media, Mail, Backups) |
| ** Set up devices** | Setup-Wizard for Thunderbird, iOS, macOS, DAVx5, Outlook, WebDAV |
| Server-Informationen | All URLs and ports at a glance |
3-level visibility¶
- Portal Operator (Platform): Also sees Tenant Overview + Docker Monitoring Link
- Reseller:Sees own services + customer management
- Kunde:Sees only own services, memory, setup
Access Service Portal¶
- Log in to
https://platform.xynap.tech - Sidebar:Meine Diensteclick
- Or directly:
https://platform.xynap.tech/app/service-portal - Setup-Wizard:
https://platform.xynap.tech/app/service-portal/setup
Technical details¶
- Sync:ETag-based +
sync-token(RFC 6578) - CTag:CalendarServer
getctagfor fast change detection - Multi-Calendar/Multi-Addressbook: Each user can have multiple calendar/address books
- Auto-Provisioning:Standard Calendar and Address Book are created automatically