Radicale¶
Radicale is a Free and Open-Source CalDAV and CardDAV Server.
Shares calendars through CalDAV, WebDAV and HTTP.
Shares contacts through CardDAV, WebDAV and HTTP.
Supports events, todos, journal entries and business cards.
Works out-of-the-box, no installation nor configuration required.
Can warn users on concurrent editing.
Can limit access by authentication.
Can secure connections.
Works with many CalDAV and CardDAV clients.
Is GPLv3-licensed free software.
Prerequisites¶
Your radicale URL needs to be setup:
[isabell@stardust ~]$ uberspace web domain list
isabell.uber.space
[isabell@stardust ~]$
The configuration directory needs to be created:
[isabell@stardust ~] mkdir -p ~/.config/radicale/
Installation¶
Download Sources¶
download the latest version and install bcrypt for storing hashed passwords.
[isabell@stardust ~]$ python3 -m pip install --user --upgrade radicale bcrypt passlib
Collecting radicale
Using cached https://files.pythonhosted.org/packages/be/50/b5094950d53f11e56eb17932469e0e313275da0c5e633590c939863f3c37/Radicale-2.1.11.tar.gz
Requirement already up-to-date: bcrypt in ./.local/lib/python3.4/site-packages
Requirement already up-to-date: vobject>=0.9.6 in ./.local/lib/python3.4/site-packages (from radicale)
Collecting python-dateutil>=2.7.3 (from radicale)
Using cached https://files.pythonhosted.org/packages/74/68/d87d9b36af36f44254a8d512cbfc48369103a3b9e474be9bdfe536abfc45/python_dateutil-2.7.5-py2.py3-none-any.whl
Requirement already up-to-date: six>=1.4.1 in ./.local/lib/python3.4/site-packages (from bcrypt)
Requirement already up-to-date: cffi>=1.1 in ./.local/lib/python3.4/site-packages (from bcrypt)
Collecting pycparser (from cffi>=1.1->bcrypt)
Using cached https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz
Installing collected packages: python-dateutil, radicale, pycparser
Found existing installation: python-dateutil 2.7.3
Uninstalling python-dateutil-2.7.3:
Successfully uninstalled python-dateutil-2.7.3
Found existing installation: Radicale 2.1.10
Uninstalling Radicale-2.1.10:
Successfully uninstalled Radicale-2.1.10
Running setup.py install for radicale ... done
Found existing installation: pycparser 2.18
Uninstalling pycparser-2.18:
Successfully uninstalled pycparser-2.18
Running setup.py install for pycparser ... done
Successfully installed pycparser-2.19 python-dateutil-2.7.5 radicale-2.1.11
You are using pip version 9.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
...
[isabell@stardust ~]$
Configuration¶
Create config files¶
Save the following as your radicale configuration in ~/.config/radicale/config
.
[server]
hosts = 0.0.0.0:8000
[auth]
type = htpasswd
htpasswd_filename = /var/www/virtual/<username>/htpasswd
htpasswd_encryption = bcrypt
[storage]
filesystem_folder = ~/.var/lib/radicale/collections
For a more detailed configuration look here.
Setup daemon¶
Create a file ~/etc/services.d/radicale.ini
and put the following in it:
[program:radicale]
command=radicale
Finishing installation¶
Add a user¶
For the generation of the file with the user use this command:
[isabell@stardust ~]$ htpasswd -B -c /var/www/virtual/$USER/htpasswd isabell
New password:
Re-type new password:
[isabell@stardust ~]$
It will prompt you for a password now.
For every following user use it without -c
:
[isabell@stardust ~]$ htpasswd -B /var/www/virtual/$USER/htpasswd isabell
New password:
Re-type new password:
[isabell@stardust ~]$
Configure web server¶
In order for your Radicale instance to be reachable from the web, you need to put a file called .htaccess
into your ~/html
folder (or any other DocumentRoot, see the document root for details), with the following content:
AuthType Basic
AuthName "Radicale - Password Required"
AuthUserFile "/var/www/virtual/<username>/htpasswd"
Require valid-user
DirectoryIndex disabled
RewriteEngine On
RewriteRule ^(.*) http://<username>.local.uberspace.de:8000/$1 [P]
Again, don’t forget to fill in your username!
Note
If you want to setup radicale to be accessible in a subfolder (not in the home directory), add the “X-Script-Name” Header to the end of the .htaccess
file:
RequestHeader set X-Script-Name /<foldername>
Start Service¶
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
And you’re done!
Updates¶
Note
Check the changelog regularly to stay informed about new updates and releases.
[isabell@stardust ~]$ python3 -m pip install --user --upgrade radicale
[isabell@stardust ~]$ supervisorctl restart radicale
radicale: stopped
radicale: started
[isabell@stardust ~]$
Tested with Radicale 2.1.11, Uberspace 7.1.17
Written by: stunkymonkey <http://stunkymonkey.de>