Installer Radicale sur le Raspberry Pi pour gérer vos contacts et calendriers

Certains n’aiment pas avoir leurs informations accessibles par des entreprises comme Google, Apple ou autre. Que ce soit pour les emails, les contacts ou les calendriers, plusieurs solutions existent. Cet article va vous permettre d’héberger vous même une partie de ces informations et d’en contrôler les accès grâce à Radicale.

radicale

Radicale est une solution permettant donc de stocker vos contacts et calendriers sur votre propre système et de les mettre à disposition via les protocoles CalDAV, CardDAV et WebDAV. Vous pouvez gérer plusieurs carnets ou calendriers et mettre en place des contrôles d’accès. Vous pouvez aussi y stocker vos cartes de contacts (vCard), Todo, etc.

La liste des outils supportés par Radicale sont :

[EDIT] La GDR2 de Nokia ajoute le support CalDAV et CardDAV dans les Lumia sous WP8.

Pour mettre ce service en place :

  1. Mettre à jour le système
     apt-get update && apt-get -y upgrade
  2. Radicale est disponible via PyPi donc nous allons installer pip :
     apt-get install python-pip
  3. Lancer l’installation de Radicale
    pip install radicale
  4. Pour exécuter le serveur rien de plus simple :
    radicale
  5. Vous pouvez maintenant utiliser votre client pour vous connecter au serveur. Si vous devez y accéder depuis Internet et non votre réseau local, alors il faudra ouvrir le port 5232 sur votre box et surement utiliser un outil pour trouver votre machine (voir cet article).
    Vous retrouvez toutes les instructions en fonction des clients sur cette page.
    Voici un exemple pour iCal sous Mac OS :
    Radicale-1Et ensuite voici votre compte :
    Radicale-2C’est pour la configuration de base : pas de protection par mot de passe, pas de certificat SSL, etc.
  6. Pour configurer de manière plus technique et sécurisée, il suffit de créer un répertoire /etc/radicale, puis d’y créer un fichier config. La configuration par défaut est la suivante :
    [server]
    # CalDAV server hostnames separated by a comma
    # IPv4 syntax: address:port
    # IPv6 syntax: [address]:port
    # IPv6 adresses are configured to only allow IPv6 connections
    hosts = 0.0.0.0:5232
    # Daemon flag
    daemon = False
    # 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
    # Reverse DNS to resolve client address in logs
    dns_lookup = True
    # Root URL of Radicale (starting and ending with a slash)
    base_prefix = /
    # Message displayed in the client when a password is needed
    realm = Radicale - Password Required lol
    
    [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
    type = None
    
    # Usernames used for public collections, separated by a comma
    public_users = public
    # Usernames used for private collections, separated by a comma
    private_users = private
    # 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 =
    
    [rights]
    # Rights management method
    # Value: None | owner_only | owner_write | from_file
    type = None
    
    # File for rights management from_file
    file = ~/.config/radicale/rights
    
    [storage]
    # Storage backend
    # Value: filesystem | database
    type = filesystem
    
    # Folder for storing local collections, created if not present
    filesystem_folder = ~/.config/radicale/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 = *

    En parcourant ce fichier vous pouvez activer le SSL, changer la méthode d’authentification pour activer les mots de passe, etc.
    Toutes les informations et explications précises sont sur cette page.

  7. Pour activer l’identification par mot de passe stockés dans un fichier, vous devez changer la ligne
    type = None

    par

    type = htpasswd

    Le nom du fichier où va être stocké les identifiants est à précisé à la ligne

    htpasswd_filename = /etc/radicale/users

    Vous devez ensuite installer htpasswd avec :

    apt-get install apache2-utils

    Pour ajouter un user :

    htpasswd -c /etc/radicale/users chris
    New password:
    Re-type new password:
    Adding password for user chris

    L’option -c n’est à utiliser que pour ajouter le premier user.

  8. Pour partager votre calendrier avec d’autres personnes, c’est dans la section rights où vous pouvez donner le nom d’un fichier qui contiendra la liste des couples utilisateur/calendrier avec derrière quel utilisateur peut faire quoi. Par exemple :
    # This means user1 may read, user2 may write, user3 has full access.
    [user0/calendar]
    user1: r
    user2: w
    user3: rw
  9. Vous pouvez enfin activer le SSL et générer vos propres certificats en suivant la méthode de cet article.

Ce n’est pas le genre d’outil que je vais utiliser chez moi mais j’espère que ça pourra vous aider dans votre quête de l’indépendance 🙂

Vous aimerez aussi...

  • Salut

    Tu devrais publier ce genre de billet conjointement sur le planet auto-hébergement. Ce serait tout à fait approprié. (planet.auto-hebergement.fr)

  • xXAzazelXx

    Hey,
    Great guide! Sorry I don’t speak French and I’m using Google Translate, but could you please explain how to make this SSL secure?
    I assume with ssl = False , all the data travels in plain HTTP.
    Do I need to generate some keys with Putty?

    Thanks

  • sur mon raspberry j’ai mis en place la solution tine20 c’est un logicile qui fait pareil mais gère le push. Tout est donc toujours à jour sur un simple port 80 ou 443.
    Et en plus ça permet de mutualiser avec sa famille les coordonnées de certaines personnes (connaissances communes)