2 puntos por GN⁺ 2025-04-11 | 1 comentarios | Compartir por WhatsApp

Introducción

  • Primera parte de una serie sobre poseer directamente los datos y la tecnología, donde se explica cómo integrar una solución de calendario autoalojada.
  • Como los viajes frecuentes hacían más compleja la gestión de la agenda y los sistemas de calendario existentes resultaban incómodos, se terminó construyendo una solución propia.

Requisitos

  • Los eventos deben aparecer como bloques de tiempo ocupado en el calendario de trabajo.
  • La esposa puede suscribirse al calendario.
  • Los eventos solo deben ingresarse una vez.
  • Debe poder editarse desde varios dispositivos.
  • Debe haber control total sobre los datos.
  • El problema no puede resolverse compartiendo el calendario de trabajo con la esposa.

Solución anterior

  • Las soluciones existentes para compartir calendarios requerían una plataforma común o ofrecían funciones limitadas.
  • Se comenzó con un enfoque de escribir eventos del calendario en archivos YAML y convertirlos a archivos ICS para compartirlos, pero mantenerlo se volvió difícil.

Arquitectura

  • Se construyó una solución con un servidor CalDAV para administrar el calendario desde varios dispositivos.
  • Se conecta con distintas fuentes de datos para actualizar eventos automáticamente y ofrecerlos como archivos ICS.

Configuración de Baïkal

  • Se configuró un servidor CalDAV con Baïkal y se desplegó fácilmente mediante Docker Compose.
  • Se ajustó para que fuera accesible desde la web usando un proxy inverso de nginx.

Configuración del sistema de clasificación de eventos

  • Se clasifican los eventos usando la propiedad CATEGORIES de iCalendar y se escribió el modelo de datos con un enum de Python.
  • Esto permite buscar eventos fácilmente o distinguirlos por color.

Compilación y compartición del calendario

  • Los eventos se importan automáticamente mediante IMAP, API, archivos ICS, etc., se agregan a Baïkal y luego se convierten en archivos ICS para compartirlos en la web.
  • Se configuró una tarea de cron para actualizar cada 15 minutos.

Compartición con el calendario de trabajo

  • Se usa Google Script Engine para copiar eventos al calendario de trabajo y aplicar codificación por colores basada en la propiedad CATEGORIES.

Conclusión

  • Tras 6 meses de pruebas, el sistema funciona bien y ayuda mucho a gestionar itinerarios de viaje.
  • Aunque implica un costo de servidor de $100 al mes, se considera que vale totalmente la pena por la comodidad en la gestión de la agenda.

1 comentarios

 
GN⁺ 2025-04-11
Opiniones de Hacker News
  • CalDAV es complejo y poco intuitivo. Probé Radicale, pero no me dejó satisfecho. Personalmente intenté implementar un servidor CalDAV, pero me rendí

    • En su lugar, alojé archivos iCal en un bucket de S3 y usé ICSx5 para sincronizar en Android. No hace falta CalDAV, solo HTTPS
    • Los calendarios FOSS todavía se quedan cortos y, como ICSx5 no funciona en GrapheneOS, me cambié a Proton Calendar. No es perfecto, pero cubre lo que necesito
    • Usar el formato iCalendar es un buen enfoque, pero como las funciones compatibles varían según el software, decidí poner los metadatos en el campo de descripción
    • Uso software para recopilar datos de varios sitios, filtrar solo los eventos sociales que me interesan y combinarlos en un solo calendario
  • Radicale es un servidor CalDAV modular escrito en Python que vale la pena recomendar

    • Los datos se guardan como archivos de texto y se rastrean y respaldan con git
    • La autenticación usa el pam del sistema anfitrión
    • Para compartir calendarios, ejecuto periódicamente un script que crea enlaces simbólicos del calendario para todos los usuarios autorizados
    • Soporta listas de control de acceso usando propiedades CalDAV personalizadas y un plugin web modificado
    • Los calendarios públicos dan permiso de lectura al usuario 'public' mediante ACL
  • Uso Mailcow (SoGO) y Fastmail en mi servidor personal. Los dos calendarios no se sincronizan bien

    • No he logrado que el calendario de Mailcow funcione bien con otras herramientas, así que lo sincronizo de forma semiautomática
    • Quiero probar Baïkal. También sería una oportunidad para reemplazar Mailcow por otro servicio de correo autoalojado
  • A inicios de los 2000 usaba Mozilla Sunbird para alojar un calendario en un servidor Win2k. Creo que CardDAV no existía

    • Importé todos los datos a Google Calendar y todavía puedo ver tareas universitarias antiguas y cosas así
  • Llevo varios años usando Baikal y es estable. Lo conecto con Thunderbird, DAVx5 y Fossify Calendar

    • Fossify Calendar es una app derivada de la aplicación de calendario de Simple Mobile Tools, y es la más completa en funciones
    • Ofrece todas las opciones de forma sencilla, así que es cómoda de usar
  • Quiero crear algo para las fotos. Quiero alejarme de Dropbox y Google

    • Quiero una función que agrupe las fotos por aniversarios, actividades, familia, etc., y las envíe al teléfono
    • Quiero poder guardar en el servidor las fotos tomadas desde el dispositivo
    • Estoy instalando máquinas true-nas con 2 TB de espacio en tres lugares y desarrollando esa funcionalidad
  • Sincronizar Outlook y Google Calendar por HTTP no es confiable

    • Por problemas de zona horaria, la hora de las reuniones siempre sale mal
    • Parece que usar mi propio sistema lo resolvería, pero me preocupa que las reuniones se creen con dos horas de diferencia
  • Baikal se ve interesante. Antes usé DAViCal, pero dejó de ser confiable cuando cambiaron las versiones de iOS

    • Cuando lo intente de nuevo, consideraré DAViCal, Radicale y Baikal
  • Últimamente he estado intentando salir de la nube. La migración de datos tomó dos semanas y funcionó mejor de lo esperado

    • Manejo yo mismo todos los servicios excepto el correo electrónico, y el Asus PN40 ha ayudado mucho
    • CalDAV es inestable, pero Nextcloud cubre la mayoría de mis necesidades
    • Combinándolo con varias soluciones de código abierto, cubro todas mis necesidades
  • También hay una forma serverless de usar DecSync. Thunderbird o Evolution se sincronizan con apps de Android

    • Cal, Cards, tareas y RSS se replican a otros peers