updated:  2024 11. September
published:  2024 21. August

Radicale

Ein eigener Kalender und Adressbuchserver.
Erfolgreich getestet mit folgender Version:
radicale 3.1.8
Debian 12 Bookworm 64bit

Grundkonfiguration

In der Datei /etc/radicale/config werden Einstellungen vorgenommen. Die wichtigsten sind die IP-Adresse und der Port des Servers im Abschnitt [server] und das Authentifizierungsverfahren im Abschnitt [auth].

Datei: /etc/radicale/config

 [server]
 hosts = xx.xxx.xxx.xx:5232

 [auth]
 type = htpasswd
 htpasswd_filename = /etc/radicale/users
 htpasswd_encryption = bcrypt 


# -*- mode: conf -*-
# vim:ft=cfg

# Config file for Radicale - A simple calendar server
#
# Place it into /etc/radicale/config (global)
# or ~/.config/radicale/config (user)
#
# The current values are the default ones


[server]

# CalDAV server hostnames separated by a comma
# IPv4 syntax: address:port
# IPv6 syntax: [address]:port
# For example: 0.0.0.0:9999, [::]:9999
hosts = localhost:5232

# Max parallel connections
#max_connections = 8

# Max size of request body (bytes)
#max_content_length = 100000000

# Socket timeout (seconds)
#timeout = 30

# SSL flag, enable HTTPS protocol
ssl = true

# SSL certificate path
certificate = /etc/ssl/certs/ssl-cert-snakeoil.pem

# SSL private key
key = /etc/ssl/private/ssl-cert-snakeoil.key

# CA certificate for validating clients. This can be used to secure
# TCP traffic between Radicale and a reverse proxy
#certificate_authority =


[encoding]

# Encoding for responding requests
#request = utf-8

# Encoding for storing local collections
#stock = utf-8


[auth]

# Authentication method
# Value: none | htpasswd | remote_user | http_x_remote_user
type = htpasswd

# Htpasswd filename
htpasswd_filename = /etc/radicale/users

# Htpasswd encryption method
# Value: plain | bcrypt | md5
# bcrypt requires the installation of radicale[bcrypt].
htpasswd_encryption = bcrypt

# Incorrect authentication delay (seconds)
#delay = 1

# Message displayed in the client when a password is needed
#realm = Radicale - Password Required


[rights]

# Rights backend
# Value: none | authenticated | owner_only | owner_write | from_file
type = from_file

# File for rights management from_file
file = /etc/radicale/rights


[storage]

# Storage backend
# Value: multifilesystem | multifilesystem_nolock
#type = multifilesystem

# Folder for storing local collections, created if not present
#filesystem_folder = /var/lib/radicale/collections

# Delete sync token that are older (seconds)
#max_sync_token_age = 2592000

# Command that is run after changes to storage
# Example: ([ -d .git ] || git init) && ([ -e .gitignore ] || printf '.Radicale.cache\n.Radicale.lock\n.Radicale.tmp-*\n' > .gitignore) && git add -A && (git diff --cached --quiet || git commit -m "Changes by "%(user)s)
#hook =


[web]

# Web interface backend
# Value: none | internal
#type = internal


[logging]

# Threshold for the logger
# Value: debug | info | warning | error | critical
level = debug

# Don't include passwords in logs
#mask_passwords = True


[headers]

# Additional HTTP headers
#Access-Control-Allow-Origin = *

Benutzerkonfiguration

Das Anlegen und löschen eines Benutzers erfolgt durch das Programm htpasswd aus dem Debianpaket apache2-utils. Der Benutzer muss nicht auf dem System mit einem eigenen Home-Verzeichnis existieren.

Benutzer anlegen oder löschen

 # Benutzer und Dateien löschen
 htpasswd -D  /etc/radicale/users <UserName>
 rm       -rf /var/lib/radicale/collections/collection-root/<UserName>

 # Benutzer anlegen und Passwortdatei erzeugen
 htpasswd -B -C10 -c /etc/radicale/users <UserName01>
 
 # Weiteren Benutzer anlegen oder Passwort ändern
 htpasswd -B -C10    /etc/radicale/users <UserName02>

htpasswd Options
Option Usage
-B erzeugt Hashwert durch bcrypt-Algorithmus
-c Passwortdatei anlegen oder überschreiben
-C <number> Rundenanzahl für bcrypt-Algorithums - max. 17
-D <UserName> löscht den Benutzers

Und letztlich müssen Dateibenutzer, Gruppen (chown) und Dateizugriffsbit (chmod) geändert werden.

chown, chmod

 chown    radicale:radicale /etc/radicale/users
 chown -R     root:radicale /var/lib/radicale
 chmod -R g=rwx             /var/lib/radicale

Server starten und Test

Debiantypisch wird der Server gestartet mit dem Befehl: systemctl restart radicale. In einem beliebigen Browser wird in der Adresszeile die IP-Adresse des radicale-Servers wie folgt eingegeben: http//:xxx.xxx.xxx.xxx:5232. Auf der Konsole kann getestet werden ob der Server gestartet ist und auf dem Port 5232 lauscht, mit:


 netstat -tulpen | grep 5232

Datenübertragung absichern mit TLS

Für eine verschlüsselte Übertragung wird TLS (OpenSSL) verwendet. Zur Vereinfachung verwenden wir das mit dem Packet ssl-cert installierte Zertifikat und den Schlüssel.

Datei: /etc/radicale/config

 [server]
 ssl = true
 certificate = /etc/ssl/certs/ssl-cert-snakeoil.pem
 key = /etc/ssl/private/ssl-cert-snakeoil.key

Der Nutzer radicale muss der Gruppe ssl-cert hinzugefügt werden.


 sudo usermod -aG ssl-cert radicale

Nach einem Neustart des radicale-Servers kann die Bereitstellung des Zertifikats auf dem Client mit OpenSSL getestet werden.


 openssl s_client -connect <IP-Adresse>:5232 -tls1_3

Unter Umständen kann es sein, das das Zertifikat nicht automatisch von einem Client geladen wird. Gegebenenfalls muss es dann von Hand integriert werden. Zum Beispiel in Thunderbird unter «Menu: Einstellungen → Datenschutz & Sicherheit → Zertifikate verwalten → Ausnahme hinzufügen», dann IP-Adresse eingeben und Zertifikat herunterladen.

Zur Sicherheit sollte man den Fingerabdruck des heruntergeladenen Zertifkats mit dem auf dem radicale-Server vergleichen. Auf dem Server wird der Fingerabdruck des Zertifkat mit folgendem Befehl angezeigt:


 openssl x509 -in ssl-cert-snakeoil.pem -noout -fingerprint -sha256

Radicale Wiki by Ubuntu
raspberry

Stichworte (tags)