Skip to main content

Radicale: Servidor de calendario, notas y contactos autohospedado


Introducción

Radicale es un servidor de calendario, notas y contactos compatible con CalDAV y CardDAV, diseñado para ser ligero y fácil de usar. En este artículo, veremos cómo instalarlo utilizando Docker y configurar adecuadamente sus archivos esenciales.


Instalación

Para instalar Radicale utilizando Docker, seguimos estos pasos:

  1. Clonar el repositorio oficial

    git clone https://github.com/tomsquest/docker-radicale
    cd docker-radicale
    
  2. Editar el archivo docker-compose.yml El archivo de docker-compose.yml debe incluir la siguiente configuración:

    services:
      radicale:
        image: tomsquest/docker-radicale
        container_name: Radicale
        ports:
          - 5232:5232
        init: true
        read_only: true
        security_opt:
          - no-new-privileges:true
        cap_drop:
          - ALL
        cap_add:
          - SETUID
          - SETGID
          - CHOWN
          - KILL
        deploy:
          resources:
            limits:
              memory: 256M
              pids: 50
        healthcheck:
          test: curl -f http://127.0.0.1:5232 || exit 1
          interval: 30s
          retries: 3
        restart: unless-stopped
        volumes:
          - ./data:/data
          - ./config:/config
    networks:
      default:
        name: Radicale_NET
    

    En este caso, la carpeta config es esencial, ya que contendrá el archivo de configuración.

  3. Crear el archivo de configuración Para configurar el servicio, debemos crear la carpeta config y el archivo config dentro de ella:

    mkdir config
    touch config/config
    

    Luego, agregamos el siguiente contenido en config/config:

    [server]
    hosts = 0.0.0.0:5232
    
    [auth]
    type = htpasswd
    htpasswd_filename = /config/users
    htpasswd_encryption = bcrypt
    
    [storage]
    filesystem_folder = /data/collections
    
    [web]
    type = internal
    

    Esta configuración está basada en una autenticación mediante htpasswd. Sin embargo, hay más parámetros disponibles para una configuración más avanzada. Puedes consultar una versión más completa del archivo de configuración en el siguiente enlace: Archivo de configuración completo en Gitea

  4. Crear el archivo de usuarios Para gestionar los accesos, necesitamos un archivo de usuarios. Lo creamos así:

    touch config/users
    

    Dentro de config/users, añadimos un usuario con contraseña encriptada con bcrypt. Un ejemplo:

    user1:$2y$10$7dxxxxxxxxE/iuBXWZuFxxxxxxxxxxxUB798xxxxxxxxxxQW
    

    Podemos generar el hash bcrypt usando el siguiente comando en local:

    htpasswd -bnBC 10 "user1" "contraseña" | tr -d ':
    

    O también podemos generarlo en línea en AskApache Htpasswd Generator, seleccionando bcrypt como algoritmo de encriptación.

  5. Levantar el contenedor Una vez creados los archivos de configuración, podemos iniciar el contenedor:

    docker-compose up -d
    

    Esto iniciará el servicio en segundo plano.

Si es necesario, podemos detener el contenedor y modificar los archivos antes de reiniciarlo con:

docker-compose down
docker-compose up -d

Hacer público el acceso a Radicale

Si deseas hacer que Radicale sea accesible públicamente para poder conectarte a tus calendarios desde cualquier lugar, puedes utilizar Caddy como proxy inverso.

La configuración de Caddy sería la siguiente:

# Radicale
radicale.tudominio.es {
    reverse_proxy http://192.168.1.8:5232 {
    }
}

Donde http://192.168.1.8:5232 es la IP y el puerto del servidor Radicale. Si has elegido otro puerto o IP, cámbialo en consecuencia.

Una vez que accedas a tu nueva URL pública, podrás iniciar sesión con el usuario y la contraseña configurados previamente (la contraseña en texto plano que elegiste, no la versión encriptada con bcrypt). Desde ahí, podrás crear calendarios y sincronizarlos con distintas aplicaciones compatibles con CalDAV/CardDAV.


Conclusión

Con estos pasos, Radicale queda instalado y configurado correctamente en un entorno Docker. Ahora podemos acceder a su interfaz web o configurar clientes compatibles con CalDAV/CardDAV para sincronizar nuestros calendarios y contactos.


Referencias