Radicale – calendario sul server con calDAV

Avevo bisogno in ufficio di gestire il calendario di 4 utenti, webcalendar comincia a mostrare segni di vecchiaia perchè non è aggiornato da febbraio 2013 e richiede apache2 e mysql, in più è pure un pò macchinoso.

Il server in ditta si trova in una rete locale dove tutte le porte, eccetto quelle base per la comunicazione con l’esterno, sono bloccate, così mi sono potuto muovere con maggiore sicurezza nei permessi.

Ho provato radicale integrandolo a lightining di thunderbird e la cosa è piaciuta a tutti, agli utenti che si sono trovati un calendario dinamico pratico e comodamente gestibile e pure all’admin che installando 2 pacchetti nei repository in pochi passaggi si è trovato sul server un calendario facilmente integrabile a molti programmi che consuma poche risorse e si configura in 15 minuti.

vediamo ora come par partire sto benedetto calendario.

Cominciamo con installare radicale con aptitude, in jessie si trova alla versione 0.9-1, unica dipendenza oltre a python che dovreste già avere è python-radicale, 2 pacchetti in 50kB è fantastico, oppure se volete la versione aggiornata 1.1.1 da installare a mano andate nella sezione download di radicale.

Il file di configurazione principale si trova in /etc/radicale/config e come premesso all’inizio dell’articolo ho impostato il calendario senza grosse precauzioni per la sicurezza.

Questa che segue è la mia configurazione attuale funzionante:

# -*- mode: conf -*-
# vim:ft=cfg

# Config file for Radicale - A simple calendar server
#
# Place it into /etc/radicale/config (global)
# or ~/.config/radicale/config (user)
#
# The commented out values are the defaults.


[server]
# CalDAV server hostnames separated by a comma
# IPv4 syntax: address:port
# IPv6 syntax: [address]:port
# For example: 0.0.0.0:9999, [::]:9999
# IPv6 adresses are configured to only allow IPv6 connections
hosts = 0.0.0.0:5232
# Daemon flag
daemon = True
# File storing the PID in daemon mode
pid =
# SSL flag, enable HTTPS protocol
#ssl = False
# SSL certificate path
#certificate = /etc/apache2/ssl/server.crt
# SSL private key
#key = /etc/apache2/ssl/server.key
# SSL Protocol used. See python's ssl module for available values
#protocol = PROTOCOL_SSLv23
# Ciphers available. See python's ssl module for available ciphers
#ciphers =
# Reverse DNS to resolve client address in logs
#dns_lookup = True
# Root URL of Radicale (starting and ending with a slash)
base_prefix = /
# Possibility to allow URLs cleaned by a HTTP server, without the base_prefix
#can_skip_base_prefix = False
# Message displayed in the client when a password is needed
realm = Radicale - Password Required


[encoding]
# Encoding for responding requests
request = utf-8
# Encoding for storing local collections
stock = utf-8

[auth]
# Authentication method
# Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom
#type = htpasswd

# Custom authentication handler
#custom_handler =

# Htpasswd filename
#htpasswd_filename = /etc/radicale/users
# Htpasswd encryption method
# Value: plain | sha1 | crypt
#htpasswd_encryption = crypt

# LDAP server URL, with protocol and port
#ldap_url = ldap://localhost:389/
# LDAP base path
#ldap_base = ou=users,dc=example,dc=com
# LDAP login attribute
#ldap_attribute = uid
# LDAP filter string
# placed as X in a query of the form (&(...)X)
# example: (objectCategory=Person)(objectClass=User)(memberOf=cn=calenderusers,ou=users,dc=example,dc=org)
# leave empty if no additional filter is needed
#ldap_filter =
# LDAP dn for initial login, used if LDAP server does not allow anonymous searches
# Leave empty if searches are anonymous
#ldap_binddn =
# LDAP password for initial login, used with ldap_binddn
#ldap_password =
# LDAP scope of the search
#ldap_scope = OneLevel

