DAViCal

Installation

Anleitung zur Installation und Konfiguration von DAViCal unter Debian squeeze.

Unter Debian kann einfach das Repository des DAViCal Autors Andrew McMillan eingebunden werden, und zwar über die Datei /etc/apt/sources.lst:

…

deb http://debian.mcmillan.net.nz/debian lenny awm

Die Pakete für lenny funktionieren ohne Probleme unter squeeze. Bevor das Repository eingelesen werden kann, muß noch der PGP-Schlüssel eingelesen werden:

# sudo apt-key advanced --keyserver pgp.net.nz --recv-keys F6E0FA5CF0307507BB23A512EAFCFEBF8FEB8EBF

Jetzt kann DAViCal und mögliche Zusatzkomponenten (diese werden automatisch über die Paketverwaltung aufgelöst) installieren:

# apt-get update
# apt-get install davical

Datenbank

Als Datenbank wird PostgreSQL verwendet. Die Zugriffsrechte auf die Datenbank für DAViCal sind durch Konfiguration der Datei /etc/postgresql/8.4/main/pg_hba.conf zu realisieren:

local   davical    davical_app   trust
local   davical    davical_dba   trust

Danach ist der Datenbankserver neu zu starten:

invoke.rc-d postgresql restart

Jetzt können die Datenbanken für DAViCal über ein eigenes Skript angelegt werden:

# su postgres -c /usr/share/davical/dba/create-database.sh

Webserver

Den Webserver sollte man gleich auf dem Standard-Port für Caldav 8443 und mit SSL laufen lassen. Folgende Konfiguration wurde über die Datei /etc/apache2/sites-available/davical angelegt:

# Virtual Host def for Debian packaged DAViCal
<VirtualHost *:8443 >
  DocumentRoot /usr/share/davical/htdocs
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/caldav2.cert
  SSLCertificateKeyFile /etc/ssl/certs/caldav2.key
  DirectoryIndex index.php index.html
  ServerName cal.example.com
  ServerAlias cal1.example.com
  Alias /images/ /usr/share/davical/htdocs/images/
  CustomLog /var/log/apache2/davical_access.log combined
  <Directory /usr/share/davical/htdocs/>
      AllowOverride None
      Order allow,deny
      Allow from all
  </Directory>
  AcceptPathInfo On
  php_value include_path /usr/share/awl/inc
  php_value magic_quotes_gpc 0
  php_value register_globals 0
  php_value error_reporting "E_ALL & ~E_NOTICE"
  php_value default_charset "utf-8"
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/$
  RewriteCond %{REQUEST_URI} !/.(php|css|js|png|gif|jpg)
  RewriteRule ^(/principals/users.*)$ /caldav.php$1 [NC,L]
</VirtualHost>

Danach können die SSL-Zertifikate angelegt werden. Bei der Frage nach dem »Common Name« am besten den Servernamen angeben:

# openssl genrsa -out certs/caldav2.key 2048
# openssl req -new -key certs/caldav2.key -out private/caldav2.csr
# openssl x509 -req -days 3650 -in private/caldav2.csr -signkey certs/caldav2.key -out certs/caldav2.cert

Bevor der Webserver mit dieser Konfiguration laufen kann, muß diese erst geladen werden und gegebenfalls auch Module aktiviert werden (ssl und rewrite sind unter Debian standardmäßig nicht aktiviert):

# a2ensite davical
# a2enmod ssl
# a2enmod rewrite
# invoke-rc.d apache2 restart

Konfiguration von DAViCal

Im letzten Schritt wird DAViCal konfiguriert. Dabei wird eine Datei /etc/davical/cal1.rana.at-conf.php mit folgendem Inhalt erstellt:

<?php
  $c->domain_name  = 'cal1.example.com';
  $c->sysabbr     = 'davical';
  $c->system_name = 'DAViCal CalDAV Server';

  $c->admin_email  = 'davical@example.com';
  $c->pg_connect[] = 'dbname=davical user=davical_app';

Jetzt kann man mit einem Webbrowser auf die Administrationsoberfläche des DAViCal-Servers über die URL https://cal.example.com:8443 zugreifen:

Man kann jetzt mit dem User admin und seinem Passwort zugreifen. Wenn man sich das Passwort nicht notiert hat, kann man es noch einmal auslesen:

# su postgres
> psql davical -c 'select username, password from usr;'

Dies funktioniert allerdings nur solange, bis man das Administratorpasswort über die Weboberfläche ändert. Danach ist es im Klartext nicht mehr auslesbar!