Servidor DAV #

Un servidor CalDAV y CardDAV autoalojado y listo para producción construido sobre Spring Boot, diseñado para organizaciones que necesitan sincronización confiable de calendarios y contactos bajo su propia infraestructura — sin dependencias de nube, tarifas de suscripción, o datos saliendo de las instalaciones.
Qué Proporciona #
- CalDAV — sincronización de calendarios y eventos compatible con RFC 4791 y RFC 5545 (iCalendar)
- CardDAV — sincronización de contactos y libretas de direcciones compatible con RFC 6352 y RFC 6350 (vCard)
Ambos servicios comparten una capa de autenticación unificada, una única base de datos PostgreSQL, y un único endpoint HTTPS — un servidor para desplegar y mantener.
Cumplimiento de Protocolo #
El servidor implementa el conjunto completo de métodos WebDAV requeridos por clientes CalDAV y CardDAV:
| Método | Propósito |
|---|---|
OPTIONS | Anuncio de capacidades (DAV: 1, 2, calendar-access, addressbook) |
GET / PUT / DELETE | CRUD de eventos y contactos |
PROPFIND | Descubrimiento de propiedades a profundidad 0, 1 e infinito |
REPORT | Consultas de calendario y multiget (RFC 4791) |
MKCALENDAR | Creación de colección de calendario (RFC 4791 §5.3.1) |
Los endpoints de auto-descubrimiento (/.well-known/caldav, /.well-known/carddav) y el descubrimiento de principales (/principals/{username}) están implementados para que los clientes puedan configurarse con solo un nombre de host y credenciales — sin entrada manual de ruta requerida.
Compatibilidad de Clientes #
Probado y verificado con:
- macOS — Calendar.app y Contacts.app (auto-descubrimiento, sincronización completa, creación de calendarios)
- iOS / iPadOS — aplicaciones nativas de Calendario y Contactos
- Android — DAVx⁵ (cliente de sincronización compatible con estándares)
- Linux — Evolution, Thunderbird, GNOME Online Accounts, KDE Kontact
- Cualquier otra aplicación compatible con CalDAV / CardDAV
La compatibilidad con vCard se maneja automáticamente: el servidor almacena vCards en su formato original y convierte a vCard 3.0 en tiempo de servicio para clientes — como macOS Contacts y Thunderbird — que no soportan vCard 4.0.
Características Principales #
Sincronización
- Detección de conflictos basada en ETag en cada creación y actualización
- Las actualizaciones de CTag (etiqueta de colección) se propagan inmediatamente a todos los clientes
- REPORT Calendar-query con filtrado por rango de tiempo para sincronización parcial eficiente
- REPORT Calendar-multiget para recuperación masiva de eventos por UID
- Soporte de grupos de contactos con formato compatible con Apple
Seguridad
- HTTPS / TLS primero — corre en puerto 8443 con soporte SSL/TLS completo
- Autenticación HTTP Basic con hash de contraseña BCrypt (RFC 2617)
- Aislamiento de datos por usuario vía control de acceso basado en rutas (
/caldav/{username}/,/carddav/{username}/)
Operaciones
- Backend PostgreSQL con versionado de esquema Flyway — los cambios de esquema nunca requieren
ALTER TABLEmanual - Perfiles de Spring Boot para entornos dev / prod
- API de gestión REST para principales, calendarios, eventos, libretas de direcciones y contactos
- OpenAPI / Swagger UI incluido para exploración de API
- Endpoint de health check en
/api/healthpara integración de monitoreo - Optimización de consultas N+1 con
JOIN FETCHexplícito — sin degradación de rendimiento a escala - Limpieza automática de registro de cambios (retención configurable, predeterminado 30 días)
Integración con el Módulo FM GCalendar #
El Servidor DAV es el backend on-premise de contraparte del Módulo FM GCalendar. Juntos forman una infraestructura de calendario autoalojada completa:
- El Módulo FM GCalendar gestiona eventos dentro de FileMaker, sincronizando con Google Calendar o directamente con el Servidor DAV.
- El Servidor DAV publica esos calendarios y contactos a los dispositivos de cada usuario sobre CalDAV/CardDAV estándar.
- Los cambios desde cualquier dispositivo se sincronizan de vuelta a través del servidor — sin terceros en el circuito.
Esta combinación es la única configuración que da a una organización centrada en FileMaker sincronización de calendario lectura/escritura completa en todos los dispositivos con cero dependencia de nube externa.
Visión General de Arquitectura #
Dispositivos cliente (macOS / iOS / Android / Linux)
│ HTTPS (puerto 8443)
▼
Servidor DAV (Spring Boot 3.2 · Java 17 · Jetty)
│
▼
PostgreSQL (principales · calendarios · eventos · libretas de direcciones · contactos)
El servidor usa una cadena de filtros de servlet para interceptar métodos WebDAV antes del despachador de Spring, lo que mantiene la capa de manejo de protocolo claramente separada de la API de gestión REST y de Spring Security.
API de Gestión REST #
Más allá de los endpoints de protocolo, una API REST completa está disponible para operaciones administrativas:
| Recurso | Endpoints |
|---|---|
| Principales (usuarios) | CRUD en /api/principals |
| Calendarios | CRUD en /api/calendars |
| Eventos | CRUD en /api/calendar-objects |
| Libretas de direcciones | CRUD en /api/addressbooks |
| Contactos | CRUD en /api/contacts |
| Health | GET /api/health |
Todos los endpoints están documentados vía OpenAPI 3.0 — accesibles en /swagger-ui.html y /rapidoc.html en una instancia en ejecución.
Requisitos de Despliegue #
- SO Host: Linux (recomendado), macOS o Windows
- Runtime: Java 17 o posterior
- Base de datos: PostgreSQL 15+, accesible por red
- Red: Nombre de host alcanzable o endpoint VPN para conectividad de cliente
- TLS: Certificado auto-firmado incluido para desarrollo; traiga el suyo propio o use Let’s Encrypt para producción
# Iniciar (perfil de desarrollo, cert auto-firmado)
./mvnw spring-boot:run
# Iniciar (perfil de producción + TLS)
./mvnw -Pprod,tls spring-boot:run
RFCs Implementadas #
| RFC | Estándar |
|---|---|
| RFC 4918 | WebDAV — protocolo principal |
| RFC 4791 | CalDAV — acceso a calendarios |
| RFC 5545 | Formato iCalendar |
| RFC 6352 | CardDAV — acceso a contactos |
| RFC 6350 | Formato vCard |
| RFC 6764 | Auto-descubrimiento (endpoints .well-known) |
| RFC 2617 | Autenticación HTTP Basic |
Precios #
Servidor DAV — Despliegue Base #
Despliegue de instancia única en infraestructura del cliente. Incluye servicios CalDAV y CardDAV, configuración HTTPS, configuración de esquema PostgreSQL, API de gestión REST, y aprovisionamiento inicial de principales y colecciones.
| Precio |
|---|
| Despliegue base 950 € |
Paquete de Integración FM GCalendar #
Configuración y verificación de la sincronización bidireccional entre el Módulo FM GCalendar y el Servidor DAV. Incluye pruebas de extremo a extremo con al menos un cliente de escritorio y un cliente móvil.
| Precio |
|---|
| Paquete de integración 350 € |
Soporte de Implementación #
Asistencia in situ o remota para configuración de servidor, configuración de red, instalación de certificados, y onboarding de clientes para hasta cinco usuarios.
| Precio |
|---|
| Soporte de implementación 500 € |
Soporte de Mantenimiento #
| Tarifa | Paquete | Modo | |:|:—–|:|:—–| | 80 €/hora | Paquete 5 horas | remoto | | 60 €/hora | Paquete 30 horas | remoto | | 120 € | una visita in situ | — |
Visitas in situ dentro del área de Barcelona.
Actualizaciones #
Las actualizaciones principales tienen un precio del 50% del costo de despliegue original.
Las actualizaciones de mantenimiento son gratuitas.
Garantía #
Garantía funcional permanente e ilimitada contra defectos en el despliegue entregado. La garantía permanece activa indefinidamente, excepto en caso de manipulación o una actualización al runtime Java subyacente, versión de PostgreSQL, o sistema operativo que esté fuera de la matriz de compatibilidad acordada.