Adiós GCalendar. Hola Radicale

· 5 min · @Self-Hosting · #VPS #Docker

A partir de este articulo de Carlos M.., del que sigo tanto su blog como su canal de Mastodon, me picó la curiosidad de si yo también podría tener un calendario ajeno al control de Google y si le sacaría todo el partido para ello.

Pues qué queréis que os diga, si con el calendario de Google lo uso para apuntar 3 notas, ¿por qué no voy a sacarle partido a mi propio calendario, pero controlado por mí? Aparte de que también permite tener tu propia agenda de contactos y que esta no esté al alcance de Google.

Entonces me empapé con el articulo de Carlos M.. y busqué toda la información posible sobre la aplicación que él estaba usando, Radicale.

En principio, cuesta un poco entender el funcionamiento que tiene, pero lo explicaré en lengua vernácula para que todos nos podamos entender. Radicale es un servidor de calendarios donde tú los creas y luego, con diferentes aplicaciones, usas esos calendarios que has creado.

nota: Como ya he informado, Radicale también permite tener una agenda de contactos, de la que también haré uso, y así no tenerla vinculada por la cuenta de Google, pero eso no quita que los contactos que tengo en mi cuenta de GMail los vaya a borrar. Me servirán como copia de respaldo por si algún día pasa alguna cosa.

Cuando ya tenemos claro lo que queremos hacer, ahora viene la parte más fácil o difícil, según se mire: la instalación del mismo. Pero gracias a Docker y a la búsqueda de información de cómo se hace, se vuelve muy fácil.

Lo primero es el docker-compose.yml, que en mi caso es el siguiente:

radicale:
 image: grepular/radicale:3
 container_name: calendarRadicale
 restart: unless-stopped
 networks:
   - proxy
 user: root
 volumes:
   - ${HOME}/config/radicale/config:/etc/radicale/config:ro
   - ${HOME}/config/radicale/users:/etc/radicale/users:ro
   - ${HOME}/config/radicale/data:/var/lib/radicale
 labels:
   - traefik.enable=true
   - traefik.http.services.radicale.loadbalancer.server.port=5232
   - traefik.http.routers.radicale.entrypoints=websecure
   - traefik.http.routers.radicale.rule=Host(`${RADICALE_SERVER}`)
   - traefik.http.routers.radicale.middlewares=cors-headers@docker
   - traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*
   - traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization
   - traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS

Como os podéis dar cuenta, también he añadido las etiquetas de Traefik para que así me dé un plus más de seguridad, aparte de toda la que ya tiene (que nunca es poca).

Aunque si vais a esta dirección, podéis encontrar el Docker que os facilita la propia aplicación de Radicale.

nota: Lo que sí que tenéis que tener en cuenta es que, antes de iniciar el servicio de Docker de Radicale, tenéis que haber creado los siguientes ficheros:

  • config.yml, donde estará la configuración del servicio.
  • user, donde estarán los usuarios que tienen acceso al servicio.

En el caso de la configuración, en la página web de Radicale, más concretamente en su GitHub, podéis encontrar el fichero de configuración por defecto, el cual luego puedes modificar a tu gusto.

Luego pasamos a añadir los usuarios que tendrán acceso. Esto se hace mediante htpasswd -B -c /path/to/users usuari; luego te pide la contraseña para ese usuario. Una vez has ejecutado esta instrucción, te aparece el fichero users con el siguiente formato:

usuari:password_encriptat

Cuando ya tenemos el fichero de configuración y el fichero de usuarios, ahora sí que podemos instalar el contenedor de Radicale mediante la famosa invocación a nuestro dios Docker Compose 😂

Después de esto, ya tenemos instalado nuestro propio calendario; ahora solo hace falta acceder a él y empezar a crear los calendarios que necesitemos.

nota: En mi caso, lo que he hecho ha sido descargar el calendario tanto de aniversarios como de tareas que ya tenía en Google Calendar y los he importado a Radicale.

Para importar los calendarios, una vez los has descargado de Google, accedes a tu servidor de calendarios y accedes a la opción de la flecha azul:

Te pide el fichero, lo seleccionas y listo. Lo único que te queda es cambiar el nombre del calendario y listo.

nota: Lo que sí que he visto es que hay unos plugins para modificar las funcionalidades del calendario, como cambiar la visualización de la web y que se pueda ver el calendario, pero no he descubierto cómo hacerlo. Además, como lo voy a usar, de momento, solo en el móvil, pues…

Una vez ya tenemos todo preparado y configurado en el servidor, en mi caso me falta la configuración de mi móvil, que es donde más lo voy a utilizar. Lo primero es instalar la aplicación DAVx5 para tener acceso a los calendarios.

nota: No voy a explicar cómo se hace la configuración de esta APK, que se puede descargar en F-Droid, porque podéis encontrar mucha información al respecto. Lo que sí que voy a comentar es lo que hice después de tener configurado el acceso y la sincronización de mis calendarios.

Una vez que tenía esta parte hecha, me puse a buscar la mejor aplicación de calendario que al menos no compartiera mis datos con todo el mundo y encontré 3 candidatos:

  • Etar

  • ICSx

    • De los mismos creadores que DAVx5
  • ACalendar

    • Que me la recomendó, cómo no, Carlos M.

Pero quería algo lo más libre posible, porque si había salido de la sartén de Google, no quería caer en las brasas de otro, y quién mejor que la IA para aclarar estas dudas.

Le puse las 3 aplicaciones y que tenían que cumplir con estos 3 requisitos; si no todos, al menos el primero y el segundo. Estos requisitos son:

  • Funcionar con el servidor Radicale
  • Ser Open Source
  • No compartir mis datos con otras empresas

El único que cumplía con estos 3 requisitos era Etar, así que lo he instalado y de momento no estoy teniendo ningún problema y no tiene nada que envidiar al resto.

Pero aún no ha llegado ningún día con alguna tarea pendiente, así que a ver cómo funciona y cómo se comporta llegado ese día.

◇ Referencia