Migration from 1.x.x to 2.x.x
Why a Migration?
Radicale 2.x.x is different from 1.x.x, here’s everything you need to know about
this! Please read this page carefully if you want to update Radicale.
You’ll also find extra information
in issue #372.
Python 3 Only
Radicale 2.x.x works with Python >= 3.3, and doesn’t work anymore with
(No, Python 3.3 is not new, it’s been released more than 4 years ago.
Debian stable provides Python 3.4.)
Radicale now depends on VObject, a
“full-featured Python package for parsing and creating iCalendar and vCard
files”. That’s the price to pay to correctly read crazy iCalendar files and
support date-based filters, even on recurring events.
Calendars and address books are stored in a different way between 1.x.x and 2.x.x
versions. Launching 2.x.x without migrating your collections first will not
work, Radicale won’t be able to read your previous data.
There’s now only one way to store data in Radicale: collections are stored as
folders and events / contacts are stored in files. This new storage is close to
multifilesystem, but it’s now thread-safe, with atomic writes and file
locks. Other storage types can be used by creating
To migrate data to Radicale 2.x.x the command line argument
--export-storage was added to Radicale 1.1.x.
Start Radicale 1.x.x as you would normally do, but add the argument
--export-storage path/to/empty/folder. Radicale will export the storage
into the specified folder. This folder can be directly used with the
default storage backend of Radicale 2.x.x.
If you import big calendars or address books into Radicale 2.x.x the first
request might take a long time, because it has to initialize its internal
caches. Clients can time out, subsequent requests will be much faster.
You can check the imported storage for errors by starting Radicale >= 2.1.5
You can install version 1.1.6 with:
$ python3 -m pip install --upgrade radicale==1.1.6
Radicale 2.x.x only provides htpasswd authentication out-of-the-box. Other
authentication methods can be added by creating or using
In Radicale 2.x.x, rights are managed using regex-based rules based on the
login of the authenticated user and the URL of the resource. Default
configurations are built in for common cases, you’ll find more about this on
the Authentication & Rights page.
Other rights managers can be added by creating
Support for versioning with git was removed from Radicale 2.x.x.
Instead, the configuration option
hook in the
storage section was added,
the Collection Versioning page explains its
usage for version control.