Roundcube: plugin calendario sobre CalDav

Cuando instalo roundcube uno de los plugins que siempre me quedo a medias por no poder hacerlo funcionar es el de calendario. Así que hago este post, que aunque de momento no he conseguido hacer funcionar la conexión creo que me queda poco. Cuando lo consiga actualizo el post para que quede la configuración correcta.

Lo primero como es de suponer es necesario tener instalado roundcube. Un post completito de como hacerlo lo puedes encontrar aquí.

Primero descargamos el plugin en un directorio, por ejemplo /root y copiamos los plugins:

# cd /root
# mkdir roundcube_3rd_party_plugins
# cd roundcube_3rd_party_plugins
# git clone https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git
# cd roundcubemail-plugins-kolab
# cp -R calendar libcalendaring libkolab /var/www/roundcube/plugins/
# chown -R www-data:www-data /var/www/roundcube/plugins/

Antes de seguir será necesario arreglar un problema que nos encontraremos con la apariencia del calendario. Crearemos un enlace simbólico en el directorio de skins de nuestra instancia de roundcube. Luego será necesario instalar nodejs y less, ejecutar un script y copiar el css.

# ln -s /var/www/roundcube/skins .
# curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
# apt update && apt -y install nodejs
# npm install less
# ./less-build.sh
# cp plugins/libkolab/skins/elastic/libkolab.min.css /var/www/roundcube/plugins/libkolab/skins/elastic/libkolab.css

Ahora en el fichero de config añadimos los tres plugins y definimos la configuración de la configuración del servidor calDav

# vi /var/www/roundcube/config/config.inc.php
$config['plugins'] = [
    ...
    'calendar',
    'libcalendaring',
    'libkolab',
];

// configuración para nextcloud
//$config['calendar_caldav_server'] = "https://[nextcloud_url]/remote.php/dav";
//$config['calendar_caldav_url'] = 'https://[nextcloud_url]/remote.php/dav/calendars/%u/%n';

// configuración para caldav
$config['calendar_caldav_server'] = "https://mail.capa8.net/radicale";
$config['calendar_caldav_url'] = 'https://mail.capa8.net/radicale/%u';

Como usuario www-data vamos a instalar la dependencia de php

# mkdir /var/www/.cache
# chown -R www-data:www-data /var/www/.cache
# su - www-data -s /bin/bash
$ cd roundcubemail-1.6.11
$ composer require sabre/vobject
$ exit

Lo siguiente será crear las tablas y dar permisos al usuario para que pueda trabajar sobre estas tablas:

# cp plugins/calendar/drivers/database/SQL/postgres.initial.sql /var/lib/postgresql/
# su - postgres
# psql roundcube_db < postgres.initial.sql
# psql roundcube_db
roundcube_db=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO roundcube_user;
GRANT
roundcube_db=# GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO roundcube_user;
GRANT

Importante! asegurate que se crean correctamente con \dt+ (si no lo hacen, crealas manualmente copiando y pegando el contenido del fichero sql)

Fuente: roundcubeforum

A partir de aquí la apariencia funciona correctamente pero no conecta con el servidor radicale de modoboa...

Nota: El servidor que estoy instalando está detrás de un frontal de nginx, así que a la configuración de modoboa en parameters>radicale he tenido que poner http://mail.capa8.net/radicale/ (cambiar el https por http). Sin cambiar esto, no podía crear calendarios
Nota: He conseguido que el calendario permita crear calendarios, pero tiene pinta que lo está haciendo en la base de datos local, no en el radicale

Nota: cuando activas el caldav en el fichero de configuración de calendar/config.inc.php falla porqué no encuentra Request2, es necesario instalar la librería manualmente desde la carpeta raiz de roundcube con: php composer.phar require pear/http_request2

Nota: ahora estoy atascada aquí:

  580  ps aux | grep radicale
  581  kill 1110
  582  ps aux | grep radicale
  583  sudo -u radicale /srv/radicale/env/bin/python3 /srv/radicale/env/bin/radicale -C /etc/radicale/config 

[2025-07-21 15:29:09 +0200] [2322351/Thread-1 (process_request_thread)] [INFO] Authentication request (dovecot): 'laura@coloriuris.org'
[2025-07-21 15:29:09 +0200] [2322351/Thread-1 (process_request_thread)] [INFO] Successful login: 'laura@xxx.org' (dovecot)
[2025-07-21 15:29:09 +0200] [2322351/Thread-1 (process_request_thread)] [INFO] Access to '/' denied for 'laura@xxx.org'
[2025-07-21 15:29:09 +0200] [2322351/Thread-1 (process_request_thread)] [INFO] PROPFIND response status for '/' with depth '1' in 0.117 seconds: 403 Forbidden

# he comentado las líneas en el config.inc.php global y lo he puesto aquí
root@vm2:/var/www/roundcube/plugins/calendar# vi config.inc.php
$config['calendar_driver'] = 'caldav';
$config['calendar_caldav_server'] = "http://localhost:5232/";
$config['caldav_calendar_url'] = 'http://localhost:5232/%u/%n';
$config['caldav_auth_method'] = 'basic';
$config['caldav_calendar_discovery'] = true;
$config['caldav_contact_discovery'] = true; 
$config['caldav_user_from_session'] = true;
$config['caldav_password_from_session'] = true;

Mirar esto: Directory listings are not supported. que no sea que al no permitir listados esté dando el error que no puede acceder a /, mirar configuración de radicale /etc/radicale/config (si activas la configuración de logs, peta, tienes que matar el servicio y ejecutarlo como el history 583

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

This site uses Akismet to reduce spam. Learn how your comment data is processed.