# IMAP Configuration
#imap_hostname = localhost
#imap_port = 143
#imap_ssl = False

# PAM group user should be member of
pam_group_membership =

# Path to the Courier Authdaemon socket
courier_socket =

# HTTP authentication request URL endpoint
http_url =
# POST parameter to use for username
http_user_parameter =
# POST parameter to use for password
http_password_parameter =


[git]
# Git default options
#committer = Radicale <radicale@example.com>


[rights]
# Rights backend
# Value: None | authenticated | owner_only | owner_write | from_file | custom
#type = None
#type = authenticated

# Custom rights handler
#custom_handler =

# File for rights management from_file
#file = ~/.config/radicale/rights


[storage]
# Storage backend
# Value: filesystem | multifilesystem | database | custom
type = filesystem

# Custom storage handler
#custom_handler =

# Folder for storing local collections, created if not present
#filesystem_folder = /var/lib/radicale/collections
filesystem_folder = /home/collections

# Database URL for SQLAlchemy
# dialect+driver://user:password@host/dbname[?key=value..]
# For example: sqlite:///var/db/radicale.db, postgresql://user:password@localhost/radicale
# See http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#sqlalchemy.create_engine
#database_url =

[logging]
# Logging configuration file
# If no config is given, simple information is printed on the standard output
# For more information about the syntax of the configuration file, see:
# http://docs.python.org/library/logging.config.html
#config = /etc/radicale/logging
# Set the default logging level to debug
#debug = False
# Store all environment variables (including those set in the shell)
#full_environment = False


# Additional HTTP headers
#[headers]
#Access-Control-Allow-Origin = *

alcune opzioni non necessarie, le ho abilitate per fare dei test, maggiori informazioni sulla configurazione si possono trovare qui.

NOTE

  • Un’ottima guida da seguire la potete trovare a questo link.
  • Occorre prestare molta attenzione a chi esegue il comando radicale perchè sarà colui che avrà i permessi del servizio, quindi per scrupolo si potrebbe creare un nuovo utente dedicato per l’esecuzione del servizio.
  • All’avvio ci potrebbe essere un errore per la mancanza della directory dei log, in questo caso createla con i giusti permessi /var/log/radicale/.
  • Come altra nota riguardo l’avvio in automatico del programma (/etc/default/) ho preferito mettere in crontab all’user dedicato l’esecuzione del servizio
@reboot /usr/bin/radicale -d
  • Per implementare la sicurezza si può usare l’autenticazione e in questo caso con il comando htpasswd contenuto nel pacchetto apache2-utils si generano le password nel formato desiderato, occorre cambiare la configurazione nella sezione delle autorizzazioni.

 

  • CalDav

Ora non ci resta che aprire lightning e generare un nuovo calendario di tipo CalDAV e inserire http://localhost:5232/user/calendar.ics/ e il gioco è fatto, nella cartella da noi impostata nella sotto cartella con il nome dell’user si troverà il file .ics.

Si possono usare più calendari così mi riesce comodo gestire e programmare anche i calendari di altri utenti.

Si possono fissare appuntamenti anche per amici, se un appuntamento viene associato ad un indirizzo email, a questo verrà inviato un file che potrà essere importato da una qualsiasi app.

Se si mette il calendario su HTTPS con autenticazione e possibile con DavDroid usare il calendario sul nostro cellulofono con l’androide.

 

  • CardDav

Per avere la rubrica su radicale occorre scaricare l’estensione SOGo Connector da questo link :https://sogo.nu/download.html#/frontends

Basta aprire la rubrica e selezionare nuova –> rubrica remota, ora inseriamo l’indirizzo http://localhost:5232/user/addressbook.vcf/.

 

 

😉

 

Centralizzate le vostre app in modo sicuro, non lasciate i vostri dati in mano ad altri

Buon divertimento

Rispondi