Zum Inhalt

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

Radicale Kalender Radicale Kalender

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


Radicale Konfiguration

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


Radicale Weboberfläche

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.


Radicale Clients

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.


Radicale Kontakte importieren

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.


Radicale Kontakte synchronisieren

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.


Radicale Kalender importieren

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.


Radicale Kalender synchronisieren

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.


Radicale Aufgaben synchronisieren

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.


Radicale Datensicherung

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.


Radicale Unterstützung

Unterstützung

Weitere Informationen finden Sie in der Dokumentation zu Radicale, DAVx⁵ oder Thunderbird.

Radicale