2009-07-29 17:19:55 +02:00
|
|
|
|
====================
|
|
|
|
|
User Documentation
|
|
|
|
|
====================
|
|
|
|
|
|
2012-07-05 22:38:25 +03:00
|
|
|
|
:Author: Guillaume Ayoub, Daniel Aleksandersen
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
2012-07-05 22:38:25 +03:00
|
|
|
|
:Date: 2012-07-05
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
:Abstract: This document is a short description for installing and using the
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Radicale calendar and contact Server.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
.. contents::
|
2012-03-22 10:10:08 +01:00
|
|
|
|
:depth: 3
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
Installation
|
|
|
|
|
============
|
|
|
|
|
|
|
|
|
|
Dependencies
|
|
|
|
|
------------
|
|
|
|
|
|
2012-07-17 12:53:47 +10:00
|
|
|
|
Radicale is written in pure Python and does not depend on any library. It is
|
2012-02-13 08:33:16 +01:00
|
|
|
|
known to work on Python 2.6, 2.7, 3.1, 3.2 and PyPy > 1.7. The dependencies are
|
|
|
|
|
optional, as they are only needed for various authentication methods [#]_.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
2011-10-19 19:30:13 +02:00
|
|
|
|
Linux and MacOS users certainly have Python already installed. For Windows
|
2010-01-11 12:18:15 +01:00
|
|
|
|
users, please install Python [#]_ thanks to the adequate installer.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
2010-04-10 01:33:58 +02:00
|
|
|
|
.. [#] See `Python Versions and OS Support`_ for further information.
|
2010-01-22 19:29:03 +01:00
|
|
|
|
|
2009-07-29 17:19:55 +02:00
|
|
|
|
.. [#] `Python download page <http://python.org/download/>`_.
|
|
|
|
|
|
|
|
|
|
Radicale
|
|
|
|
|
--------
|
|
|
|
|
|
|
|
|
|
Radicale can be freely downloaded on the `project website, download section
|
|
|
|
|
<http://www.radicale.org/download>`_. Just get the file and unzip it in a
|
|
|
|
|
folder of your choice.
|
|
|
|
|
|
|
|
|
|
CalDAV Clients
|
|
|
|
|
--------------
|
|
|
|
|
|
2012-07-17 12:53:47 +10:00
|
|
|
|
At this time Radicale has been tested and works fine with the latest version
|
2011-01-26 02:35:52 +01:00
|
|
|
|
of:
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
2011-01-26 02:35:52 +01:00
|
|
|
|
- `Mozilla Lightning <http://www.mozilla.org/projects/calendar/lightning/>`_
|
|
|
|
|
- `GNOME Evolution <http://projects.gnome.org/evolution/>`_
|
2011-07-03 01:34:30 +02:00
|
|
|
|
- `KDE KOrganizer <http://userbase.kde.org/KOrganizer/>`_
|
|
|
|
|
- `aCal <http://wiki.acal.me/wiki/Main_Page>`_ for `Google Android
|
|
|
|
|
<http://www.android.com/>`_
|
2011-04-02 20:49:33 +02:00
|
|
|
|
- `Apple iPhone <http://www.apple.com/iphone/>`_
|
2011-06-26 14:18:27 +02:00
|
|
|
|
- `Apple iCal <http://www.apple.com/macosx/apps/>`_
|
2011-01-26 02:35:52 +01:00
|
|
|
|
|
|
|
|
|
More clients will be supported in the future. However, it may work with any
|
2012-03-22 01:49:28 +01:00
|
|
|
|
calendar or contact client which implements CalDAV or CardDAV specifications
|
2012-07-17 12:53:47 +10:00
|
|
|
|
too (luck is highly recommended).
|
2011-01-26 02:35:52 +01:00
|
|
|
|
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
Simple Usage
|
|
|
|
|
============
|
|
|
|
|
|
2011-01-26 02:35:52 +01:00
|
|
|
|
Starting the Server
|
|
|
|
|
-------------------
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
To start Radicale CalDAV server, you have to launch the file called
|
2010-01-22 19:29:03 +01:00
|
|
|
|
``radicale.py`` located in the root folder of the software package.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
2011-01-26 02:35:52 +01:00
|
|
|
|
Starting the Client
|
|
|
|
|
-------------------
|
|
|
|
|
|
2011-04-02 20:49:33 +02:00
|
|
|
|
Lightning
|
|
|
|
|
~~~~~~~~~
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
2011-04-02 20:49:33 +02:00
|
|
|
|
After starting Lightning, click on ``File`` and ``New Calendar``. Upcoming
|
|
|
|
|
window asks you about your calendar storage. Chose a calendar ``On the
|
|
|
|
|
Network``, otherwise Lightning will use its own file system storage instead of
|
|
|
|
|
Radicale's one and your calendar won't be remotely accessible.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
Next window asks you to provide information about remote calendar
|
2011-04-02 20:49:33 +02:00
|
|
|
|
access. Protocol used by Radicale is ``CalDAV``. A standard location for a
|
|
|
|
|
basic use of a Radicale calendar is ``http://localhost:5232/user/calendar/``,
|
|
|
|
|
where you can replace ``user`` and ``calendar`` by some strings of your
|
2010-02-11 01:54:58 +01:00
|
|
|
|
choice. Calendars are automatically created if needed.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
You can now customize your calendar by giving it a nickname and a color. This
|
2011-04-02 20:49:33 +02:00
|
|
|
|
is only used by Lightning to identify calendars among others.
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
If no warning sign appears next to the calendar name, you can now add events
|
|
|
|
|
and tasks to your calendar. All events and tasks are stored in the server, they
|
|
|
|
|
can be accessed and modified from multiple clients by multiple users at the
|
|
|
|
|
same time.
|
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Lightning and Thunderbird cannot access CardDAV servers yet.
|
|
|
|
|
|
2011-01-26 02:35:52 +01:00
|
|
|
|
Evolution
|
|
|
|
|
~~~~~~~~~
|
2010-04-19 16:43:46 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Calendars
|
|
|
|
|
+++++++++
|
|
|
|
|
|
2010-04-19 16:43:46 +02:00
|
|
|
|
First of all, show the calendar page in Evolution by clicking on the calendar
|
|
|
|
|
icon at the bottom of the side pane. Then add a new calendar by choosing in the
|
2011-06-08 08:30:37 +02:00
|
|
|
|
menu ``File → New → Calendar``.
|
2010-04-19 16:43:46 +02:00
|
|
|
|
|
|
|
|
|
A new window opens. The calendar ``type`` is ``CalDAV``, and the location is
|
2012-03-22 01:49:28 +01:00
|
|
|
|
something like ``caldav://localhost:5232/user/calendar.ics/``, where you can
|
2010-06-24 01:54:25 +02:00
|
|
|
|
replace ``user`` and ``calendar`` by some strings of your choice. Calendars are
|
|
|
|
|
automatically created if needed.
|
|
|
|
|
|
|
|
|
|
You can fill other attributes like the color and the name, these are only used
|
|
|
|
|
for Evolution and are not uploaded.
|
2010-04-19 16:43:46 +02:00
|
|
|
|
|
|
|
|
|
Click on ``OK``, and your calendar should be ready for use.
|
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Contacts
|
|
|
|
|
++++++++
|
|
|
|
|
|
|
|
|
|
*To be written*
|
|
|
|
|
|
2011-07-03 01:34:30 +02:00
|
|
|
|
KOrganizer
|
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
2012-11-27 12:40:40 +01:00
|
|
|
|
*Tested with 4.8.3, you need one running on Akonadi for Cal/CarDav support.*
|
2012-11-27 12:32:30 +01:00
|
|
|
|
|
|
|
|
|
The procedure below can also be done trough the sidebar "Calendar Manager".
|
|
|
|
|
But to ensure it works for everyone this examples uses the menu-bar.
|
|
|
|
|
|
|
|
|
|
1. Click ``Settings -> Configure KOrganizer``.
|
|
|
|
|
2. Click on ``General -> Calendars``.
|
|
|
|
|
3. Click on ``Add``.
|
|
|
|
|
4. Choice ``DAV groupware resource`` (and click ``OK``).
|
|
|
|
|
5. Enter your username/passord (and click on ``Next``).
|
|
|
|
|
6. Select ``Configure the resource manually`` (and click on ``Finish``).
|
|
|
|
|
7. Fill in a Display name.
|
|
|
|
|
8. Fill in your Username and Password.
|
|
|
|
|
9. Click ``Add``.
|
|
|
|
|
10. Choice ``CalDav``. (CardDav might also work, didn't test.)
|
|
|
|
|
11. For remote URL enter http://myserver:5232/Username/Calandar
|
|
|
|
|
12. Click ``Fetch``.
|
|
|
|
|
13. Select desired calendar.
|
|
|
|
|
14. Hit ``OK``.
|
|
|
|
|
15. Hit ``OK`` again.
|
|
|
|
|
16. Close the Configuration Window (Click ``OK``).
|
|
|
|
|
17. Restart Korganizer for the calendar to appear in the "Calendar Manager" sidebar :(. (At least with version 4.8.3.)
|
|
|
|
|
|
2012-11-27 12:40:40 +01:00
|
|
|
|
.. note::
|
|
|
|
|
After you created a calender in a collection you can also use http://myserve:5232/Username/ as an URL
|
|
|
|
|
This will then list all available calendars.
|
2012-11-27 12:32:30 +01:00
|
|
|
|
|
2011-07-03 01:34:30 +02:00
|
|
|
|
|
2011-07-31 23:43:47 +02:00
|
|
|
|
CalDAV-Sync
|
|
|
|
|
~~~~~~~~~~~
|
|
|
|
|
|
2011-08-29 17:43:45 +02:00
|
|
|
|
CalDAV-Sync is implemented as sync adapter to integrate seamlessly with
|
|
|
|
|
any calendar app and widget. Therefor you have to access it via
|
|
|
|
|
``Accounts & Sync`` settings after installing it from the Market.
|
|
|
|
|
|
|
|
|
|
So, to add new calendars to your phone open ``Accounts & Sync`` settings
|
|
|
|
|
and tap on ``Add account``, selecting CalDAV as type. In the next view,
|
|
|
|
|
you have to switch to Manual Mode. Enter the full CalDAV URL of your Radicale
|
|
|
|
|
account (e.g. http://example.com:5232/Username/) and corresponding login data.
|
|
|
|
|
|
|
|
|
|
Tap on ``Next`` and the app checks for all available calendars
|
|
|
|
|
on your account, listing them in the next view. You can now select calendars
|
|
|
|
|
you want to sync and set a local nickname and color for each. Hitting ``Next``
|
|
|
|
|
again brings up the last page. Enter your email address and uncheck ``Sync
|
|
|
|
|
from server to phone only`` if you want to use two-way-sync.
|
|
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
CalDAV-Sync officially is in alpha state and two-way-sync is marked as
|
|
|
|
|
an experimental feature. Tough it works fine for me, using two-way-sync
|
|
|
|
|
is on your own risk!
|
|
|
|
|
|
|
|
|
|
Tap on ``Finish`` and you're done. You're now able to use the new calendars
|
|
|
|
|
in the same way you were using Google calendars before.
|
|
|
|
|
|
2012-03-22 11:32:11 +01:00
|
|
|
|
CardDAV-Sync
|
|
|
|
|
~~~~~~~~~~~~
|
2012-03-22 01:49:28 +01:00
|
|
|
|
|
|
|
|
|
*To be written*
|
|
|
|
|
|
2011-07-31 23:43:47 +02:00
|
|
|
|
aCal
|
|
|
|
|
~~~~
|
2011-01-26 02:35:52 +01:00
|
|
|
|
|
2011-10-03 00:19:25 +02:00
|
|
|
|
aCal is a CalDAV client for Android. It comes with its own calendar application
|
|
|
|
|
and does not integrate in the Android calendar. It is a "CalDAV only" calendar,
|
|
|
|
|
i.e. it only works in combination with a CalDAV server. It can connect to
|
|
|
|
|
several calendars on the server and will display them all in one calendar. It
|
|
|
|
|
works nice with Radicale.
|
|
|
|
|
|
|
|
|
|
To configure aCal, start aCal, go to the ``Settings`` screen, select
|
|
|
|
|
``Server``, then ``Add server``. Choose ``Manual Configuration`` and select
|
|
|
|
|
``Advanced`` (bottom of the screen). Then enter the host name of your server,
|
|
|
|
|
check ``Active``, enter your user name and password. The ``Simple Domain`` of
|
|
|
|
|
your server is the domain part of your fully qualified host name (e.g. if your
|
|
|
|
|
server is ``myserver.mydomain.org``, choose ``mydomain.org``).
|
|
|
|
|
|
|
|
|
|
As ``Simple Path`` you need to specify ``/<user>`` where user is the user you
|
|
|
|
|
use to connect to Radicale. ``Server Name`` is the fully qualified name of your
|
|
|
|
|
server machine (``myserver.mydomain.org``). The ``Server Path`` is
|
|
|
|
|
``/<user>/``.
|
|
|
|
|
|
|
|
|
|
For ``Authentication Type`` you need to specify the method you chose for
|
|
|
|
|
Radicale. Check ``Use SSL`` if your Radicale is configured to use SSL.
|
|
|
|
|
|
|
|
|
|
As the last thing you need to specify the port Radicale listens to. When your
|
|
|
|
|
server is configured you can go back to the first ``Settings`` screen, and
|
|
|
|
|
select ``Calendars and Addressbooks``. You should find all the calendars that
|
|
|
|
|
are available to your user on the Radicale server. You can then configure each
|
|
|
|
|
of them (display colour, notifications, etc.).
|
2011-01-26 02:35:52 +01:00
|
|
|
|
|
2012-03-17 12:30:08 -04:00
|
|
|
|
iPhone & iPad
|
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Calendars
|
|
|
|
|
+++++++++
|
|
|
|
|
|
2012-03-17 12:30:08 -04:00
|
|
|
|
For iOS devices, the setup is fairly straightforward but there are a few settings
|
|
|
|
|
that are critical for proper operation.
|
|
|
|
|
|
|
|
|
|
1. From the Home screen, open ``Settings``
|
|
|
|
|
2. Select ``Mail, Contacts, Calendars``
|
2012-03-19 17:57:53 +01:00
|
|
|
|
3. Select ``Add Account`` → ``Other`` → ``Add CalDAV Account``
|
2012-03-17 12:30:08 -04:00
|
|
|
|
4. Enter the server URL here, including ``https``, the port, and the user/calendar
|
|
|
|
|
path, ex: ``https://myserver.domain.com:3000/bob/birthdays/``
|
|
|
|
|
5. Enter your username and password as defined in your server config
|
|
|
|
|
6. Enter a good description of the calendar in the ``Description`` field.
|
|
|
|
|
Otherwise it will put the whole servername in the field.
|
|
|
|
|
7. Now go back to the ``Mail, Contacts, Calendars`` screen and scroll down to the
|
|
|
|
|
``Calendars`` section. You must change the ``Sync`` option to sync ``All events``
|
|
|
|
|
otherwise new events won't show up on your iOS devices!
|
2011-01-26 02:35:52 +01:00
|
|
|
|
|
2012-03-17 12:30:08 -04:00
|
|
|
|
.. note::
|
|
|
|
|
Everything should be working now so test creating events and make sure they stay created.
|
|
|
|
|
If you create events on your iOS device and they disappear after the fetch period,
|
|
|
|
|
you probably forgot to change the sync setting in step 7. Likewise, if you create events
|
|
|
|
|
on another device and they don't appear on your iPad of iPhone, then make sure your sync
|
|
|
|
|
settings are correct
|
2011-01-26 02:35:52 +01:00
|
|
|
|
|
2012-07-02 14:38:43 +02:00
|
|
|
|
.. warning::
|
|
|
|
|
In iOS 5.x, please check twice that the ``Sync all entries`` option is
|
|
|
|
|
activated, otherwise some events may not be shown in your calendar.
|
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Contacts
|
|
|
|
|
++++++++
|
|
|
|
|
|
|
|
|
|
*To be written*
|
|
|
|
|
|
2011-05-07 12:57:20 +02:00
|
|
|
|
iCal
|
|
|
|
|
~~~~
|
|
|
|
|
|
2011-06-05 21:24:58 +02:00
|
|
|
|
.. note::
|
|
|
|
|
This description assumes you do not have any authentication or encryption
|
2013-04-18 17:03:37 +03:00
|
|
|
|
configured. If you want to use iCal with authentication or encryption, you
|
|
|
|
|
just have to fill in the corresponding fields in your calendar's configuration.
|
2011-06-05 21:24:58 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Calendars
|
|
|
|
|
+++++++++
|
|
|
|
|
|
2012-01-05 00:48:42 +01:00
|
|
|
|
In iCal 4.0 or iCal 5.0:
|
2011-06-05 21:24:58 +02:00
|
|
|
|
|
|
|
|
|
1. Open the ``Preferences`` dialog and select the ``Accounts`` tab
|
|
|
|
|
2. Click the ``+`` button at the lower left to open the account creation wizard
|
|
|
|
|
3. As ``Account type`` select ``CalDAV``
|
|
|
|
|
4. Select any ``User name`` you like
|
|
|
|
|
5. The ``Password`` field can be left empty (we did not configure
|
|
|
|
|
authentication)
|
|
|
|
|
6. As ``Server address`` use ``domain:port``, for example ``localhost:5232``
|
|
|
|
|
(this would be the case if you start an unconfigured radicale on your local
|
|
|
|
|
machine)
|
|
|
|
|
|
|
|
|
|
Click ``Create``. The wizard will now tell you, that no encryption is in place
|
|
|
|
|
(``Unsecured Connection``). This is expected and will change if you configure
|
|
|
|
|
radicale to use SSL. Click ``Continue``.
|
|
|
|
|
|
2012-01-05 00:48:42 +01:00
|
|
|
|
.. warning::
|
2012-07-02 14:38:43 +02:00
|
|
|
|
In iCal 5.x, please check twice that the ``Sync all entries`` option is
|
2012-01-05 00:48:42 +01:00
|
|
|
|
activated, otherwise some events may not be shown in your calendar.
|
|
|
|
|
|
2011-07-03 01:34:30 +02:00
|
|
|
|
The wizard will close, leaving you in the ``Account`` tab again. The account is
|
|
|
|
|
now set-up. You can close the ``Preferences`` window.
|
2011-06-05 21:24:58 +02:00
|
|
|
|
|
|
|
|
|
.. important::
|
|
|
|
|
To add a calendar to your shiny new account you have to go to the menu and
|
|
|
|
|
select ``File → New Calendar → <your shiny new account>``. A new calendar
|
|
|
|
|
appears in the left panel waiting for you to enter a name.
|
|
|
|
|
|
|
|
|
|
This is needed because the behaviour of the big ``+`` button in the main
|
|
|
|
|
window is confusing as you can't focus an empty account and iCal will just
|
|
|
|
|
add a calendar to another account.
|
2011-05-07 12:57:20 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Contacts
|
|
|
|
|
++++++++
|
|
|
|
|
|
|
|
|
|
*To be written*
|
|
|
|
|
|
2012-08-10 12:13:05 +02:00
|
|
|
|
syncEvolution
|
2013-01-04 09:49:34 +01:00
|
|
|
|
~~~~~~~~~~~~~
|
2012-08-10 12:13:05 +02:00
|
|
|
|
|
|
|
|
|
You can find more information about syncEvolution and Radicale on the
|
2013-01-04 09:46:36 +01:00
|
|
|
|
`syncEvolution wiki page <https://syncevolution.org/wiki/synchronizing-radicale>`_.
|
2012-08-10 12:13:05 +02:00
|
|
|
|
|
2009-07-29 17:19:55 +02:00
|
|
|
|
|
|
|
|
|
Complex Configuration
|
|
|
|
|
=====================
|
|
|
|
|
|
2009-09-01 19:01:28 +02:00
|
|
|
|
.. note::
|
2011-05-07 12:57:20 +02:00
|
|
|
|
This section is written for Linux users, but can be easily adapted for
|
|
|
|
|
Windows and MacOS users.
|
2009-09-01 19:01:28 +02:00
|
|
|
|
|
2011-06-11 18:17:06 +02:00
|
|
|
|
Installing the Server
|
|
|
|
|
---------------------
|
2009-09-01 19:01:28 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
You can install Radicale thanks to the following command, with superuser
|
|
|
|
|
rights::
|
2009-09-01 19:01:28 +02:00
|
|
|
|
|
|
|
|
|
python setup.py install
|
|
|
|
|
|
|
|
|
|
Then, launching the server can be easily done by typing as a normal user::
|
|
|
|
|
|
|
|
|
|
radicale
|
|
|
|
|
|
2011-06-11 18:17:06 +02:00
|
|
|
|
Configuring the Server
|
|
|
|
|
----------------------
|
2009-09-01 19:01:28 +02:00
|
|
|
|
|
2011-05-09 00:38:36 +02:00
|
|
|
|
Main Configuration File
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
2010-01-22 19:29:03 +01:00
|
|
|
|
|
2011-04-10 19:41:36 +02:00
|
|
|
|
.. note::
|
2012-08-09 16:25:07 +02:00
|
|
|
|
This section is following the latest stable version changes. Please look at
|
|
|
|
|
the default configuration file included in your package if you have an older
|
2011-04-10 19:41:36 +02:00
|
|
|
|
version of Radicale.
|
|
|
|
|
|
2010-06-17 11:00:58 +02:00
|
|
|
|
The server configuration can be modified in ``/etc/radicale/config`` or in
|
2011-06-08 08:25:55 +02:00
|
|
|
|
``~/.config/radicale/config``. You can also set the ``RADICALE_CONFIG``
|
|
|
|
|
environment variable to a path of your choice. Here is the default
|
|
|
|
|
configuration file, with the main parameters:
|
2011-04-17 16:17:03 +02:00
|
|
|
|
|
|
|
|
|
.. code-block:: ini
|
2009-09-01 19:01:28 +02:00
|
|
|
|
|
|
|
|
|
[server]
|
2011-04-10 19:41:36 +02:00
|
|
|
|
# CalDAV server hostnames separated by a comma
|
|
|
|
|
# IPv4 syntax: address:port
|
|
|
|
|
# IPv6 syntax: [address]:port
|
2012-07-17 12:53:47 +10:00
|
|
|
|
# IPv6 addresses are configured to only allow IPv6 connections
|
2011-04-10 19:41:36 +02:00
|
|
|
|
hosts = 0.0.0.0:5232
|
2010-01-22 19:29:03 +01:00
|
|
|
|
# Daemon flag
|
|
|
|
|
daemon = False
|
2011-10-03 00:51:41 +02:00
|
|
|
|
# File storing the PID in daemon mode
|
|
|
|
|
pid =
|
2010-01-22 19:29:03 +01:00
|
|
|
|
# SSL flag, enable HTTPS protocol
|
|
|
|
|
ssl = False
|
2011-04-25 21:09:20 +02:00
|
|
|
|
# SSL certificate path
|
2010-01-22 19:29:03 +01:00
|
|
|
|
certificate = /etc/apache2/ssl/server.crt
|
2011-04-25 21:09:20 +02:00
|
|
|
|
# SSL private key
|
2010-01-22 19:29:03 +01:00
|
|
|
|
key = /etc/apache2/ssl/server.key
|
2012-03-22 01:49:28 +01:00
|
|
|
|
# Reverse DNS to resolve client address in logs
|
|
|
|
|
dns_lookup = True
|
2011-04-25 21:09:20 +02:00
|
|
|
|
|
2012-02-05 15:46:23 +01:00
|
|
|
|
|
2009-09-01 19:01:28 +02:00
|
|
|
|
[encoding]
|
|
|
|
|
# Encoding for responding requests
|
|
|
|
|
request = utf-8
|
2012-02-05 15:46:23 +01:00
|
|
|
|
# Encoding for storing local collections
|
2009-09-01 19:01:28 +02:00
|
|
|
|
stock = utf-8
|
|
|
|
|
|
2012-02-05 15:46:23 +01:00
|
|
|
|
|
2010-01-22 19:29:03 +01:00
|
|
|
|
[acl]
|
|
|
|
|
# Access method
|
2012-07-05 22:38:25 +03:00
|
|
|
|
# Value: None | courier | IMAP | htpasswd | LDAP | PAM
|
2011-04-10 19:41:36 +02:00
|
|
|
|
type = None
|
2011-10-03 00:51:41 +02:00
|
|
|
|
|
2012-02-05 15:46:23 +01:00
|
|
|
|
# Usernames used for public collections, separated by a comma
|
2011-06-13 22:54:53 +02:00
|
|
|
|
public_users = public
|
2012-02-05 15:46:23 +01:00
|
|
|
|
# Usernames used for private collections, separated by a comma
|
2011-06-13 22:54:53 +02:00
|
|
|
|
private_users = private
|
2011-10-03 00:51:41 +02:00
|
|
|
|
|
2012-07-06 02:38:04 +03:00
|
|
|
|
# STARTTLS capable or local IMAP server domain name
|
2012-07-05 22:38:25 +03:00
|
|
|
|
imap_auth_host_name = localhost
|
|
|
|
|
imap_auth_host_port = 143
|
|
|
|
|
|
2011-04-25 21:09:20 +02:00
|
|
|
|
# Htpasswd filename
|
|
|
|
|
htpasswd_filename = /etc/radicale/users
|
|
|
|
|
# Htpasswd encryption method
|
2010-01-22 19:29:03 +01:00
|
|
|
|
# Value: plain | sha1 | crypt
|
2011-04-25 21:09:20 +02:00
|
|
|
|
htpasswd_encryption = crypt
|
2011-10-03 00:51:41 +02:00
|
|
|
|
|
2011-04-25 21:09:20 +02:00
|
|
|
|
# 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
|
2012-03-22 01:49:28 +01:00
|
|
|
|
# LDAP filter string
|
|
|
|
|
# placed as X in a query of the form (&(...)X)
|
|
|
|
|
# example: (objectCategory=…)(objectClass=…)(memberOf=…)
|
|
|
|
|
# leave empty if no additional filter is needed
|
|
|
|
|
ldap_filter =
|
2011-06-11 18:22:33 +02:00
|
|
|
|
# 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 =
|
2012-02-05 15:46:23 +01:00
|
|
|
|
# LDAP scope of the search
|
|
|
|
|
ldap_scope = OneLevel
|
2010-01-22 19:29:03 +01:00
|
|
|
|
|
2011-10-03 00:51:41 +02:00
|
|
|
|
# PAM group user should be member of
|
|
|
|
|
pam_group_membership =
|
|
|
|
|
|
|
|
|
|
# Path to the Courier Authdaemon socket
|
|
|
|
|
courier_socket =
|
|
|
|
|
|
2012-02-05 15:46:23 +01:00
|
|
|
|
|
2010-02-11 11:27:37 +01:00
|
|
|
|
[storage]
|
2012-02-05 15:46:23 +01:00
|
|
|
|
# Storage backend
|
|
|
|
|
type = filesystem
|
|
|
|
|
|
|
|
|
|
# Folder for storing local collections, created if not present
|
|
|
|
|
filesystem_folder = ~/.config/radicale/collections
|
|
|
|
|
|
2009-09-01 19:01:28 +02:00
|
|
|
|
|
2012-07-02 14:16:23 +02:00
|
|
|
|
[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
|
2011-04-10 19:41:36 +02:00
|
|
|
|
|
2009-09-01 19:01:28 +02:00
|
|
|
|
This configuration file is read each time the server is launched. If some
|
|
|
|
|
values are not given, the default ones are used. If no configuration file is
|
|
|
|
|
available, all the default values are used.
|
2010-01-22 19:29:03 +01:00
|
|
|
|
|
2011-05-17 00:30:22 +02:00
|
|
|
|
|
2011-05-09 00:38:36 +02:00
|
|
|
|
Logging Configuration File
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
Radicale uses the default logging facility for Python. The default
|
|
|
|
|
configuration prints the information messages to the standard output. It is
|
|
|
|
|
possible to print debug messages thanks to::
|
|
|
|
|
|
|
|
|
|
radicale --debug
|
|
|
|
|
|
|
|
|
|
Radicale can also be configured to send the messages to the console, logging
|
|
|
|
|
files, syslog, etc. For more information about the syntax of the configuration
|
|
|
|
|
file, see: http://docs.python.org/library/logging.config.html. Here is an
|
|
|
|
|
example of logging configuration file:
|
|
|
|
|
|
|
|
|
|
.. code-block:: ini
|
|
|
|
|
|
|
|
|
|
# Loggers, handlers and formatters keys
|
|
|
|
|
|
|
|
|
|
[loggers]
|
|
|
|
|
# Loggers names, main configuration slots
|
|
|
|
|
keys = root
|
|
|
|
|
|
|
|
|
|
[handlers]
|
|
|
|
|
# Logging handlers, defining logging output methods
|
|
|
|
|
keys = console,file
|
|
|
|
|
|
|
|
|
|
[formatters]
|
|
|
|
|
# Logging formatters
|
|
|
|
|
keys = simple,full
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Loggers
|
|
|
|
|
|
|
|
|
|
[logger_root]
|
|
|
|
|
# Root logger
|
|
|
|
|
level = DEBUG
|
|
|
|
|
handlers = console,file
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Handlers
|
|
|
|
|
|
|
|
|
|
[handler_console]
|
|
|
|
|
# Console handler
|
|
|
|
|
class = StreamHandler
|
|
|
|
|
level = INFO
|
|
|
|
|
args = (sys.stdout,)
|
|
|
|
|
formatter = simple
|
|
|
|
|
|
|
|
|
|
[handler_file]
|
|
|
|
|
# File handler
|
|
|
|
|
class = FileHandler
|
|
|
|
|
args = ('/var/log/radicale',)
|
|
|
|
|
formatter = full
|
|
|
|
|
|
|
|
|
|
|
2011-05-17 00:32:03 +02:00
|
|
|
|
# Formatters
|
2011-05-09 00:38:36 +02:00
|
|
|
|
|
|
|
|
|
[formatter_simple]
|
|
|
|
|
# Simple output format
|
|
|
|
|
format = %(message)s
|
|
|
|
|
|
|
|
|
|
[formatter_full]
|
|
|
|
|
# Full output format
|
|
|
|
|
format = %(asctime)s - %(levelname)s: %(message)s
|
|
|
|
|
|
|
|
|
|
|
2010-01-22 19:29:03 +01:00
|
|
|
|
Command Line Options
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
All the options of the ``server`` part can be changed with command line
|
|
|
|
|
options. These options are available by typing::
|
|
|
|
|
|
|
|
|
|
radicale --help
|
2010-04-10 01:33:58 +02:00
|
|
|
|
|
|
|
|
|
|
2011-08-12 12:26:55 +02:00
|
|
|
|
WSGI, CGI and FastCGI
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
Radicale comes with a `WSGI <http://wsgi.org/>`_ support, allowing the software
|
|
|
|
|
to be used behind any HTTP server supporting WSGI such as Apache.
|
|
|
|
|
|
|
|
|
|
Moreover, it is possible to use `flup
|
|
|
|
|
<http://trac.saddi.com/flup/wiki/FlupServers>`_ to wrap Radicale into a CGI,
|
|
|
|
|
FastCGI, SCGI or AJP application, and therefore use it with Lighttpd, Nginx or
|
|
|
|
|
even Tomcat.
|
|
|
|
|
|
|
|
|
|
Apache and mod_wsgi
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2011-09-11 11:52:38 +02:00
|
|
|
|
To use Radicale with Apache's ``mod_wsgi``, you first have to install the
|
|
|
|
|
Radicale module in your Python path and write your ``.wsgi`` file (in
|
|
|
|
|
``/var/www`` for example):
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
2011-08-12 12:26:55 +02:00
|
|
|
|
import radicale
|
2011-08-25 10:38:27 +02:00
|
|
|
|
radicale.log.start()
|
2011-08-12 12:26:55 +02:00
|
|
|
|
application = radicale.Application()
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
|
|
|
|
.. note::
|
2011-09-11 11:52:38 +02:00
|
|
|
|
The ``[server]`` part of the configuration is ignored.
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2011-08-12 12:26:55 +02:00
|
|
|
|
Next you have to create the Apache virtual host (adapt the configuration
|
2011-08-04 17:00:45 +02:00
|
|
|
|
to your environment):
|
|
|
|
|
|
|
|
|
|
.. code-block:: apache
|
|
|
|
|
|
2011-08-12 12:26:55 +02:00
|
|
|
|
<VirtualHost *:80>
|
|
|
|
|
ServerName cal.yourdomain.org
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2011-08-12 12:26:55 +02:00
|
|
|
|
WSGIDaemonProcess radicale user=www-data group=www-data threads=1
|
|
|
|
|
WSGIScriptAlias / /var/www/radicale.wsgi
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2011-08-12 12:26:55 +02:00
|
|
|
|
<Directory /var/www>
|
|
|
|
|
WSGIProcessGroup radicale
|
|
|
|
|
WSGIApplicationGroup %{GLOBAL}
|
|
|
|
|
AllowOverride None
|
|
|
|
|
Order allow,deny
|
|
|
|
|
allow from all
|
|
|
|
|
</Directory>
|
|
|
|
|
</VirtualHost>
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2012-01-05 00:48:42 +01:00
|
|
|
|
.. warning::
|
2011-08-12 12:26:55 +02:00
|
|
|
|
You should use the root of the (sub)domain (``WSGIScriptAlias /``), else
|
2011-09-11 11:52:38 +02:00
|
|
|
|
some CalDAV features may not work.
|
|
|
|
|
|
2012-02-28 13:04:34 +01:00
|
|
|
|
If you want to use authentication with Apache, you *really* should use one of
|
|
|
|
|
the Apache authentication modules, instead of the ones from Radicale: they're
|
|
|
|
|
just better.
|
|
|
|
|
|
|
|
|
|
Deactivate any ACL module in Radicale and use your favourite Apache
|
|
|
|
|
authentication backend. You can then restrict the access: allow the ``alice``
|
|
|
|
|
user to access ``/alice/*`` URLs, and everything should work as expected.
|
|
|
|
|
|
|
|
|
|
Here is one example of Apache configuration file:
|
|
|
|
|
|
|
|
|
|
.. code-block:: apache
|
|
|
|
|
|
|
|
|
|
<VirtualHost *:80>
|
|
|
|
|
ServerName radicale.local
|
|
|
|
|
|
|
|
|
|
WSGIDaemonProcess radicale user=radicale group=radicale threads=1
|
|
|
|
|
WSGIScriptAlias / /usr/share/radicale/radicale.wsgi
|
|
|
|
|
|
|
|
|
|
<Directory /usr/share/radicale/>
|
|
|
|
|
WSGIProcessGroup radicale
|
|
|
|
|
WSGIApplicationGroup %{GLOBAL}
|
|
|
|
|
|
|
|
|
|
AuthType Basic
|
|
|
|
|
AuthName "Radicale Authentication"
|
|
|
|
|
AuthBasicProvider file
|
|
|
|
|
AuthUserFile /usr/share/radicale/radicale.passwd
|
|
|
|
|
Require valid-user
|
|
|
|
|
|
|
|
|
|
AllowOverride None
|
|
|
|
|
Order allow,deny
|
|
|
|
|
allow from all
|
|
|
|
|
|
|
|
|
|
RewriteEngine On
|
|
|
|
|
RewriteCond %{REMOTE_USER}%{PATH_INFO} !^([^/]+/)\1
|
|
|
|
|
RewriteRule .* - [Forbidden]
|
|
|
|
|
</Directory>
|
|
|
|
|
</VirtualHost>
|
|
|
|
|
|
|
|
|
|
If you're still convinced that access control is better with Radicale, you have
|
|
|
|
|
to add ``WSGIPassAuthorization On`` in your Apache configuration files, as
|
|
|
|
|
explained in `the mod_wsgi documentation
|
|
|
|
|
<http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#User_Authentication>`_.
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2012-01-05 00:48:42 +01:00
|
|
|
|
.. note::
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Read-only calendars or address books can also be served by a simple Apache
|
|
|
|
|
HTTP server, as Radicale stores full-text icalendar and vcard files with the
|
|
|
|
|
default configuration.
|
2012-01-05 00:48:42 +01:00
|
|
|
|
|
2011-08-04 17:00:45 +02:00
|
|
|
|
|
2011-05-17 00:30:22 +02:00
|
|
|
|
Authentication and URLs
|
2011-06-13 22:54:53 +02:00
|
|
|
|
-----------------------
|
2011-05-17 00:30:22 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
If no authentication method is set, calendars are available at
|
|
|
|
|
``/calendar.ics/`` and ``/folder/calendar.ics/`` URLs. Else, calendars are
|
|
|
|
|
public, private or personal, depending on their URLs.
|
2011-06-13 22:54:53 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
This section is written for calendars, but it is the same for address books.
|
2011-06-13 22:54:53 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Public Collections
|
|
|
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
Public collections are available for everybody, authenticated or not.
|
2011-06-13 22:54:53 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Calendars at ``/public_user/calendar.ics/`` URLs are public. Public users are
|
2011-06-13 22:54:53 +02:00
|
|
|
|
defined in the ``acl → public_users`` configuration variable. If ``None`` is in
|
2012-03-22 01:49:28 +01:00
|
|
|
|
the list of public users, public calendars are also available at
|
|
|
|
|
``/calendar.ics/`` URLs.
|
2011-06-13 22:54:53 +02:00
|
|
|
|
|
|
|
|
|
.. important::
|
|
|
|
|
|
|
|
|
|
Public calendars allow anybody to create calendars, leading to possible
|
|
|
|
|
security problems. If you do not want to allow public calendars, just use an
|
|
|
|
|
empty string in the ``acl → public_users`` configuration variable.
|
|
|
|
|
|
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Private Collections
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
2011-06-13 22:54:53 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Private collections are available for all the authenticated users.
|
2011-06-13 22:54:53 +02:00
|
|
|
|
|
|
|
|
|
Calendars at ``/private_user/calendar`` URLs are private. Private users are
|
2011-08-19 16:42:07 +02:00
|
|
|
|
defined in the ``acl → private_users`` configuration variable. If ``None`` is
|
|
|
|
|
in the list of private users, private calendars are also available at
|
2011-06-13 22:54:53 +02:00
|
|
|
|
``/calendar`` URLs.
|
|
|
|
|
|
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Personal Collections
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
2011-05-17 00:30:22 +02:00
|
|
|
|
|
2012-03-22 01:49:28 +01:00
|
|
|
|
Personal collections are only available for the calendar owner.
|
2011-05-17 00:30:22 +02:00
|
|
|
|
|
2011-06-13 22:54:53 +02:00
|
|
|
|
Calendars at ``/owner/calendar`` URLs are personal. They are only available for
|
2012-05-07 10:45:54 +02:00
|
|
|
|
the authenticated user called ``owner`` (of course, you can replace ``owner`` by
|
|
|
|
|
any user name authorized by your authentication mechanism).
|
2011-05-17 00:30:22 +02:00
|
|
|
|
|
|
|
|
|
|
2010-04-10 01:33:58 +02:00
|
|
|
|
Python Versions and OS Support
|
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
TLS Support
|
|
|
|
|
-----------
|
|
|
|
|
|
2011-06-11 17:45:52 +02:00
|
|
|
|
Python 2.6 suffered `a bug <http://bugs.python.org/issue5103>`_ causing huge
|
|
|
|
|
timeout problems with TLS. The bug is fixed since Python 2.6.6.
|
2010-07-31 14:01:11 +02:00
|
|
|
|
|
2012-07-16 18:16:17 +02:00
|
|
|
|
IMAP authentication over TLS requires Python 3.2.
|
2012-07-05 22:38:25 +03:00
|
|
|
|
|
2010-12-27 17:20:44 +01:00
|
|
|
|
Python 2.7 and Python 3.x do not suffer this bug.
|
2010-07-31 14:01:11 +02:00
|
|
|
|
|
2010-04-10 01:33:58 +02:00
|
|
|
|
Crypt Support
|
|
|
|
|
-------------
|
|
|
|
|
|
|
|
|
|
With the htpasswd access, many encryption methods are available, and crypt is the
|
2011-02-08 20:51:02 +01:00
|
|
|
|
default one in Radicale. Unfortunately, the ``crypt`` module is unavailable on
|
2010-04-10 01:33:58 +02:00
|
|
|
|
Windows, you have to pick another method on this OS.
|
2011-04-26 00:09:32 +02:00
|
|
|
|
|
2012-07-05 22:38:25 +03:00
|
|
|
|
IMAP Authentication
|
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
|
|
The IMAP authentication module relies on the imaplib module, available with 2.x
|
|
|
|
|
versions of Python. However, TLS is only available in Python 3.2. Older versions
|
|
|
|
|
of Python or a non-modern server who does not support STARTTLS can only
|
|
|
|
|
authenticate against ``localhost`` as passwords are transmitted in PLAIN. Legacy
|
|
|
|
|
SSL mode on port 993 is not supported.
|
|
|
|
|
|
2011-04-26 00:09:32 +02:00
|
|
|
|
LDAP Authentication
|
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
|
|
The LDAP authentication module relies on `the python-ldap module
|
|
|
|
|
<http://www.python-ldap.org/>`_, and thus only works with 2.x versions
|
|
|
|
|
of Python.
|
2011-10-03 00:51:41 +02:00
|
|
|
|
|
|
|
|
|
PAM Authentication
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
The PAM authentication module relies on `the pam module
|
|
|
|
|
<http://atlee.ca/software/pam/>`_, and thus only works with 2.x versions of
|
|
|
|
|
Python.
|
2012-08-31 17:47:04 +02:00
|
|
|
|
|
|
|
|
|
Daemon Mode
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
The daemon mode relies on forks, and thus only works on Unix-like OSes
|
2012-08-31 17:51:43 +02:00
|
|
|
|
(incuding Linux, OS X, BSD).
|