Uno de los servicios más conocidos de la empresa cuyo lema es «Sé bueno» es el calendario. Este permite que controlemos las veces que vamos al dentista o en que día y hora quedamos con ese señorito de compañía. Incluso podemos hacer listas de la compra! Qué locura. Pero se echa de menos cuando no puedes hacerlo.
Estas cosas se pueden hacer de manera sencilla en local, pero se complican un poco si queremos que se sincronicen varios dispositivos. Por eso aprenderemos a instalar, en cinco minutos, un servidor de calendario o caldav. Porqué nos pone la #autogestión
En concreto usaremos calendarserver, uno de tantos servidores caldav. Este viene de la mano de la empresa privativa Apple, aunque es software libre. Otros conocidos son radicale y DAViCal.
Diría que el más usado es DAViCAL, y es el que habría usado yo. Pero sólo permite ser usado con postgres y yo uso mariadb. Así que me decidí por calendarserver. Es sencillo de configurar y permite usar cualquier formato de BBDD que queramos, incluido sqlite. Al lío.
Instalando calendarserver
En Debian Wheezy nos logueamos cómo root e introducimos el siguiente comando en la consola:
aptitude install calendarserver
Cómo siempre, es de una dificultad abrumadora. Una vez instalado, pasamos a la configuración.
Configurando el servidor
Por defecto no mete los archivos de configuración en /etc/, por lo que tendremos que copiarlos a mano.
cp /usr/share/doc/calendarserver/examples/accounts.xml /etc/caldavd/ cp /usr/share/doc/calendarserver/examples/sudoers.plist /etc/caldavd/
En el archivo /etc/default/calendarserver des-comentamos la linea start_calendarserver=yes y podemos iniciar el servidor. Podemos ver que funciona en la dirección http://localhost:8008/calendars/users/admin/calendar/.
Hecho esto, sólo queda crear las cuentas en el archivo /etc/caldavd/accounts.xml. Un ejemplo de configuración es el siguiente:
<accounts realm="One Realm"> <user> <uid>root</uid> <password>passwordQueGustemosParaRoot</password> <name>Super User</name> </user> <user> <uid>usuario1</uid> <password>passwordUsuario</password> <name>usuario1</name> </user> <group> <uid>users</uid> <password>users</password> <name>Users Group</name> <members> <member type="users">usuario1</member> </members> </group> <location> <uid>mercury</uid> <password>mercury</password> <name>Mecury Conference Room, Building 1, 2nd Floor</name> </location> </accounts>
Una vez modificado, sólo queda reiniciar el servidor y configurar un cliente.
Configurando el cliente
El tema del cliente de caldav está un poco limitado. En gnu/linux los más usados son también clientes de correo, cómo evolution o thunderbird con el plugin lightning o sunbird. Pueden valer, pero a mi no me gustan. Por eso buscando por ahí, encontré khal que además es un cliente cli. Avisan que es experimental, pero a mi no me ha dado ningún problema. Este cliente depende a su vez de otro programa, llamado vdirsync. Explicaré rápidamente cómo instalar y configurar para usar el calendario.
pip install --user vdirsyncer mdkir ~/.vdirsyncer wget https://github.com/untitaker/vdirsyncer/blob/master/example.cfg -O ~/.vdirsyncer/config
El último paso es opcional, pero así tenemos un archivo de configuración con un punto de partida. Aquí podéis ver uno más sucinto:
[general] [pair bob_calendar] a = bob_calendar_local b = bob_calendar_remote collections = bob [storage bob_calendar_local] type = filesystem path = ~/.vdirsyncer/calendars/ fileext = .ics [storage bob_calendar_remote] type = caldav url = $url:8443/calendars/users/ auth = guess username = bob password = unPasswordComplejo #fingerprint de nuestro ssl, si es autofirmado verify = false verify_fingerprint = $fingerprint
Metemos en el crontab algo cómo esto: 0/30 * * * * vdirsyncer sync 2> /dev/null. Y ya tenemos vdirsync configurado. Sólo hace falta decirle a khal que lo use.
mkdir ~/.khal nano ~/.khal/config
Y metemos esto en el config.
[calendars] [[bob]] path = ~/.vdirsyncer/calendars/bob/ color = green [locale] local_timezone= Europe/Berlin default_timezone= Europe/Berlin timeformat= %H:%M dateformat= %d.%m. longdateformat= %d.%m.%Y datetimeformat= %d.%m. %H:%M longdatetimeformat= %d.%m.%Y %H:%M [sqlite] path = ~/.khal/khal.db
Esto es sólo un vistazo rápido a todas las opciones que ofrecen tanto calendarserver cómo khal. Siempre se puede profundizar más. Y así, le hemos dado un vistazo rápido a todo lo relacionado con caldav.
De mucha utilidad. Gracias.