Servidor DAV #

Un servidor CalDAV i CardDAV autoallotjat i llest per a producció construït sobre Spring Boot, dissenyat per a organitzacions que necessiten sincronització confiable de calendaris i contactes sota la seva pròpia infraestructura — sense dependències de núvol, tarifes de subscripció, o dades sortint de les instal·lacions.
Què Proporciona #
- CalDAV — sincronització de calendaris i esdeveniments compatible amb RFC 4791 i RFC 5545 (iCalendar)
- CardDAV — sincronització de contactes i llibretes d’adreces compatible amb RFC 6352 i RFC 6350 (vCard)
Tots dos serveis comparteixen una capa d’autenticació unificada, una única base de dades PostgreSQL, i un únic endpoint HTTPS — un servidor per desplegar i mantenir.
Compliment de Protocol #
El servidor implementa el conjunt complet de mètodes WebDAV requerits per clients CalDAV i CardDAV:
| Mètode | Propòsit |
|---|---|
OPTIONS | Anunci de capacitats (DAV: 1, 2, calendar-access, addressbook) |
GET / PUT / DELETE | CRUD d’esdeveniments i contactes |
PROPFIND | Descobriment de propietats a profunditat 0, 1 i infinit |
REPORT | Consultes de calendari i multiget (RFC 4791) |
MKCALENDAR | Creació de col·lecció de calendari (RFC 4791 §5.3.1) |
Els endpoints d’auto-descobriment (/.well-known/caldav, /.well-known/carddav) i el descobriment de principals (/principals/{username}) estan implementats perquè els clients es puguin configurar amb només un nom d’amfitrió i credencials — sense entrada manual de ruta requerida.
Compatibilitat de Clients #
Provat i verificat amb:
- macOS — Calendar.app i Contacts.app (auto-descobriment, sincronització completa, creació de calendaris)
- iOS / iPadOS — aplicacions natives de Calendari i Contactes
- Android — DAVx⁵ (client de sincronització compatible amb estàndards)
- Linux — Evolution, Thunderbird, GNOME Online Accounts, KDE Kontact
- Qualsevol altra aplicació compatible amb CalDAV / CardDAV
La compatibilitat amb vCard es gestiona automàticament: el servidor emmagatzema vCards en el seu format original i converteix a vCard 3.0 en temps de servei per a clients — com macOS Contacts i Thunderbird — que no suporten vCard 4.0.
Característiques Principals #
Sincronització
- Detecció de conflictes basada en ETag en cada creació i actualització
- Les actualitzacions de CTag (etiqueta de col·lecció) es propaguen immediatament a tots els clients
- REPORT Calendar-query amb filtrat per rang de temps per sincronització parcial eficient
- REPORT Calendar-multiget per recuperació massiva d’esdeveniments per UID
- Suport de grups de contactes amb format compatible amb Apple
Seguretat
- HTTPS / TLS primer — corre al port 8443 amb suport SSL/TLS complet
- Autenticació HTTP Basic amb hash de contrasenya BCrypt (RFC 2617)
- Aïllament de dades per usuari via control d’accés basat en rutes (
/caldav/{username}/,/carddav/{username}/)
Operacions
- Backend PostgreSQL amb versionat d’esquema Flyway — els canvis d’esquema mai requereixen
ALTER TABLEmanual - Perfils de Spring Boot per a entorns dev / prod
- API de gestió REST per a principals, calendaris, esdeveniments, llibretes d’adreces i contactes
- OpenAPI / Swagger UI inclòs per exploració d’API
- Endpoint de health check a
/api/healthper integració de monitoratge - Optimització de consultes N+1 amb
JOIN FETCHexplícit — sense degradació de rendiment a escala - Neteja automàtica de registre de canvis (retenció configurable, predeterminat 30 dies)
Integració amb el Mòdul FM GCalendar #
El Servidor DAV és el backend on-premise de contrapart del Mòdul FM GCalendar. Junts formen una infraestructura de calendari autoallotjada completa:
- El Mòdul FM GCalendar gestiona esdeveniments dins de FileMaker, sincronitzant amb Google Calendar o directament amb el Servidor DAV.
- El Servidor DAV publica aquells calendaris i contactes als dispositius de cada usuari sobre CalDAV/CardDAV estàndard.
- Els canvis des de qualsevol dispositiu es sincronitzen de tornada a través del servidor — sense tercers al circuit.
Aquesta combinació és l’única configuració que dóna a una organització centrada en FileMaker sincronització de calendari lectura/escriptura completa en tots els dispositius amb zero dependència de núvol externa.
Visió General d’Arquitectura #
Dispositius client (macOS / iOS / Android / Linux)
│ HTTPS (port 8443)
▼
Servidor DAV (Spring Boot 3.2 · Java 17 · Jetty)
│
▼
PostgreSQL (principals · calendaris · esdeveniments · llibretes d'adreces · contactes)
El servidor usa una cadena de filtres de servlet per interceptar mètodes WebDAV abans del despatxador de Spring, el que manté la capa de maneig de protocol clarament separada de l’API de gestió REST i de Spring Security.
API de Gestió REST #
Més enllà dels endpoints de protocol, una API REST completa està disponible per a operacions administratives:
| Recurs | Endpoints |
|---|---|
| Principals (usuaris) | CRUD a /api/principals |
| Calendaris | CRUD a /api/calendars |
| Esdeveniments | CRUD a /api/calendar-objects |
| Llibretes d’adreces | CRUD a /api/addressbooks |
| Contactes | CRUD a /api/contacts |
| Health | GET /api/health |
Tots els endpoints estan documentats via OpenAPI 3.0 — accessibles a /swagger-ui.html i /rapidoc.html en una instància en execució.
Requisits de Desplegament #
- SO Host: Linux (recomanat), macOS o Windows
- Runtime: Java 17 o posterior
- Base de dades: PostgreSQL 15+, accessible per xarxa
- Xarxa: Nom d’amfitrió aconseguible o endpoint VPN per connectivitat de client
- TLS: Certificat auto-signat inclòs per desenvolupament; porti el seu propi o usi Let’s Encrypt per a producció
# Iniciar (perfil de desenvolupament, cert auto-signat)
./mvnw spring-boot:run
# Iniciar (perfil de producció + TLS)
./mvnw -Pprod,tls spring-boot:run
RFCs Implementades #
| RFC | Estàndard |
|---|---|
| RFC 4918 | WebDAV — protocol principal |
| RFC 4791 | CalDAV — accés a calendaris |
| RFC 5545 | Format iCalendar |
| RFC 6352 | CardDAV — accés a contactes |
| RFC 6350 | Format vCard |
| RFC 6764 | Auto-descobriment (endpoints .well-known) |
| RFC 2617 | Autenticació HTTP Basic |
Preus #
Servidor DAV — Desplegament Base #
Desplegament d’instància única en infraestructura del client. Inclou serveis CalDAV i CardDAV, configuració HTTPS, configuració d’esquema PostgreSQL, API de gestió REST, i aprovisionament inicial de principals i col·leccions.
| Preu |
|---|
| Desplegament base 950 € |
Paquet d’Integració FM GCalendar #
Configuració i verificació de la sincronització bidireccional entre el Mòdul FM GCalendar i el Servidor DAV. Inclou proves d’extrem a extrem amb almenys un client d’escriptori i un client mòbil.
| Preu |
|---|
| Paquet d’integració 350 € |
Suport d’Implementació #
Assistència in situ o remota per a configuració de servidor, configuració de xarxa, instal·lació de certificats, i onboarding de clients per a fins a cinc usuaris.
| Preu |
|---|
| Suport d’implementació 500 € |
Suport de Manteniment #
| Tarifa | Paquet | Mode | |:|:—–|:|:—–| | 80 €/hora | Paquet 5 hores | remot | | 60 €/hora | Paquet 30 hores | remot | | 120 € | una visita in situ | — |
Visites in situ dins de l’àrea de Barcelona.
Actualitzacions #
Les actualitzacions principals tenen un preu del 50% del cost de desplegament original.
Les actualitzacions de manteniment són gratuïtes.
Garantia #
Garantia funcional permanent i il·limitada contra defectes al desplegament lliurat. La garantia roman activa indefinidament, excepte en cas de manipulació o una actualització al runtime Java subjacent, versió de PostgreSQL, o sistema operatiu que estigui fora de la matriu de compatibilitat acordada.