Radicale – Behaltet die Kontrolle über Eure
Kontakte, Kalender & Aufgaben¶

Radicale ist eine selbst gehostete Lösung zur Verwaltung von Kontakten, Kalendern und Aufgaben. Sie legt den Schwerpunkt auf Effizienz statt auf eine Fülle von Funktionen. Radicale ist kostenfrei, quelloffen und mit vielen Anwendungen kompatibel.
Dieses Kapitel setzt voraus, dass Ihr Euren Homeserver bereits eingerichtet, grundlegende und fortgeschrittene Sicherheitsmaßnahmen umgesetzt und einen sicheren Fernzugriff konfiguriert habt.
Installation¶
Prüft alle Abhängigkeiten und installiert Radicale auf Eurem Server.
Schritt-für-Schritt-Anleitung
Voraussetzungen¶
Python ist zur Ausführung von Radicale erforderlich, installiert folgende Pakete auf dem Server:
sudo apt install python3 python3-pip
Installation¶
Installiert Radicale:
sudo apt install python3-radicale
Legt als nächstes einen Systembenutzer an, der Radicale ausführen soll. Für die Zwecke dieses Tutorials nennen wir diesen Systembenutzer radicaleadmin. Natürlich könnt Ihr jeden beliebigen Namen wählen, stellt dabei nur sicher, dass Ihr die Befehle entsprechend anpasst:
sudo useradd --system --home-dir / --shell /sbin/nologin radicaleadmin
Es wird keine Datenbank benötigt, erstellt einfach einen Ordner, in dem die Daten von Radicale abgespeichert werden:
sudo mkdir -p /var/lib/radicale/collections
Einrichtung¶
Radicale wurde erfolgreich installiert! Konfiguriert nun die Nutzerverwaltung, Zugangsberechtigungen, Autostart, usw.
Schritt-für-Schritt-Anleitung
BenutzerInnen¶
Radicale unterstützt mehrere BenutzerInnen. Jeder Nutzer kann über eigene Kalender, Kontakte und Aufgabenlisten verfügen. Der Zugriff kann durch Zugangsdaten gesichert werden, die in einer verschlüsselten Datei auf dem Server gespeichert werden.
Installiert die folgenden Pakete, um die Verschlüsselung zu aktivieren:
sudo apt install python3-passlib python3-bcrypt
Erstellt nun ein Verzeichnis für die Zugangsdaten:
sudo mkdir /var/www/radicale
Legt schließlich ein erstes Benutzerkonto mit dem folgenden Befehl an, der unter anderem den -c Parameter übergibt. Ersetzt den Parameter $USER durch den tatsächlichen Benutzernamen. Wenn Ihr dazu aufgefordert werdet, gebt ein sicheres, individuelles Passwort ein:
sudo htpasswd -B -c /var/www/radicale/users $USER
Zur Veranschaulichung legen wir drei Benutzer an — Georg, Lenina und Tom:
sudo htpasswd -B -c /var/www/radicale/users Georg
sudo htpasswd -B /var/www/radicale/users Lenina
sudo htpasswd -B /var/www/radicale/users Tom
Beachtet, dass der -c Parameter lediglich zur Erstellung des ersten Benutzers übergeben werden muss, in diesem Fall "Georg". Zur Erstellung weiterer BenutzerInnen kann der Parameter hingegen entfernt werden, in diesen Fall "Lenina" sowie "Tom".
Überprüft abschließend, ob alle Zugangsdaten korrekt erstellt wurden:
sudo cat /var/www/radicale/users
Die Terminal-Ausgabe sollte in etwa folgendermaßen aussehen:
Georg:$2y$05$Zsb8MYlKjRr2InVi/IQNtustqfdnHWN14uG9jNNhx1g rF7a/8Cg6
Lenina:$2y$05$Hh2Y8nrikm 9f1Pz8LrOFe K5NR HlL0Qz3Yvv gupSBgIr4lT0bi
Tom:$2y$05$1BnHnXCqNHXZtWMiFhnxBOpYM9xeVnZXm70SoTclEfsrI JPSvDVy
Einstellungen¶
Erstellt ein Verzeichnis, in dem alle Einstellungen abgelegt werden:
sudo mkdir /etc/radicale
Öffnet die Konfigurationsdatei:
sudo vi /etc/radicale/config
Ergänzt oder ändert die folgenden Zeilen:
[server]
hosts = 0.0.0.0:5232, [::]:5232
max_connections = 20
max_content_length = 10000000
timeout = 10
[auth]
type = http_x_remote_user
htpasswd_filename = /var/www/radicale/users
htpasswd_encryption = bcrypt
delay = 5
[storage]
filesystem_folder = /var/lib/radicale/collections
Hier ein paar Zusatzinformationen zu diesen Einstellungen:
| Einstellung | Beschreibung |
|---|---|
hosts | Ermöglicht den Fernzugriff auf Kalender und Kontakte. |
max_connections | Begrenzt die Anzahl der parallelen Verbindungen auf 20. |
max_content_length | Begrenzt die Dateigröße auf 1 MB. Wichtig für umfangreiche Kontaktfotos. |
timeout | Beendet die Verbindung nach 10 Sekunden. |
type | Aktiviert die Authentifizierung mit dem Reverse-Proxy. Radicale verwendet den im X-Remote-User HTTP-Header angegebenen Benutzernamen. |
htpasswd_filename | Gibt den Ordnerpfad an, unter dem Benutzernamen und Passwörter gespeichert werden. Im vorliegenden Fall handelt es sich um /var/www/radicale/users. |
htpasswd_encryption | Gibt die Methode an, die zur Verschlüsselung von Benutzernamen und Passwörtern verwendet werden soll. Im vorliegenden Fall handelt es sich um bcrypt. |
delay | Setzt die Wartezeit nach einem fehlgeschlagenen Anmeldeversuch auf 5 Sekunden, um sogenannte Brute-Force-Angriffe abzuwehren. |
filesystem_folder | Gibt den Ordnerpfad an, unter dem Radicale Daten speichert. Im vorliegenden Fall handelt es sich um /var/lib/radicale/collections. |
Zugriffsrechte¶
Zugriffsrechte auf die Verzeichnisse /var/lib/radicale (enthält Daten), /var/www/radicale (enthält verschlüsselte Zugangsdaten) und /etc/radicale (enthält Einstellungen) werden auf den Nutzer radicaleadmin beschränkt:
sudo chown -R radicaleadmin:radicaleadmin /var/lib/radicale
sudo chmod -R 700 /var/lib/radicale
sudo chown -R radicaleadmin:radicaleadmin /var/www/radicale
sudo chmod -R 755 /var/www/radicale
sudo chown -R radicaleadmin:radicaleadmin /etc/radicale
sudo chmod -R 700 /etc/radicale
Autostart¶
Stellt sicher, dass Radicale bei jedem Hochfahren des Servers automatisch gestartet wird. Erstellt eine Konfigurationsdatei:
sudo vi /etc/systemd/system/radicale.service
Gebt den folgenden Text ein und passt den Inhalt (Benutzernamen, usw.) entsprechend an:
[Unit]
Description=A simple CalDAV (calendar) and CardDAV (contact) server
After=network.target
Requires=network.target
[Service]
ExecStart=/usr/bin/env python3 -m radicale
Restart=on-failure
User=radicaleadmin
Group=radicaleadmin
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
NoNewPrivileges=true
ReadWritePaths=/var/lib/radicale/collections
[Install]
WantedBy=multi-user.target
Stellt sicher, dass Radicale bei jedem Boot-Vorgang automatisch gestartet wird:
sudo systemctl daemon-reload
sudo systemctl enable radicale
Startet den Server neu:
sudo reboot
Vergewissert Euch, dass Radicale aktiv ist und läuft (der Status sollte "Activ" sein):
sudo systemctl status radicale
Web-Oberfläche¶
Richtet einen Apache Virtual Host als Reverse Proxy ein, um über eine eigene Adresse auf die Radicale-Weboberfläche zuzugreifen und den Server nicht direkt dem Internet auszusetzen. Weitere Details findet Ihr nachstehend.
Schritt-für-Schritt-Anleitung
Erstellt eine Apache-Konfigurationsdatei:
sudo vi /etc/apache2/sites-available/myradicale.gofoss.duckdns.org.conf
Fügt den folgenden Inhalt hinzu und stellt sicher, dass Ihr die Einstellungen an Eure eigene Konfiguration anpasst, wie z. B. den Domain-Namen (myradicale.gofoss.duckdns.org), den Pfad zu SSL-Schlüsseln, die IP-Adressen und so weiter:
<VirtualHost *:80>
ServerName myradicale.gofoss.duckdns.org
ServerAlias www.myradicale.gofoss.duckdns.org
Redirect permanent / https://myradicale.gofoss.duckdns.org/
</VirtualHost>
<VirtualHost *:443>
ServerName myradicale.gofoss.duckdns.org
ServerAlias www.myradicale.gofoss.duckdns.org
ServerSignature Off
<IfModule security2_module>
SecRuleEngine Off
</IfModule>
SSLEngine On
SSLProxyEngine On
SSLProxyCheckPeerCN Off
SSLCertificateFile /etc/dehydrated/certs/gofoss.duckdns.org/fullchain.pem
SSLCertificateKeyFile /etc/dehydrated/certs/gofoss.duckdns.org/privkey.pem
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24
Allow from 10.8.0.1/24
</Location>
RewriteEngine On
RewriteRule ^/radicale$ /radicale/ [R,L]
<Location "/radicale/">
AuthType Basic
AuthName "Radicale - Password Required"
AuthUserFile "/var/www/radicale/users"
Require valid-user
ProxyPass http://localhost:5232/ retry=0
ProxyPassReverse http://localhost:5232/
RequestHeader set X-Script-Name /radicale/
RequestHeader set X-Remote-User expr=%{REMOTE_USER}
</Location>
ErrorLog ${APACHE_LOG_DIR}/myradicale.gofoss.duckdns.org-error.log
CustomLog ${APACHE_LOG_DIR}/myradicale.gofoss.duckdns.org-access.log combined
</VirtualHost>
Speichert und schließt die Datei (:wq!).
Man beachte, dass die SSL-Verschlüsselung für Radicale mit der Anweisung SSLEngine On aktiviert und das zuvor erstellte SSL-Zertifikat /etc/dehydrated/certs/gofoss.duckdns.org/fullchain.pem sowie der private SSL-Schlüssel /etc/dehydrated/certs/gofoss.duckdns.org/privkey.pem verwendet wurden.
Man beachte des Weiteren, dass ModSecurity in der Apache-Konfigurationsdatei mit der Anweisung SecRuleEngine Off deaktiviert wurde, da Radicale und ModSecurity nicht gut miteinander harmonieren.
Aktiviert als nächstes den Apache Virtual Host und ladet Apache neu:
sudo a2ensite myradicale.gofoss.duckdns.org.conf
sudo systemctl reload apache2
Konfiguriert Pi-Hole, um die lokale Adresse von Radicale nutzen zu können. Ruft https://mypihole.gofoss.duckdns.org auf und meldet Euch über die Pi-Hole-Weboberfläche an (passt die URL entsprechend an). Öffnet den Menüeintrag Locale DNS Records und fügt die folgende Domain/IP-Kombination hinzu (passt die URL sowie IP entsprechend an):
DOMAIN: myradicale.gofoss.duckdns.org
IP ADDRESS: 192.168.1.100
Ruft https://myradicale.gofoss.duckdns.org auf und meldet Euch an. Erstellt je nach Bedarf Kalender, Adressbücher und Aufgabenlisten.
Clients¶
DAVx⁵ integriert sich nahtlos in die Kalender-, Kontakt- und Aufgaben-Apps Eures Android-Geräts und synchronisiert diese mit Radicale. Radicale funktioniert zudem gut mit Thunderbird unter Windows, macOS oder Linux (Ubuntu).
Schritt-für-Schritt-Anleitung
Öffnet F-Droid und installiert DAVx⁵. Alternativ findet Ihr die App im Aurora Store oder im Play Store von Google.
| Anweisungen | Beschreibung |
|---|---|
| DAVx⁵ starten | Öffnet die DAVx⁵-App und deaktiviert die Akkuoptimierung, sobald Ihr dazu aufgefordert werdet. |
| Neues Konto erstellen | Tippt auf das +-Zeichen, um ein neues Konto zu erstellen. Wählt Mit URL und Benutzername anmelden. |
| Basis-URL | Gebt die Adresse des Radicale-Servers an. In unserem Beispiel ist das https://myradicale.gofoss.duckdns.org/radicale. Passt die URL entsprechend an. |
| Nutzer & Kennwort | Gebt gültige Zugangsdaten ein. In unserem Beispiel sind gültige Benutzer Georg, Lenina oder Tom. |
| Kontaktgruppen-Methode | Wählt im nächsten Dialogfenster Gruppen sind eigene vCards. |
| Konto erstellen | Klickt auf Konto erstellen. |
Schritt-für-Schritt-Anleitung
Eine ausführliche Installationsanleitung für Thunderbird findet Ihr im vorherigen Kapitel über E-Mail-Clients. Öffnet Thunderbird und ruft den Menüeintrag Tools ‣ Add-ons auf. Installiert die Erweiterung Cardbook. Startet abschließend Thunderbird neu.
Clients benötigen einen VPN-Zugang
Clients müssen über VPN mit dem Server verbunden sein, um auf Radicale zugreifen zu können.
Kontakte importieren¶
Eure Kontaktdaten sind wahrscheinlich über mehrere Geräte und Dienste hinweg verstreut. Folgt dieser Anleitung, um sie in Radicale zu importieren.
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Exportiert Eure vorhandenen Kontakte von Euren Geräten oder Cloud-Diensten (Google, Microsoft, Apple usw.) im vCard-Format (.vcf). |
| Schritt 2 | Legt eine Sicherungskopie Eurer .vcf Dateien an. |
| Schritt 3 | Übertragt die verschiedenen .vcf-Dateien auf Euer Android-Telefon. |
| Schritt 4 | Öffnet die Standard-Kontakt-App auf Eurem Telefon. Solltet Ihr eine andere Kontakt-App verwenden, weichen die nachstehenden Anweisungen möglicherweise ab. |
| Schritt 5 | Ruft den Menüeintrag Einstellungen ‣ Importieren auf. |
| Schritt 6 | Wählt den Menüeintrag VCF-Datei. |
| Schritt 7 | Sucht den Speicherort der .vcf-Dateien und wählt eine Datei aus. |
| Schritt 8 | Tippt auf Importierte Kontakte speichern unter: DAVx⁵-Adressbuch und wählt das entsprechende Radicale-Adressbuch. |
| Schritt 9 | Wiederholt diesen Vorgang, bis alle Kontakte importiert wurden. |
Kontakte synchronisieren¶
Alle Änderungen an Euren Kontakten, die lokal auf einem Gerät erfolgen, werden mit dem Radicale-CardDav-Server und allen verbundenen Geräten synchronisiert.
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Öffnet auf Eurem Android-Telefon den DAVx⁵-Hauptbildschirm und wählt ein Konto aus. |
| Schritt 2 | Ruft den CardDAV Menüeintrag auf, und wählt die Radicale-Adressbücher aus, die mit dem Telefon synchronisiert werden sollen. |
| Schritt 3 | Klickt auf die Synchronisation-Taste. |
| Schritt 4 | Überprüft, ob alles funktioniert hat. Öffnet die Kontakte-App Eures Telefons und wählt den Menüeintrag Einstellungen ‣ Konten. Hier sollten nun die Radicale-Adressbücher angezeigt werden. |
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Meldet Euch bei https://myradicale.gofoss.duckdns.org/radicale an (passt die URL entsprechend an). |
| Schritt 2 | Wählt das Adressbuch aus, das Ihr synchronisieren möchtet, und kopiert dessen URL-Link. |
| Schritt 3 | Öffnet Thunderbird und wählt den Menüeintrag Cardbook ‣ Adressbuch ‣ Neues Adressbuch. |
| Schritt 4 | Folgt dem Einrichtungsassistenten: • Ort des neuen Adressbuchs: Im Netzwerk • Art: CardDAV• URL: Fügt den URL-Link des Radicale-Adressbuchs ein, den Ihr zuvor kopiert habt• Benutzername & Passwort: Gebt gültige Radicale-Zugangsdaten an• Eigenschaften: Name, Farbe, Offline-Verfügbarkeit des Adressbuchs, usw. |
| Schritt 5 | Überprüft, ob alles funktioniert hat. Das Radicale-Adressbuch sollte nun in Thunderbirds CardBook-Reiter erscheinen. |
Kalender importieren¶
Eure Kalender sind wahrscheinlich über mehrere Geräte und Dienste hinweg verstreut. Folgt dieser Anleitung, um sie in Radicale zu importieren.
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Exportiert Eure vorhandenen Kalender aus Euren Geräten oder Cloud-Diensten (Google, Microsoft, Apple usw.) im iCalendar-Format (.ics). |
| Schritt 2 | Legt eine Sicherungskopie Eurer .ics Dateien an. |
| Schritt 3 | Übertragt die verschiedenen .ics-Dateien auf Euer Android-Telefon. |
| Schritt 4 | Öffnet F-Droid auf Eurem Telefon und installiert die App Calendar Import-Export. Alternativ findet Ihr die App auf Googles Play Store. |
| Schritt 5 | Öffnet die Calendar Import-Export App und klickt auf Dateien importieren. |
| Schritt 6 | Sucht den Speicherort der .ics-Dateien und wählt eine Datei aus. |
| Schritt 7 | Importiert die .ics-Datei in DAVx⁵ und wählt den entsprechenden Radicale-Kalender. |
| Schritt 8 | Wiederholt diesen Vorgang, bis alle Kalender importiert wurden. |
Kalender synchronisieren¶
Alle Änderungen an Euren Kalendereinträgen, die lokal auf einem Gerät erfolgen, werden mit dem Radicale-CardDav-Server und allen verbundenen Geräten synchronisiert.
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Öffnet auf Eurem Android-Telefon den DAVx⁵-Hauptbildschirm und wählt ein Konto aus. |
| Schritt 2 | Ruft den CardDAV Menüeintrag auf, und wählt die Radicale-Kalender aus, die mit dem Telefon synchronisiert werden sollen. |
| Schritt 3 | Klickt auf die Synchronisation-Taste. |
| Schritt 4 | Installiert und öffnet die Simple Calendar app auf Eurem Telefon. Solltet Ihr eine andere Kalender-App verwenden, weichen die nachstehenden Anweisungen möglicherweise ab. |
| Schritt 5 | Wählt den Menüeintrag Einstellungen und stellt sicher, dass die Option CalDAV-Synchronisierung aktiv ist. |
| Schritt 6 | Wählt den Menüeintrag Synchronisierte Kalender verwalten. Die Radicale-Kalender sollten nun hier auftauchen. |
| Schritt 7 | Wählt die Radicale-Kalender und klickt auf OK. |
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Meldet Euch bei https://myradicale.gofoss.duckdns.org/radicale an (passt die URL entsprechend an). |
| Schritt 2 | Wählt den Kalender aus, den Ihr synchronisieren möchtet, und kopiert dessen URL-Link. |
| Schritt 3 | Öffnet Thunderbird und wählt den Menüeintrag Neu ‣ Kalender. |
| Schritt 4 | Folgt dem Einrichtungsassistenten: • Ort Ihres Kalenders feststellen: Im Netzwerk • Format: CalDAV (wählt nicht iCalendar (ICS)!) • Benutzername: Gebt einen gültigen Radicale-Benutzernamen an• Adresse: Fügt den URL-Link des Radicale-Kalenders ein, den Ihr zuvor kopiert habt• Offline-Unterstützung: Markiert das Kästchen• Eigenschaften: Legt den Namen und die Farbe des Kalenders fest, aktiviert Erinnerungen, ordnet eine E-Mail-Adresse zu um Einladungen zu verwalten, usw. |
| Schritt 5 | Überprüft, ob alles funktioniert hat. Der Radicale-Kalender sollte nun in Thunderbirds Kalender-Reiter erscheinen. |
Aufgaben verwalten¶
Alle Änderungen an Euren Aufgabenlisten, die lokal auf einem Gerät erfolgen, werden mit dem Radicale-CardDav-Server und allen verbundenen Geräten synchronisiert.
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Öffnet auf Eurem Android-Telefon den DAVx⁵-Hauptbildschirm und wählt ein Konto aus. |
| Schritt 2 | Ruft den CalDAV Menüeintrag auf, und wählt die Radicale-Aufgabenlisten aus, die mit dem Telefon synchronisiert werden sollen. |
| Schritt 3 | Klickt auf die Synchronisation-Taste. |
| Schritt 4 | Installiert und öffnet die Tasks.org App auf Eurem Telefon. Solltet Ihr eine andere Kalender-App verwenden, weichen die nachstehenden Anweisungen möglicherweise ab. |
| Schritt 5 | Wählt den Menüeintrag Einstellungen. Die Radicale-Aufgabenlisten sollten nun hier auftauchen. |
Schritt-für-Schritt-Anleitung
| Anweisungen | Beschreibung |
|---|---|
| Schritt 1 | Meldet Euch bei https://myradicale.gofoss.duckdns.org/radicale an (passt die URL entsprechend an). |
| Schritt 2 | Wählt die Aufgabenliste aus, die Ihr synchronisieren möchtet, und kopiert den dazugehörigen URL-Link. |
| Schritt 3 | Öffnet Thunderbird und wählt den Menüeintrag Neu ‣ Kalender. |
| Schritt 4 | Folgt dem Einrichtungsassistenten: • Ort Ihres Kalenders feststellen: Im Netzwerk • Format: CalDAV (wählt nicht iCalendar (ICS)!)• Benutzername: Gebt einen gültigen Radicale-Benutzernamen an• Adresse: Fügt den URL-Link der Radicale-Aufgabenliste ein, den Ihr zuvor kopiert habt• Offline-Unterstützung: Markiert das Kästchen• Eigenschaften: Legt den Namen und die Farbe der Aufgabenliste fest und aktiviert Erinnerungen. Eine E-Mail-Adresse ist nicht notwendig. |
| Schritt 5 | Überprüft, ob alles funktioniert hat. Die Radicale-Aufgabenliste sollte nun in Thunderbirds Kalender-Reiter erscheinen. |
Datensicherung¶
Führt regelmäßig Datensicherungen durch! Radicale ist zuverlässig, aber nicht fehlerfrei. Kontakte, Kalender und Aufgabenlisten bleiben synchron, solange Eure Geräte über VPN mit dem Server verbunden sind. Dennoch können Synchronisationsfehler auftreten. Oder Ihr löscht versehentlich Informationen. Sobald diese über Server und Geräte abgeglichen sind, sind die Daten endgültig verloren.
Schritt-für-Schritt-Anleitung
Um manuelle Datensicherungen durchzuführen, meldet Euch bei https://myradicale.gofoss.duckdns.org/radicale an (passt die URL entsprechend an) und klickt auf die URL-Links von Adressbüchern, Kalendern und Aufgabenlisten, um Eure Daten herunterzuladen.
Ihr könnt ebenfalls automatische Sicherungen der Verzeichnisse /var/lib/radicale, /var/www/radicale und /etc/radicale durchführen.
Unterstützung¶
Weitere Informationen finden Sie in der Dokumentation zu Radicale, DAVx⁵ oder Thunderbird.