Bad Daemons

Autogestión - Instalar calendarserver en Debian Wheezy

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=