📱 Erkannter Endgerättyp ⛱️ Tag und Nacht. Verbraucht keinen oder einen 🍪.
guest
Login 🍪 0 Anzahl Ihrer gespeicherten Kekse, führt zur Keksdose

🗓️ Kalender, 📇 Kontakte, 📑 Aufgaben für 👥 verschachtelte Gruppen

dav.domain.tld

🧑‍🔧 Installation

apt install radicale

Wir aktivieren radicale auf allen Interfaces, denn es läuft ohne root-Rechte und leitet Logins nur weiter. Sie können radicale halbwegs bedenkenlos direkt im Internet einsetzen.

/etc/radicale/config

[server]
hosts = 0.0.0.0:5232

🔐 SSL aktivieren

Auch hier zwingend ein 🗝️ LetsEncrypt-Zertifikat. Dazu kommt, dass radicale nicht mit root-Rechten läuft (was eigentlich sehr schön ist) und daher keine Schlüssel lesen kann.

Deshalb erstellen wir in LetsEncrypt einen renewal deploy-hook der den Schlüssel nach jeder Aktualisierung kopiert und radicale neu startet:

Holen Sie explizit für dav.domain.tld ein eigenes Zertifikat:

root@server:/etc/letsencrypt# certbot certonly --dns-rfc2136 --dns-rfc2136-credentials /etc/letsencrypt/ns1.krei.se.rfc2136.ini -d 'dav.domain.tld.'

In /etc/letsencrypt/live/dav.domain.tld liegen nur Symlinks, kopieren wollen wir aber immer den aktuellen Schlüssel

/etc/letsencrypt/renewal-hooks/deploy/radicale.sh

#!/bin/bash
# $RENEWED_DOMAINS enthält die aktualisierte Domain (i.d.R. nur eine)
# $RENEWED_LINEAGE enthält den Pfad zu /etc/letsencrypt/live/domain.tld

if grep --quiet "dav.domain.tld" <<< "$RENEWED_DOMAINS"; then

    # Unbedingt -L nutzen um Symlinks zu folgen (dereferenzieren), sonst kopieren Sie nur den Symlink!

    cp -L $RENEWED_LINEAGE/fullchain.pem /etc/radicale/dav.domain.tld.fullchain.pem
    cp -L $RENEWED_LINEAGE/privkey.pem /etc/radicale/dav.domain.tld.privkey.pem
    chown radicale:radicale /etc/radicale/dav.domain.tld.*.pem

    # Schlüssel ist Standard 600, Zertifikat 644 was uns hier genügt. 
    # chmod 660 /etc/ejabberd/ssl.*.pem

    systemctl restart radicale

fi

Checken, dass es auf eine neue Zeile endet und das Skript mit chmod +x radicale.sh ausführbar machen.

/etc/radicale/config

[server]

ssl = True
certificate = /etc/radicale/dav.domain.tld.fullchain.pem
key = /etc/radicale/dav.domain.tld.privkey.pem

Authentifizierung gegen IMAP

Radicale kann sich ab Debian Trixie direkt gegen IMAP authentifizieren

/etc/radicale/config

[auth]

type = imap
imap_host = mail.domain.tld
imap_security = tls

Und das wars schon. Das Dovecot-Plugin ist nun direkt eingebaut, ich habe es allerdings nicht lauffähig bekommen.

Storage unter Debian fixen

/etc/radicale/config

[storage]

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

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

Der Standard-Speicherort für Radicale ist /var/lib/radicale - allerdings scheint Debian hier root:root als User zu haben.

root@server:~# chown -R radicale:radicale /var/lib/radicale

Löst dieses Problem. Wer den Speicherort für Backups intuitiver haben will, kann das ändern.

Webserver aktivieren

Zum Anlegen von Kalendern und Kontaktlisten lohnt sich den internen Webserver anzuschalten:

/etc/radicale/config

[web]

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

Anschliessend kann man einfach auf https://dav.domain.tld:5232 checken ob alle Kalender, etc. funktionieren.

Service aktivieren

Nicht vergessen: systemctl enable radicale && systemctl start radicale

SRV-Records

Damit Clienten keine 100 Zeichen Pfade eingeben müssen empfielt sich auf dem Nameserver der KOMPLETTEN DOMAIN SRV-Records anzulegen

Format für BIND9:

_caldavs.domain.tld. SRV 10 100 5232 dav.domain.tld
_carddavs.domain.tld. SRV 10 100 5232 dav.domain.tld

Android Apps und droidfor.ge

Ich empfehle DAVx5 für Kontakte und Kalender und jtx board für Aufgaben und Journale.

Die Journale sind super praktisch, hier kann man sich Notizen anlegen die sich mit vertretbarem Aufwand in Skripten, etc. nutzen lassen.

DAVx5 enthält in droidfor.ge eine Autoprovision, d.h. ein User in Ihrer Domäne kann hier ein vorbereitetes Gerät erhalten: Mehr unter droidfor.ge

Current PTF

Hintergrund ändern. Verbraucht keinen oder einen 🍪.

Verknüpften Viewport öffnen

🎮 Steuerung
Dokumentation 🕹️
Sie sind leider kein Entwickler :(

Content Nodes Amount

Diligence / PTF Amount

FPS

Vertex-Count