RadicaleCalDAVServer: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Anpassung für Passenger)
(veraltet)
 
(21 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Radicale CalDAV Server =
= Radicale CalDAV Server =
{{Textkasten|gelb| Achtung: Diese Seite ist sehr veraltet. Sie bezieht sich auf die Version 1.x von Radicale. Mittlerweile ist die aktuelle Version Radicale v3 }}


[http://de.wikipedia.org/wiki/CalDAV CalDAV] ist eine Erweiterung des WebDAV- (und damit des HTTP-) Protokolls, um Kalenderdaten (Termine und Aufgaben) auf einem Server zu speichern.
[http://de.wikipedia.org/wiki/CalDAV CalDAV] ist eine Erweiterung des WebDAV- (und damit des HTTP-) Protokolls, um Kalenderdaten (Termine und Aufgaben) auf einem Server zu speichern.
Zeile 8: Zeile 10:
* Das [http://www.mozilla.org/projects/calendar/lightning/ Lightning-Plugin] für Thunderbird (unter Linux und Windows)
* Das [http://www.mozilla.org/projects/calendar/lightning/ Lightning-Plugin] für Thunderbird (unter Linux und Windows)
* [https://f-droid.org/repository/browse/?fdid=org.gege.caldavsyncadapter CalDAV Sync Adapter] als Android-App zur Synchronisation des Kalenders
* [https://f-droid.org/repository/browse/?fdid=org.gege.caldavsyncadapter CalDAV Sync Adapter] als Android-App zur Synchronisation des Kalenders
* Der [http://caldavsynchronizer.org/ CaldavSynchronizer] für Outlook


In diesem Artikel wird die Installation eines CalDAV-Server in einem normalen Hostsharing-Paket beschrieben, als leichtgewichtigen Server nutze ich den [http://radicale.org/ Radicale CalDAV Server]. Der Server kann mit Hilfe von Passenger betrieben werden.
In diesem Artikel wird die Installation eines CalDAV-Server in einem normalen Hostsharing-Paket beschrieben, als leichtgewichtigen Server nutze ich den [http://radicale.org/ Radicale CalDAV Server]. Der Server kann mit Hilfe von Passenger betrieben werden.
In dieser Installationsanleitung wird die Installation für HTTP und HTTPS (Verzeichnisse "app-ssl" und "htdocs-ssl") parallel vorgenommen. Ihr solltet darauf achten, den CalDAV- / Card-Server im produktiven
Betrieb immer nur über HTTPS (also mit SSL-/TLS_Verschlüsselung) anzusprechen. Schliesslich werden Passworte und personenbezogene Daten übertragen!


== Installation ==
== Installation ==
Zeile 17: Zeile 24:
Ich lege mit HSAdmin einen User ''xyz00-cal'' an und schalte eine Domain ''cal.example.org'' auf.
Ich lege mit HSAdmin einen User ''xyz00-cal'' an und schalte eine Domain ''cal.example.org'' auf.


=== Download und Entpacken des Paketes ===
=== Download und Installation des Paketes ===
 
* Radicale Download: [http://radicale.org/download/], die aktuelle Version beim Schreiben des Artikel: 0.9


als User ''xyz00-cal'':
als User ''xyz00-cal'':


<pre>
<syntaxhighlight lang=bash>
wget http://pypi.python.org/packages/source/R/Radicale/Radicale-0.9.tar.gz
pip install --user radicale==1.1.6
tar xzf Radicale-0.9.tar.gz
</syntaxhighlight>
</pre>


=== Installation des Python Eggs ===
=== Passenger Konfiguration ===


Die Eggs sollen jeweils im Verzeichnis des aktuellen Users installiert werden. Der Aufruf des Setup-Skripts dazu:
Vor der Nutzung von [[Phusion Passenger]] bitte unbedingt die dortigen Hinweise zur Nutzung beachten.
 
<pre>
cd ~/Radicale-0.9
python setup.py install --user
</pre>
 
Danach sollten sich im Unterverzeichnis ~/.local/ die entsprechenden Python-Skripte finden:
 
<pre>
ls -l ~/.local/bin/ ~/.local/lib/python2.7/site-packages/
</pre>
 
<pre>
/home/pacs/xyz00/users/cal/.local/bin/:
total 4
-rwxr-xr-x 1 xyz00-cal xyz00 1001 Dec 28 12:04 radicale
 
/home/pacs/xyz00/users/cal/.local/lib/python2.6/site-packages/:
total 12
-rw-r--r-- 1 xyz00-cal xyz00 1797 Dec 28 12:04 Radicale-0.9.egg-info
drwxr-xr-x 3 xyz00-cal xyz00 4096 Dec 28 12:04 radicale
</pre>
 
=== Passenger Konfiguration ===


Wir wechseln in das Domain-Verzeichnis ''~/doms/cal.example.org/''.
Wir wechseln in das Domain-Verzeichnis ''~/doms/cal.example.org/''.
Dorthin legen wir die folgende Datei an:
Dorthin legen wir die folgende Datei an:


''~/doms/cal.example.org/app/passenger_wsgi.py'' bzw.
''~/doms/cal.example.org/app/passenger_wsgi.py'' und
''~/doms/cal.example.org/app-ssl/passenger_wsgi.py''
''~/doms/cal.example.org/app-ssl/passenger_wsgi.py''


<pre>
<syntaxhighlight lang=python>
#!/usr/bin/env python
#!/usr/bin/env python


Zeile 69: Zeile 49:
radicale.log.start()
radicale.log.start()
application = radicale.Application()
application = radicale.Application()
</pre>
</syntaxhighlight>


''~/doms/cal.example.org/htdocs/.htaccess'' bzw.
''~/doms/cal.example.org/htdocs/.htaccess'' und
''~/doms/cal.example.org/htdocs-ssl/.htaccess''
''~/doms/cal.example.org/htdocs-ssl/.htaccess''


<pre>
<syntaxhighlight lang=apache>
AuthType Basic
AuthType Basic
AuthName "Radicale Calendar Server"
AuthName "Radicale Calendar Server"
require valid-user
require valid-user
AuthUserFile /home/pacs/xyz00/users/cal/.htpasswd
AuthUserFile /home/pacs/xyz00/users/cal/.htpasswd
RewriteEngine On
</syntaxhighlight>
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} radicale.fcgi$
RewriteRule ^(.*)$ /fastcgi-bin/radicale.fcgi [QSA,L]
</pre>


Es fehlt noch das Anlegen der ''~/.htpasswd''-Datei mit den verschlüsselten Passworten der User.
Es fehlt noch das Anlegen der ''~/.htpasswd''-Datei mit den verschlüsselten Passworten der User.
Dazu rufen wir (für die User ''hans'' und ''franz'') folgendes Kommando auf (''htpasswd -c'' erzeugt die Datei):
Dazu rufen wir (für die User ''hans'' und ''franz'') folgendes Kommando auf (''htpasswd -c'' erzeugt die Datei):


<pre>
<syntaxhighlight lang=bash>
htpasswd -c ~/.htpasswd hans
htpasswd -c ~/.htpasswd hans
htpasswd ~/.htpasswd franz
htpasswd ~/.htpasswd franz
...
...
</pre>
</syntaxhighlight>


An dieser Stelle sollte ein Aufruf von ''http://cal.example.org'' im Browser nach Eingabe des Passwortes für ''hans'' oder ''franz'' die folgende Seite liefern: ''Radicale works!''
An dieser Stelle sollte ein Aufruf von ''https://cal.example.org'' im Browser nach Eingabe des Passwortes für ''hans'' oder ''franz'' die folgende Seite liefern: ''Radicale works!''


=== Radicale Konfiguration ===
=== Radicale Konfiguration ===
Zeile 103: Zeile 79:
Hier der Inhalt meiner ''~/.config/radicale/config'':
Hier der Inhalt meiner ''~/.config/radicale/config'':


<pre>
<syntaxhighlight lang=ini line>
# Config file for Radicale - A simple calendar server
# Config file for Radicale - A simple calendar server
# Place it into ~/.config/radicale/config (user)
# Place it into ~/.config/radicale/config (user)
Zeile 131: Zeile 107:
debug = False
debug = False
full_environment = False
full_environment = False
</pre>
</syntaxhighlight>




Hier der Inhalt meiner ''~/.config/radicale/logging'':
Hier der Inhalt meiner ''~/.config/radicale/logging'':


<pre>
<syntaxhighlight lang=ini line>
[loggers]
[loggers]
keys = root
keys = root
Zeile 157: Zeile 133:
[formatter_full]
[formatter_full]
format = %(asctime)s - %(levelname)s: %(message)s
format = %(asctime)s - %(levelname)s: %(message)s
</pre>
</syntaxhighlight>


== Nutzung der Kalender ==
== Nutzung der Kalender ==
Zeile 167: Zeile 143:
Im der oben beschriebenen Konfiguration überlässt man die Zugriffskontrolle am besten dem Apache-Webserver. Das kann man einfach über die bereits vorhandene ''.htaccess''-Datei regeln:
Im der oben beschriebenen Konfiguration überlässt man die Zugriffskontrolle am besten dem Apache-Webserver. Das kann man einfach über die bereits vorhandene ''.htaccess''-Datei regeln:


<pre>
<syntaxhighlight lang=apache line>
AuthType Basic
AuthType Basic
AuthName "Radicale Calendar Server"
AuthName "Radicale Calendar Server"
AuthUserFile /home/pacs/peh06/users/cal/.htpasswd
AuthUserFile /home/pacs/xyz00/users/cal/.htpasswd
<FilesMatch "^hans">
<FilesMatch "^hans">
require user hans
require user hans
Zeile 180: Zeile 156:
require valid-user
require valid-user
</FilesMatch>
</FilesMatch>
RewriteEngine On
</syntaxhighlight>
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} radicale.fcgi$
RewriteRule ^(.*)$ /fastcgi-bin/radicale.fcgi [QSA,L]
</pre>


So können beide User jeweils eigene Kalender anlegen, z.B:
So können beide User jeweils eigene Kalender anlegen, z.B:
Zeile 199: Zeile 171:
=== Client Konfiguration ===
=== Client Konfiguration ===


Ich selbst verwende das Lightning-Plugin zu Thunderbird und aCal als Android-App.
Ich selbst verwende das Lightning-Plugin zu Thunderbird und [https://f-droid.org/packages/at.bitfire.davdroid/ DavDroid] als App zur Synchronisation des Android-Kalenders.


==== Lightning ====
==== Lightning ====
Zeile 207: Zeile 179:
Über die Funktion "Create Calendar":
Über die Funktion "Create Calendar":
# "On the Network"
# "On the Network"
# "CalDAV" mit "Location": ''http://cal.example.org/franz/privat''
# "CalDAV" mit "Location": ''https://cal.example.org/franz/privat''
# Namen vergeben und Farbe wählen
# Namen vergeben und Farbe wählen
# ggf. noch User und Passwort angeben
# ggf. noch User und Passwort angeben
Zeile 218: Zeile 190:
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:CalDAV]]
[[Kategorie:CalDAV]]
[[Kategorie:Passenger]]
[[Kategorie:Python]]
= Radicale CalDAV Server =

Aktuelle Version vom 6. August 2024, 18:39 Uhr

Radicale CalDAV Server

Achtung: Diese Seite ist sehr veraltet. Sie bezieht sich auf die Version 1.x von Radicale. Mittlerweile ist die aktuelle Version Radicale v3

{{{3}}}


CalDAV ist eine Erweiterung des WebDAV- (und damit des HTTP-) Protokolls, um Kalenderdaten (Termine und Aufgaben) auf einem Server zu speichern.

Apple nutzt diese Protokoll für seine Clients (iCal-Anwendung und Kalender-App auf dem iPhone) und bietet einen entsprechenden Server an. Dadurch gewinnt CalDAV zunehmende Bedeutung.

Wenn man freie Software einsetzen will, bieten sich folgende Anwendungen an:

In diesem Artikel wird die Installation eines CalDAV-Server in einem normalen Hostsharing-Paket beschrieben, als leichtgewichtigen Server nutze ich den Radicale CalDAV Server. Der Server kann mit Hilfe von Passenger betrieben werden.

In dieser Installationsanleitung wird die Installation für HTTP und HTTPS (Verzeichnisse "app-ssl" und "htdocs-ssl") parallel vorgenommen. Ihr solltet darauf achten, den CalDAV- / Card-Server im produktiven Betrieb immer nur über HTTPS (also mit SSL-/TLS_Verschlüsselung) anzusprechen. Schliesslich werden Passworte und personenbezogene Daten übertragen!


Installation

Vorbereitung

Ich lege mit HSAdmin einen User xyz00-cal an und schalte eine Domain cal.example.org auf.

Download und Installation des Paketes

als User xyz00-cal:

pip install --user radicale==1.1.6

Passenger Konfiguration

Vor der Nutzung von Phusion Passenger bitte unbedingt die dortigen Hinweise zur Nutzung beachten.

Wir wechseln in das Domain-Verzeichnis ~/doms/cal.example.org/. Dorthin legen wir die folgende Datei an:

~/doms/cal.example.org/app/passenger_wsgi.py und ~/doms/cal.example.org/app-ssl/passenger_wsgi.py

#!/usr/bin/env python

import radicale

radicale.log.start()
application = radicale.Application()

~/doms/cal.example.org/htdocs/.htaccess und ~/doms/cal.example.org/htdocs-ssl/.htaccess

AuthType Basic
AuthName "Radicale Calendar Server"
require valid-user
AuthUserFile /home/pacs/xyz00/users/cal/.htpasswd

Es fehlt noch das Anlegen der ~/.htpasswd-Datei mit den verschlüsselten Passworten der User. Dazu rufen wir (für die User hans und franz) folgendes Kommando auf (htpasswd -c erzeugt die Datei):

htpasswd -c ~/.htpasswd hans
htpasswd ~/.htpasswd franz
...

An dieser Stelle sollte ein Aufruf von https://cal.example.org im Browser nach Eingabe des Passwortes für hans oder franz die folgende Seite liefern: Radicale works!

Radicale Konfiguration

Zuletzt bleibt noch die Erstellung einer Konfigurationsdatei für den Radicale-Server. Ein Template für die Datei findet Ihr in ~/Radicale-0.9/config.

Hier der Inhalt meiner ~/.config/radicale/config:

# Config file for Radicale - A simple calendar server
# Place it into ~/.config/radicale/config (user)

[server]
base_prefix = /
can_skip_base_prefix = False
dns_lookup = False

[encoding]
request = utf-8
stock = utf-8

[auth]
type = None

[rights]
type = None

[storage]
type = filesystem
custom_handler =
filesystem_folder = ~/.config/radicale/collections

[logging]
config = ~/.config/radicale/logging
debug = False
full_environment = False


Hier der Inhalt meiner ~/.config/radicale/logging:

[loggers]
keys = root

[handlers]
keys = file

[formatters]
keys = full

[logger_root]
level = INFO
handlers = file

[handler_file]
class = FileHandler
args = ('/home/pacs/xyz00/users/cal/var/radicale.log',)
formatter = full

[formatter_full]
format = %(asctime)s - %(levelname)s: %(message)s

Nutzung der Kalender

Zugriffsrechte

Zu diesem Zeitpunkt können die User hans und franz jeweils auf alle Kalender zugreifen. In einer größeren Organisation ist das sicher nicht ausreichend.

Im der oben beschriebenen Konfiguration überlässt man die Zugriffskontrolle am besten dem Apache-Webserver. Das kann man einfach über die bereits vorhandene .htaccess-Datei regeln:

AuthType Basic
AuthName "Radicale Calendar Server"
AuthUserFile /home/pacs/xyz00/users/cal/.htpasswd
<FilesMatch "^hans">
require user hans
</FilesMatch>
<FilesMatch "^franz">
require user franz
</FilesMatch>
<FilesMatch "^team">
require valid-user
</FilesMatch>

So können beide User jeweils eigene Kalender anlegen, z.B:

  • /hans/privat
  • /hans/aufgaben
  • /franz/kalender

Unter dem Pseudouser team können gemeinsame Kalender verwaltet werden:

  • /team/meetings
  • /team/seminarraum

Mit einer zusätzlichen Datei .htgroups kann man auch komplexere Szenarien implementieren.

Client Konfiguration

Ich selbst verwende das Lightning-Plugin zu Thunderbird und DavDroid als App zur Synchronisation des Android-Kalenders.

Lightning

Hier kann man jeden einzelnen Kalender mit seiner vollständigen URL abonnieren.

Über die Funktion "Create Calendar":

  1. "On the Network"
  2. "CalDAV" mit "Location": https://cal.example.org/franz/privat
  3. Namen vergeben und Farbe wählen
  4. ggf. noch User und Passwort angeben
  5. das war's



Radicale CalDAV Server