Install radical Raspberry feet to manage your contacts and calendars

Some do not like to have their information accessible by companies like Google, Apple or other. Whether it's for the emails, contacts or calendars, several solutions exist. This article will allow you to host you even part of these information and control access through Radical.


Radical is a solution allowing to store your contacts and calendars to your own system and make them available via the CalDAV protocols, CardDAV and WebDAV. You can manage multiple books or calendars and implement access controls. You can also store your contact cards (vCard), TODO, etc.

The list of tools supported by radical are :

[EDIT] The Nokia GDR2 adds CalDAV and CardDAV support in the Lumia under WP8.

To put this service in place :

  1. Update the system
     apt-get update && apt-get -y upgrade
  2. Radical is available through PyPi so let's install pip :
     apt - get install python-pip
  3. Start the installation of radical
    PIP radical install
  4. To run the server nothing more simple :
  5. You can now use your client to connect to the server. If you need to access from the Internet and your local network, then it will need to open port 5232 on your box and surely use a tool to find your machine (see this article).
    You will find all instructions according to the customers on this page.
    Here is an example for iCal in Mac OS :
    Radicale-1And then here is your account :
    Radicale-2It is for the basic configuration : no password protection, no SSL certificate, etc.
  6. To configure more technical and securely, simply create a directory /etc/radical, then create a file config. La configuration par défaut est la suivante :
    # 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 =
    # 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 for responding requests request = utf-8
    # Encoding for storing local collections stock = utf-8
    # 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 management method
    # Value: None | owner_only | owner_write | from_file type = None
    # File for rights management from_file file = ~/.config/radicale/rights
    # 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 database_url =
    # 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:
    # 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
    #Access-Control-Allow-Origin =. *

    Through this file you can activate SSL, change the authentication method to enable passwords, etc.
    All information and precise explanations are on this page.

  7. To enable identification by password stored in a file, you need to change the line
    type = None


    type = htpasswd

    The name of the file which will be stored identifiers is to specified line

    htpasswd_filename = / etc/radical/users

    You must then install htpasswd with :

    apt - get install apache2-utils

    To add a user :

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

    The-c option is to use that to add the first user.

  8. To share your calendar with others, It is in the section rights where you can give the name of a file containing the list of user/calendar couples with behind what user can do what. For example :
    # This means user1 may read, User2 may write, user3 has full access.
    User1: r user2: w user3: rw
  9. You can activate SSL and generate your own certificates by following the method of this 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 🙂

Like this article ? Bear with me on patreon!

You may also like...