Raspberry Pi: Radicale CalDAV und CardDAV Server installieren

31 Jan
31. Januar 2015

Seine Kontakte und Kalender bei Google und Co. zu synchronisieren ist nicht jedermanns Sache. Dank des CalDAV bzw. CardDAV Standards lässt sich ein solcher Service auch selbst betreiben und der Raspberrry Pi eignet sich, auf Grund dessen niedrigen Energiekonsums, für diesen Zweck exzellent. Möchte man neben Kontakte und Kalender auch Dateien synchronisieren so bietet es sich an die entsprechenden Funktionen von Owncloud zu verwenden. Wenn man hingegen nur Kontakte und den Kalender abgleichen möchte kann man neben Baïkal auch auf Radicale als CalDAV und CardDAV Server zurückgreifen. Wie man Radicale auf dem Raspberry Pi installiert erkläre ich im Folgenden.

Voraussetzung: Raspbian oder vergleichbare Distribution installiert

Step 1

Zunächst müssen wir mittels des Paketmanagers APT das Paket python-dev installieren, damit die verwendete Software später ordentlich funktioniert.

sudo apt-get install python-dev

Step 2

Anschließend müssen wir Radicale von dessen Projektseite als Source Package herunterladen und entpacken. Zum Zeitpunkt als dieser Artikel verfasst wurde war Version 0.9 aktuell.

wget http://pypi.python.org/packages/source/R/Radicale/Radicale-0.9.tar.gz
tar xzvf Radicale-*.tar.gz

Step 3

Außerdem sollten wir bcrypt für Python installieren, damit die Authentifizierung von Radicale später besser abgesichert ist. Zum Zeitpunkt als dieses Tutorial erschien war Version 0.4 aktuell.

wget http://py-bcrypt.googlecode.com/files/py-bcrypt-0.4.tar.gz
tar xzvf py-bcrypt-0.4.tar.gz
cd py-bcrypt-0.4
sudo python setup.py build && sudo python setup.py install
cd ..

Step 4

Damit bcrypt in Radicale verwendet wird müssen wir folgende Zeilen in das Script einfügen. In dem Editor nano kann man mittels STRG + W suchen und mittels STRG + X, Y und Enter speichern.

nano Radicale-*/radicale/auth/htpasswd.py

einfügen nach der Zeile

außerdem müssen folgende Zeilen an das Ende der Datei eingefügt werden

Step 5

Jetzt können wir das in Python geschriebene Radicale installieren.

cd Radicale-*
sudo python setup.py install

Step 6

Nachdem die Software installiert ist müssen wir einen Ordner für die Konfigurationen der Software anlegen und in diesem eine Konfigurationsdatei erzeugen.

sudo mkdir /etc/radicale
sudo nano /etc/radicale/config

Step 7

Da wir Radicale mit einer SSL verschlüsselten Verbindung verwenden werden müssen wir hierfür ein selbst signiertes Zertifikat anlegen. Dabei werden bei letzterem Befehl mehrere Fragen gestellt. Bei Country Name geben wir DE (ggf. abweichend) und bei Common Name die IP-Adresse des Raspberry Pis oder, falls verwendet, die DynDNS Domain an. Alle anderen Felder können wir mittels Enter überspringen.

sudo mkdir /etc/radicale/ssl
cd /etc/radicale/ssl
sudo openssl genrsa -out server.key 4096
sudo openssl req -new -x509 -sha256 -days 3650 -key server.key -out server.crt

Step 8

Aus Sicherheitsgründen legen wir für Radicale den Benutzer radicale an in den wir anschließend wechseln. Die gestellten Fragen beim Anlegen des Benutzers können mittels Enter übersprungen werden.

sudo adduser --disabled-login radicale

Benutzer wechseln
sudo su radicale

Step 9

Jetzt müssen wir ein Script anlegen mit dem wir später neue Benutzer anlegen können. Dieses eigene Script wird nötig, da wir bcrypt zur Verbesserung der Sicherheit verwenden.

cd ~
nano add-user.py

Step 10

Es ist nun an der Zeit mittels folgenden Kommandos den CalDAV und CardDAV Server zu starten. Wenn dies ordentlich funktioniert erhält man keinerlei Ausgabe.

radicale

Step 11 (optional)

Damit Radicale automatisch beim Booten des Raspberry Pis startet müssen wir den Befehl zum Starten am Ende der Datei /etc/rc.local vor „exit 0“ eintragen, wozu wir jedoch zunächst den Benutzer radicale verlassen müssen.

exit
sudo nano /etc/rc.local

Damit ist der Radicale CalDAV und CardDAV Server installiert und einsatzbereit. Bevor wir jedoch synchronisieren können müssen wir noch einen oder mehrere Benutzer anlegen.

Neuen Benutzer anlegen

Das zuvor angelegte Script zum Anlegen eines Benutzers führen wir nun aus. Dabei muss man USERNAME durch den gewünschten Benutzernamen und PASSWORD durch das gewünschte Passwort ersetzen. Der Befehl muss als ein Benutzer mit sudo-Rechten ausgeführt werden (Standard pi).

sudo python /home/radicale/add-user.py -u USERNAME -p PASSWORD

Endgültig fertig! Wir können die Kalender und Kontakte nun auf den Geräten synchronisieren. Wie man verschiedenste Clients einrichtet wird in der Radicale Dokumentation schön erklärt.

Zugriff außerhalb des eigenen Netzwerks
Portfreigabe im Router

Soll der soeben installierte Dienst auch außerhalb des eigenen Netzwerkes verfügbar sein, so müssen folgende Ports im Router freigegeben werden. Wie man freigibt, beschrieb ich in dem Artikel Portforwarding bei Fritz!Box und Speedport.

5232
Dir hat der Artikel gefallen?
Teile ihn mit deinen Freunden!
76 Antworten
  1. Markus says:

    Danke für die Anleitung hab ich ja schon lange gewartet drauf

    In Step 4 hast du ein Fehler

    nano Radicale-*/radicale/auth/htpasswd.py

    1

    import bcrypt

    einfügen nach der Zeile

    1

    import bcrypt

    zweimal import bcrypt

    Antworten
  2. Michi says:

    Hi,

    ich wüde zum Schutz der Zertifikate noch folgende Befehle ausführen.

    sudo chmod 600 /etc/radicale/ssl/server.key
    sudo chmod 600 /etc/radicale/ssl/server.crt

    Wie schlägt sich Radicale im Vergleich zu Baikal?

    Gruß
    Michi

    Antworten
    • Jan Karres says:

      Das ist keine gute Idee, da Radicale unter dessen Benutzer ausgeführt wird und folglich nicht die nötigen Rechte hätte auf die Dateien zuzugreifen. Klar, könnte man auch anderes lösen (Besitzrechte ändern), aber in der Regel sollte das auf einem Raspberry Pi wirklich kein Problem darstellen.

      Antworten
  3. Markus says:

    Beim Versuch Benutzer anzulegen kommt:

    File „/home/radicale/add-user.py“, line 14
    parser.print_help()
    ^
    IndentationError: expected an indented block

    Antworten
  4. Thomas says:

    Hallo, danke für die tolle Anleitung. Habe jedoch auch ein Problem. Wenn ich neue Benutzer anlegen will, erhalte ich: [sudo] password for radicale: . Habe ich übersehen, wo das Passwort definiert wird? Freilassen geht nicht.

    Antworten
  5. Sven says:

    Hallo auch ich habe den Fehler von Markus:

    sudo python /home/radicale/add-user.py -u ytest -p ytest

    >
    File „/home/radicale/add-user.py“, line 14
    parser.print_help()
    ^
    IndentationError: expected an indented block

    Hat Jemand eine Lösung?

    Antworten
    • Jan Karres says:

      Ich denke du hast da was falsch kopiert. Habe es gerade selbst ausprobiert und es hat problemlos funktioniert. Versuche doch noch einmal die Datei neu anzulegen.

      Antworten
  6. Sven says:

    Hi,

    bei Step 4 muss es doch heißen sudo ./setup.py install oder?

    🙂

    Antworten
  7. Thilo says:

    Hallo, erstmal SUPER Anleitung! Danke.

    Allerdings ist mir aufgefallen dass im letzten Schritt bei
    sudo python /home/radicale/add-user.py -u USERNAME -p PASSWORD
    er das Passwort nur korrekt übernimmt wenn ich es in „“ setze. Ansonsten interpretiert er es als Code und folglich kann ich mich nicht einloggen.

    Antworten
  8. Stefan says:

    Hallo,
    Danke für die Anleitung!

    habe soweit alles zum Laufen bekommen, wollte dann mehrere user anlegen, dabei gibt es aber probleme:
    zum einen scheint das add-user.py die weiteren user, die man anlegt, alle weiter in die 1.te zeile zu schreiben, habe das manuell korrigiert, weiss aber nicht ob die datei (users) die namen + passwörter jetzt im richtigen format enthält?!
    In Lightning klappt das hinzufügen von Kalendern des ersten users, die des 2.ten klappen nicht mehr. Ist das jetzt ein Problem von Lightning?? Lightning fragt ja beim ersten user das passwort noch ab, beim 2.ten allerdings nicht mehr. kein Wunder dass es dann nicht geht??

    Mit nur einem User klappt es sehr gut, konnte das Konto sogar auf einem windows phone einrichten. Allerdings liessen sich hier Termine nicht mehr löschen?

    war als nicht – linux user ganz überrascht, dass es doch relativ einfach einzurichten war, wenn auch einige Hürden übersprungen werden mussten. Mit dem einrichten von mehreren usern komme ich jetzt aber nicht weiter.

    was würdet Ihr denn für so jemanden wie mich (in linux unerfahren, möchte Kalender + Kontakte zwischen Lightning (Windows) und Mobil (im Moment Windows Phone) synchronisieren (für mehrere Personen), aber möglichst mit eigener Lösung (keine MS oder andere Cloud), und sollte möglichst einfach einzurichten sein? gibt es da eine empfehlenswerte Alternative zu Radicale?

    Danke, Stefan

    Antworten
    • Klaus says:

      Auch ich hatte einige Schwierigkeiten bei mehreren Usern, liess sich dann aber lösen: Im Script zum Anlegen der User muss die Zeile angepasst werden, in der der Benutzer in die Datei geschrieben wird:
      configfile.write(options.username + „:“ + hashed + „\n“)
      Durch das Einfügen von + „\n“ (der Rest bleibt gleich) wird die Zeile beendet und der nächste Benutzer wird in einer neuen Zeile in die Datei users eingetragen.
      Ich wollte für mehrere Personen je einen Kalender haben, wobei alle Personen alle Kalender lesen dürfen und habe in der Konfigurationsdatei die Berechtigung angepasst:

      [rights]
      type = owner_write

      Nur der Owner kann einen Kalender anlegen und beschreiben (das gilt wohl auch bei der Einstellung owner_only).
      Daher muss auf jeden Fall immer der owner angemeldet sein, um einen Kalender aus Lightning heraus anzulegen. Beim ersten Kalender geht’s problemlos. Zum Anlegen jedes weitern Kalenders muss man Thunderbird nur einmal beenden (das Passwort aber nicht speichern!!!) und neu starten. Diesmal mit einem anderen Benutzer anmelden und dessen neuen Kalender anlegen.

      Antworten
  9. Dirk says:

    Hallo und Danke für die tollen Aleitungen!

    Ich habe nun mehrfach eine Installation nach Tutorial vorgenommen (mit Radicale 0.0.10) und bekomme bei Thunderbird/Lightning unter Ubuntu immer folgende Fehlermeldung:

    Server Replied with 500 / MODIFICATION_FAILED / Status-Code: 2147746065, Die Anfrage kann nicht verarbeitet werden.

    Bin für Hilfe sehr dankbar!
    Auf meiner Fehlersuche habe ich es mit und ohne SSL versucht. Mit eingeschaltetem SSL hat mich Thunderbird anfangs wegen der Unsicherheit meines eigens erstellten Zertifikates gewarnt, sodass ich annehme, dass der Server von Python gestartet richtig läuft.
    Nach Eingabe von sudo netstat -plnt erfolgt folgende Zeile:
    tcp 0 0 0.0.0.0:5232 0.0.0.0:* LISTEN 2084/python
    sudo ps aux | grep radicale ergibt folgende Antwort:
    radicale 2084 0.1 1.1 22084 8436 ? Sl Feb15 3:30 /usr/bin/python /usr/local/bin/radicale

    Versuche gerade die Synchronisation innerhalb meines Netzwerkes (um weniger Fehlerquellen zu haben) und habe auch schon einen anderen an sich laufenden Pi ausprobiert, ohne Erfolg.
    Allerdings kann ich den Ordner, der in der config-Datei für Speicherung in einer Datei angegeben ist ~/.config/collections nicht finden und dieser wird meiner Meinung nach offensichtlich nicht angelegt.
    Auf meinem Android-Phone bekomme ich ebenfalls keine Verbindung.

    Danke für Eure Hilfe,
    Dirk

    Antworten
    • Jan Karres says:

      Klingt so als würde der Server eine Fehler zurückwerfen. Schau mal ob du Logfiles von Radicale findest du darin eine nähere Fehlerbeschreibung.

      Antworten
    • deed says:

      Hallo Dirk.
      die Dateien die du suchst, findest du sehr wahrscheinlich unter /home/radicale/.config/collections

      Antworten
      • Dirk says:

        Vielen Dank für die Hilfe und für Mittdenken.

        Genau dieses Verzeichnis („/.config“) finde ich weder unter dem Hauptuser noch unter dem angelgten radicale-user.
        Ich finde auch keine logfiles von Radicale. Diese hatte ich selber angelegt, wie es in der Dokumentation beschrieben steht und hatte radicale –debug ausgeführt, was jedoch nicht geholfen hat. In dem selbst angelegten Logfile ist auch kein Eintrag nach dem Versuch einen Kalender in Thunderbird zu erstellen.
        Komme irgendwie nicht weiter…

        Antworten
  10. doesel360 says:

    Hey,
    danke für die Anleitung.
    Nochmal die Frage von Michi oben wiederholt, wie verhält sich Radicale im Vergleich zu Baikal? Letzteres habe ich aktuell laufen und würde wissen, welche Vor-/Nachteile es gibt 🙂

    Antworten
    • Dirk says:

      Hallo,
      so wie ich das verstanden habe ist es aktuell mit Baikal nicht möglich Kalender mit mehreren Nutzern zu verwalten.
      Rechtemanagement ist ebenfalls nicht möglich.
      Für Familienkalender etc. bietet sich daher Radicale eher an.

      Außerdem ist Baikal PHP-basiert und Radicale Python, was ich auf einem RPi bevorzugen würde.

      Gruß,
      Dirk

      Antworten
    • Jan Karres says:

      Dirk hat die wesentlichen Aspekte meiner Meinung nach schon auf den Punkt gebracht. Ich würde momentan auch eher zu Radicale greifen, da es meiner Erinnerung nach auch wesentlich weniger buggy war.

      Antworten
  11. Gavor says:

    Hallo, hat jemand schon mal die Synchronisation von unter ios8 Kontakten hinbekommen? Kalender geht, aber die Kontakte nicht…Ich habe auch keinen Ansatz zum Suchen…

    Antworten
    • deed says:

      Ich habe nur Erfahrung mit iOS6, aber es gibt mehrere Sachen zu beachten:
      – die url muss auf ‚.vcf/‘ enden, also z.B. https://192.168.2.100:5232/gavor/kontakte.vcf/
      – iOS integriert die Kontakte nur, wenn schon Kontakte vorhanden sind, d.h. du müsstest vom Desktoprechner o.ä. einen Testkontakt anlegen und dann sollte unter iOS in der Kontakte-App oben links ‚Gruppen‘ stehen
      – man kann unter iOS keine Kontakte verschieben 🙁

      Antworten
      • Gavor says:

        Hey Deed, danke, ich teste das mal.
        Ich nutze Easy Backup (kostet), um iOS Kontakte zu sichern und zu verschieben. Klappt prima.
        Gruß, Gavor

        Antworten
  12. Robert says:

    Hallo

    Die Beschreibung ist ja sehr umfangreich, vielen Dank dafür.
    Ich habe mit dem Script add-user.py Probleme. Das Programm habe ich per Copy and Paste geholt (mehrfach) und auch direkt eingegeben. Die Fehlermeldung ist immer dieselbe:
    File „/home/radicale/add-user.py“, line 18
    with open(„/etc/radicale/users“, „a“) as configfile:
    IndentationError: unexpected indent

    Wurde das Programm zwischendurch mal geändert?
    Die Python Version auf meinem Raspberry ist 2.7.3, ich habe es aber auch mit Python 3 probiert.

    Vielen Dank
    Robert

    Antworten
    • Robert says:

      Nach der Antwort von Jan läuft das Programm jetzt.
      Die Einrückungen führe ich hier jetzt mal an (mit Zeile und Tab):
      08:help…
      10:help…
      14:parser.print_help()
      16:hashed…
      17:bcrypt…
      18:with…
      19:configfile…
      20:print…

      Nochmals vielen Dank
      Robert

      Antworten
      • Robert says:

        Die eingegebenen Tabs werden wohl interpretiert, daher nochmal anders:
        08, 10, 14, 16, 18 und 20: 1 Tabulator
        17 und 19: 2 Tabulatoren

        Antworten
  13. Sanja says:

    Hallo Jungs,

    super Anleitung. Wie mache ich aber die Kalender öffentlich zum lesen, aber zum bearbeiten passwortgeschützt?

    Danke!

    Antworten
  14. peter says:

    Hallo,

    erst mal : prima Anleitung, hat fast gut funktioniert. Allerdings bekomme ich beim Start von radicale jede menge Fehler.
    Zuerst einmal habe ich radicale 0.10 benutzt. ansonsten die Anleitung befolgt.
    sSTarte ich nun radicale kommen 8 Fehler der Art:
    File „/usr/local/bin/radicale“, line 32, in radicale.__main.run()
    File „/usr/local/lib/phyton2.7/dist-packages/radicale__main__.py“, line 54, in configure_from_file (filename, debug)
    usw. denke das zeigt 2 Dinge
    1. Ich habe nur wenig Ahnung von LINUX (versuche mch gerade daran…)
    2. Ich habe irgendwas falsch gemacht – wahrscheinlich etwas triviales.
    Kann mir mal einer auf die Sprünge helfen damit?

    Danke im Vorraus Pete.

    Antworten
    • Jan Karres says:

      Schreib mit bitte die ganzen Fehler, denn nur so habe ich eine sinnvolle Chance dir zu helfen.

      Antworten
      • Stephan says:

        Ich bekomme mit dem von Raspbian zur Verfügung gestellten Paketen in Version 0.9 ebefalls Fehler, hier der Output:

        Traceback (most recent call last):
        File „/usr/bin/radicale“, line 32, in
        radicale.__main__.run()
        File „/usr/lib/python2.7/dist-packages/radicale/__main__.py“, line 93, in run
        log.start()
        File „/usr/lib/python2.7/dist-packages/radicale/log.py“, line 45, in start
        logging.config.fileConfig(filename)
        File „/usr/lib/python2.7/logging/config.py“, line 78, in fileConfig
        handlers = _install_handlers(cp, formatters)
        File „/usr/lib/python2.7/logging/config.py“, line 156, in _install_handlers
        h = klass(*args)
        File „/usr/lib/python2.7/logging/__init__.py“, line 901, in __init__
        StreamHandler.__init__(self, self._open())
        File „/usr/lib/python2.7/logging/__init__.py“, line 924, in _open
        stream = open(self.baseFilename, self.mode)
        IOError: [Errno 2] No such file or directory: ‚/var/log/radicale/radicale.log‘

        Dazu muss ich anfügen, dass ich die Änderungen in der htpasswd.py erst nach der Installation eingefügt habe. Da Python zur Laufzeit kompiliert wird, sollte es daran aber nicht liegen, oder?

        Antworten
        • Jan Karres says:

          Versuch mal folgendes. Evl. wurde nur das Logfile nicht initiiert.

          mkdir /var/log/radicale
          touch /var/log/radicale/radicale.log

          Antworten
          • Peter says:

            Hallo, sorry – war dienstlich unterwegs…..
            hier das ergebnis nach anlegen des Log verzerzeichnisses und der Datei. Gruß Peter

            Traceback (most recent call last):
            File „/usr/local/bin/radicale“, line 32, in
            radicale.__main__.run()
            File „/usr/local/lib/python2.7/dist-packages/radicale/__main__.py“, line 93, $
            log.start()
            File „/usr/local/lib/python2.7/dist-packages/radicale/log.py“, line 54, in st$
            configure_from_file(filename, debug)
            File „/usr/local/lib/python2.7/dist-packages/radicale/log.py“, line 40, in co$
            logging.config.fileConfig(filename)
            File „/usr/lib/python2.7/logging/config.py“, line 78, in fileConfig
            handlers = _install_handlers(cp, formatters)
            File „/usr/lib/python2.7/logging/config.py“, line 156, in _install_handlers
            h = klass(*args)
            File „/usr/lib/python2.7/logging/__init__.py“, line 901, in __init__
            StreamHandler.__init__(self, self._open())
            File „/usr/lib/python2.7/logging/__init__.py“, line 924, in _open
            stream = open(self.baseFilename, self.mode)
            IOError: [Errno 13] Permission denied: ‚/var/log/radicale/radicale.log‘
            Traceback (most recent call last):

          • Peter says:

            Hallo,

            habe nun das ganze gelöscht und mit radicale 0.9 nach Anleitung wiederholt. Dort gibt es bei dem start von radicale KEINE Fehler und die installation klappt soweit gut.

      • Peter says:

        sry. Also dann…..

        traceback (most recent call last):
        File „/usr/local/bin/radicale“, line 32, in
        radicale.__main__.run()
        File „/usr/local/lib/python2.7/dist-packages/radicale/__main__.py“, line 93, $
        log.start()
        File „/usr/local/lib/python2.7/dist-packages/radicale/log.py“, line 54, in st$
        configure_from_file(filename, debug)
        File „/usr/local/lib/python2.7/dist-packages/radicale/log.py“, line 40, in co$
        logging.config.fileConfig(filename)
        File „/usr/lib/python2.7/logging/config.py“, line 78, in fileConfig
        handlers = _install_handlers(cp, formatters)
        File „/usr/lib/python2.7/logging/config.py“, line 156, in _install_handlers
        h = klass(*args)
        File „/usr/lib/python2.7/logging/__init__.py“, line 901, in __init__
        StreamHandler.__init__(self, self._open())
        File „/usr/lib/python2.7/logging/__init__.py“, line 924, in _open
        stream = open(self.baseFilename, self.mode)
        IOError: [Errno 2] No such file or directory: ‚/var/log/radicale/radicale.log‘

        Gruß Peter

        Antworten
      • Peter says:

        Scheint ein schwerwiegenderes Problem zu sein – Vielleicht hat jemand das schon am Laufen und kann mal etwas zu dem Problem sagen? Wäre sehr dankbar.

        Gruß Peter

        Antworten
  15. Alexander says:

    Hallo,
    danke für die Anleitung. Nach ersten Problemen,
    ist es mir gelungen, den Server aufzusetzen.
    Ich hoffe, dass ich mit folgender Frage hier richtig bin.
    Ich habe vor, den Kalender auf dem Pi, durch ein Script mit Terminen zu füllen.
    Kennt jemand einen Linux-Client, mit dem ich dies umsetzten kann?
    Eine API für Kalenderdateien wäre natürlich auch eine Lösung.
    Hat jemand einen Tipp für mich?

    Grüße Alexander

    Antworten
    • Jan Karres says:

      Suche bei der Suchmaschine deines Vertrauens am besten mal nach „caldav import“. Unter diesem Stichwort findest du zahlreiche Lösungen.

      Antworten
      • Alexander says:

        Hallo,
        vielen Dank für die Antwort.
        Inzwischen habe ich herausgefunden, dass man die .ics Datei unter /home/radicale/.config/radicale/collections/[user]/[Kalendername].ics findet.
        Diese ics Datei ist nach dem Format RFC 2445 iCalendar erstellt worden und enthält in meinem Fall alle Informationen über Ereignisse im Kalender.
        Nun kann man, mit Hilfe eines Script’s, die Datei auslesen und Änderungen vornehmen.
        Grüße Alexander

        Antworten
  16. Tobias says:

    Um nachfolgenden Usern die Suche im Netz zu ersparen: Ich hatte Probleme mit einer leeren Sync-Liste in DAVDroid:

    Ich hatte ein wenig Schwierigkeiten Radicale mit DAVDroid zu synchronisieren.

    Zum einen bekam ich die Verbindung nur mit einer von der Dokumentation abweichenden Adresse (ohne Radicale):

    „https://[server]:5232/[username]/“

    Zum Anderen – und das betrifft scheinbar auch andere Clients – ist DAVDroid scheinbar nicht in der Lage selbstständig die Kalender und Kontakt Datei zu erstellen! Jedenfalls war bei mir nach erfolgreicher Verbindung die Liste mit zu synchronisierenden Elementen leer.

    Die Dateien liegen im Home Verzeichniss von Radicale-User im Ordner des mit dem add-user.py erstellten Users:

    ~/.config/radicale/collections/[username]

    und können mit

    touch [kalendername].ics
    touch [kontaktdateiname].vcf

    erstellt werden. Das hat bei mir auch wunderbar funktioniert!

    ————–

    Warum auch immer das nicht in der Radicale Dokumentation unter DAVDroid steht, unter dem Punkt „InfCloud, CalDavZAP & CardDavMATE“ habe ich gerade folgendes gefunden, was wohl ebenfalls geholfen hätte:

    […]

    „InfCloud, CardDavMATE and CalDavZAP cannot create calendars and/or address books. They need to be created before first login. Each user needs to have minimum of one calendar and/or one adressbook even if only using shared addresses and/or calendars. Client will not login, if the user collections don’t exists.“

    […]

    „You can easily create them by directly calling the URL’s from your browser:

    http(s)://host.example.com:5232/user/calendar.ics/
    http(s)://host.example.com:5232/user/addresses.vcf/

    Replace „http(s)“ with the correct protocol, „host.example.com:5232“ with you host:port where Radicale is running,
    „user“ with the correct login name or the shared resource name i.e. ‚public‘,
    „calendar.ics“ and „addresses.vcf“ with the collection names you want to use
    and do NOT forget the ‚/‘ at line end.“

    […]

    strg+f tags: [Ordnerliste Leer] [DAVDroid] [keine Element zum synchronisieren]

    LG

    Antworten
  17. Sven says:

    Vielen Dank für die super Anleitung. Wirklich sehr hilfreich. Allerdings habe ich ein Problem beim Schreiben der User/Passwort-Kombination in die ‚users‘ Datei. Ich habe den Code so kopiert wie hier angeben und nur den Pfad zu ‚users‘ angepasst. Die Datei wird auch größer, wenn ich das Skript ausführe, aber leider ist sie komplett leer und enthält nicht die neu erstellten User.

    Ich würde mich über ein paar Tipps, woran das liegen könnte, freuen.

    Antworten
    • Sven says:

      Anscheinend ist es irgendein Update-Problem des Servers gewesen. Ich habe das ganze am nächsten Tag nochmal ausprobiert. Jetzt läuft es so wie es soll und die User-Passwort Paare werden in die users-Datei geschrieben und gespeichert.

      Antworten
  18. Robert says:

    Hallo,

    prima Anleitung, vielen Dank dafür!
    Ich habe mich nach dem Testen von radicale dazu entschlossen, doch lieber eine andere Software zu nutzen.
    Könntest du mir sagen, wie ich radicale wieder sauber deinstallieren kann?

    Antworten
  19. Domi says:

    Hallo Jan,

    ich suche nach einer Möglichkeit Kontakte und Kalender zwischen meinem iPhone, meinem Mac und meinem PC zu synchronisieren.

    Auf meinem iPhone benutze ich die Standart-Apps (Kalender, Kontakte)
    Auf meinem Mac benutze ich Outlook for Mac 2016 (unterstützt weder CalDAV noch CardDAV)
    Auf meinem PC benutze ich ebenfalls Outlook 2010 (unterstützt Stock auch nicht diese beiden Protokolle)

    Es ergibt sich folgendes Problem

    Auf dem iPhone, geht ja Cal- und CardDAV, auf dem PC mit Outlook würde es auch gehen mit einem Zusatzprogramm wie cFOS und EVO Collaborator for Outlook. Damit hätte ich zumindest schonmal zwei Geräte synchron. Jedoch finde ich leider nichts wie ich Outlook auf dem Mac mit Cal- bzw. CardDAV synchron halten kann.

    Ich habe dann an einen Exchange Server oder an einen LDAP-Server gedacht.

    Wenn du ein Zusatzprogramm für den Mac wüsstest dann wäre ich die sehr verbunden.

    Als Synchronisierungssoftware würde ich dann OwnCloud oder Baikal-Server nehmen. Oder hast du eine Bessere Idee?

    Ich danke dir schonmal im Voraus und hoffe du hast eine Lösung für mich

    Mit freundlichen Grüßen

    Domi

    Antworten
  20. neandr says:

    Leider klappt die Installation mit Radicale 1.0.1 nicht. Zweimal versucht, jedesmal die folgende Fehlermeldung:

    radicale@raspberrypi /etc/radicale $ radicale
    Traceback (most recent call last):
    File „/usr/local/bin/radicale“, line 4, in
    __import__(‚pkg_resources‘).run_script(‚Radicale==1.0.1‘, ‚radicale‘)
    File „/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py“, line 699, in run_script
    self.require(requires)[0].run_script(script_name, ns)
    File „/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py“, line 1624, in run_script
    exec(script_code, namespace, namespace)
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.0.1-py2.7.egg/EGG-INFO/scripts/radicale“, line 29, in

    File „build/bdist.linux-armv6l/egg/radicale/__init__.py“, line 51, in
    File „build/bdist.linux-armv6l/egg/radicale/auth/__init__.py“, line 28, in
    File „build/bdist.linux-armv6l/egg/radicale/config.py“, line 105, in
    File „/usr/lib/python2.7/ConfigParser.py“, line 305, in read
    self._read(fp, filename)
    File „/usr/lib/python2.7/ConfigParser.py“, line 512, in _read
    raise MissingSectionHeaderError(fpname, lineno, line)
    ConfigParser.MissingSectionHeaderError: File contains no section headers.
    file: /etc/radicale/config, line: 1
    ‚1\n‘

    Was läuft da falsch?
    Guenter

    Antworten
    • neandr says:

      Bitte ersatzlos streichen 😉
      Hatte eine Datei nicht einwanfrei kopiert/installiert. Jetzt läuft am Prompt ‚radicale‘ ohne Problem, aber leider klappt es per Browser Zugriff nicht.
      Mal sehen …

      Danke für’s Tutorial … GREAT!
      Günter

      Antworten
  21. Stefan G says:

    Erst mal vielen Dank an Jan für seine vielen, extrem hilfreichen Anleitungen rund um den Raspberry Pi!

    Beim Einrichten von radicale (v 1.0.1) mithilfe dieser Anleitung bin ich auf folgendes Problem gestoßen:

    – Radicale lässt sich ohne Fehlermeldung starten, es kann aber keine Verbindung aufgebaut werden.

    – Beim Start mit „daemon = False“ in der config habe ich folgende Fehlermeldung erhalten:
    Traceback (most recent call last):
    File „/usr/local/bin/radicale“, line 5, in
    pkg_resources.run_script(‚Radicale==1.0.1‘, ‚radicale‘)
    File „/usr/lib/python2.7/dist-packages/pkg_resources.py“, line 499, in run_script
    self.require(requires)[0].run_script(script_name, ns)
    File „/usr/lib/python2.7/dist-packages/pkg_resources.py“, line 1235, in run_script
    execfile(script_filename, namespace, namespace)
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.0.1-py2.7.egg/EGG-INFO/scripts/radicale“, line 32, in
    radicale.__main__.run()
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.0.1-py2.7.egg/radicale/__main__.py“, line 133, in run
    make_server(address, port, Application(),
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.0.1-py2.7.egg/radicale/__init__.py“, line 135, in __init__
    auth.load()
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.0.1-py2.7.egg/radicale/auth/__init__.py“, line 43, in load
    „auth.%s“ % auth_type, globals=globals(), level=2)
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.0.1-py2.7.egg/radicale/auth/htpasswd.py“, line 131, in
    raise RuntimeError((„The htpasswd_encryption method ‚bcrypt‘ requires “
    RuntimeError: The htpasswd_encryption method ‚bcrypt‘ requires availability of the passlib module with bcrypt support.

    – Die Lösung des Problems war daher einfach das Packet passlib zu installieren:
    sudo apt-get install python-passlib

    Jetzt funktioniert die Synchronisation fehlerfrei.

    Vielen Dank noch einmal an Jan.

    Antworten
  22. Bastian says:

    HI, danke für die Anleitung. Leider funktioniert radicale bei mir nicht so gut wie baikal zuvor. Zum einen ist es unglaublich langsam und zum anderen kann ich nur eine einzige Telefonnummer unter Android erreichen bzw. angeben. Bei der baikal Lösung waren ganz normal weitere Adressfelder hinzufügbar. Hat das Problem noch jemand?

    Antworten
  23. Michael says:

    Hiho,

    ich dachte ich mache mal ein Upgrade von version 0.10 auf 1.1. Leider funktioniert der Sync nun nicht mehr. Wenn ich bspw. einen neuen Termin anlege, bekomme ich beim syncen die Meldung „forbidden“. Was ich gemacht habe: Einfach die neue Version drüber installiert (also nur Step 2, Step 4, Step 5).
    Leider habe ich keine „Upgrade Anleitung“ gefunden. Irgendwas scheint sich mit den Rechten geändert zu haben. Leider verstehe ich nicht, was genau ich nun ändern muss, damit es wieder funktioniert.

    Hat hier einer ne Lösung für mich?

    Antworten
  24. Andreas says:

    Seit dem ersten Erscheinen dieser sehr guten Anleitung sind mehrere Versionsänderungen ins Land gegangen.

    Ich möchte deshalb nur kurz berichten, dass die Anleitung auch weiter funktioniert. Denn ich habe es gerade für folgende Kombination zum Laufen bekommen:

    Raspbian Jessie
    Radicale 1.1.1
    bcrypt 1.1.0

    Allerdings ist es für bcrypt notwendig, noch zwei Sachen vorher zu installieren:

    sudo apt-get install libffi-dev
    sudo apt-get install python-passlib (darauf hat Stefan G schon hingewiesen, s.o.)

    Danke an Jan und viel Erfolg denen, die Radicale installieren wollen.

    Gruß
    Andreas

    Antworten
  25. Manuel says:

    Hallo,
    habe gemäß ANleitung auf einem frisch aufgesetzten Raspberry Pi mit Raspian Jessie Radicale 1.1.1 installiert, erhalte beim Start aber folgende Fehlermeldungen:

    Traceback (most recent call last):
    File „/usr/local/bin/radicale“, line 4, in
    __import__(‚pkg_resources‘).run_script(‚Radicale==1.1.1‘, ‚radicale‘)
    File „/usr/lib/python2.7/dist-packages/pkg_resources.py“, line 534, in run_script
    self.require(requires)[0].run_script(script_name, ns)
    File „/usr/lib/python2.7/dist-packages/pkg_resources.py“, line 1445, in run_script
    exec(script_code, namespace, namespace)
    File „/usr/local/lib/python2.7/dist-packages/Radicale-1.1.1-py2.7.egg/EGG-INFO/scripts/radicale“, line 32, in

    File „build/bdist.linux-armv6l/egg/radicale/__main__.py“, line 93, in run
    File „build/bdist.linux-armv6l/egg/radicale/log.py“, line 54, in start
    File „build/bdist.linux-armv6l/egg/radicale/log.py“, line 40, in configure_from_file
    File „/usr/lib/python2.7/logging/config.py“, line 77, in fileConfig
    formatters = _create_formatters(cp)
    File „/usr/lib/python2.7/logging/config.py“, line 113, in _create_formatters
    flist = cp.get(„formatters“, „keys“)
    File „/usr/lib/python2.7/ConfigParser.py“, line 607, in get
    raise NoSectionError(section)
    ConfigParser.NoSectionError: No section: ‚formatters‘

    Habe die Config-Datei mehrfach geprüft und finde keine Abweichung zur Anleitung. libffi-dev und python-passlib sind ebenfalls installiert.

    Lässt sich aus den Fehlermeldungen eine Ursache ablesen?
    Danke!

    Antworten
    • Rainer says:

      Hallo,

      erstmal vielen Dank an Jan für die gut gemachte Anleitung. Ich habe alles wie beschrieben auf einem Raspi3 mit Raspian Jessie (radicale 1.1.1) eingerichtet und ich konnte über Lightning und ein Tablet (DavDroid) mit diversen Kalender-Apps (aCalendar, Jort, SolCalendar, BussinessCal2, etc.. darauf zugreifen. Hat alles wunderbar funktioniert. Nach ein paar Tagen habe ich dann auf meinem Smartphone ebenfalls DavDroid installiert und wollte auf radicale zugreifen, was allerdings misslang. Auch die anderen Anwendungen konnten radicale nicht mehr erreichen. In der Shell zeigt mir radicale –debug die exakt gleiche Fehlermeldung die Manuel auch angezeigt bekommt.

      Hat jemand eine Idee woher dieser Fehler kommen könnte?

      Antworten
    • Rainer says:

      Hallo,

      erstmal vielen Dank an Jan für die gute Anleitung.

      Ich habe das gleiche Setup wie Manuel, es lief auch alles wunderbar. Nach ein paar Tagen allerdings startete radicale nicht mehr und ich erhielt genau diese Fehlermeldung.

      Scheinbar wird die Sektion „formatters“ nicht gefunden. Hat jemand eine Idee woran das liegen könnte?

      Antworten
  26. thom says:

    Nabend,
    ich hab eben mal auf einem frischen Raspbian die Anleitung abgearbeitet, leider passiert nach Punkt 10… nichts.
    ps aus | grep -i radi
    zeigt keinerlei Ergebnis (außer dass es sich natürlich selbst findet) aber egal wie ich mich verbiege, radicale taucht nicht auf.
    Ne Idee wieso?

    Antworten
  27. Markus Roth says:

    Hallo,

    wie viele andere von dir auch, ein super Tutorial.

    Leider nicht zu 100% funktionstüchtig, was an unterschiedlichen Dingen liegen kann. Zum einen läuft die Geschichte bei mir nicht auf einem Raspberry-Pi, sondern auf einem Cubieboard 4 unter Ubuntu.

    Zum anderen war davor radicale 0.8 per apt installiert. Darum befinden sich möglicherweise „ungewollte“ Konfigurationsdateien auf dem Rechner.

    Jedenfalls bringt/brachte sowohl radicale in seiner Version 1.1.1 wie auch 0.8 nach dem Befehl
    radicale -f
    die Fehler
    File „/usr/bin/radicale“, line 32, in
    radicale.__main__.run()
    File „build/bdist.linux-armv7l/egg/radicale/__main__.py“, line 150, in run
    File „build/bdist.linux-armv7l/egg/radicale/__init__.py“, line 134, in __init__
    File „build/bdist.linux-armv7l/egg/radicale/auth/__init__.py“, line 43, in load
    File „build/bdist.linux-armv7l/egg/radicale/auth/htpasswd.py“, line 135, in
    File „/usr/lib/python2.7/dist-packages/passlib/utils/handlers.py“, line 456, in encrypt
    self.checksum = self.calc_checksum(secret)
    File „/usr/lib/python2.7/dist-packages/passlib/utils/handlers.py“, line 1147, in calc_checksum
    return self.calc_checksum(secret)
    File „/usr/lib/python2.7/dist-packages/passlib/handlers/bcrypt.py“, line 237, in _calc_checksum_pybcrypt
    self.to_string(native=False))
    File „/usr/local/lib/python2.7/dist-packages/bcrypt-2.0.0-py2.7-linux-armv7l.egg/bcrypt/__init__.py“, line 57, in hashpw
    raise TypeError(„Unicode-objects must be encoded before hashing“)
    TypeError: Unicode-objects must be encoded before hashing

    Komischerweise ist /var/log/radicale/radicale.log „sauber“. Das Programm startet einfach nicht…

    Was ich schon probiert habe:
    – sudo apt-get purge radicale
    – sudo find / -name radicale | xargs sudo rm -rf (Nach vorangehendem Check, was gelöscht wird, natürlich)
    – Tutorial von vorne beginnen.

    Hat jemand eine Idee, was das bedeuten könnte? Sieht eher nach einem Problem mit Pyhton aus, oder?

    Viele Grüße und herzlichen Danke im voraus
    Markus

    PS: Ich habe daran gedacht, das ganze OS neu aufzusetzen. Aber die Maschine ist ein Server, der aktiv genutzt wird, darum scheidet das leider aus.

    Antworten
  28. Sebastian says:

    Ich habe das ganze nun mit Radicale 1.1.1 zum Laufen bekommen.

    Ich habe Step 3 durch:
    pip install bcrypt
    ersetzt (das installiert bcrypt 3.1.1=https://pypi.python.org/pypi/bcrypt/3.1.1 — ich blicke nicht, ob das eine Weiterentwicklung des hier verwendeten Pakets ist). Step 4 habe in unverändert gelassen (mein bcrypt Paket wird gleich eingebunden wie das in der Anleitung verwendete).

    In der Adressierung des Servers muss ich „http://“ durch „https://“ ersetzen.

    Ich hoffe das hilft anderen Verbündeten…

    Antworten
  29. KH says:

    Bei mir läuft Radicale auf einem Raspi.
    Synchronisierung klappt auch bisher ganz gut mit Android und Windowsphone.
    1. Allerdings habe ich nicht verstanden, wie das mit den Usern funktioniert:
    Ich habe auf dem Raspi nach dem ersten User einen zweiten angelegt – ohne Fehlermeldung. Allerdings kann ich im collections-Verzeichnis keine Spur davon finden.
    Muss der Radicale-Seerver zum Anlegen eines Users angehalten sein ? Wenn ja, wie hält man ihn sauber an ?

    2. In Android kann ich ein Caldav-Konto anlegen, über das mehrere Kalender verwaltet werden können.
    Geht das mit WindowsPhone (10) nicht ? Muss ich da für jeden Kalender ein Konto anlegen ?

    Antworten
  30. Jürgen Zingsem says:

    Danke für die schöne Anleitung. Nun stehe ich nur vor der Frage, ob ich mein laufendes Openelec-System durch Raspbian ersetzen soll/muß, wenn ich Caldav installieren will, oder ob es auch Tricks gibt, Caldav auf einem Openelec-System zu installieren und laufen zu lassen.
    Gibt’s dazu Erfahrungen?

    Antworten
  31. Jürgen says:

    Hallo,
    bis Step 3 hatte allse funktioniert, allerdings liegt „py-bcrypt-0.4.tar.gz“ nicht mehr unter
    http://py-bcrypt.googlecode.com/files/

    Auflösen des Hostnamen »py-bcrypt.googlecode.com (py-bcrypt.googlecode.com)«… 64.233.166.82, 2a00:1450:400c:c09::52
    Verbindungsaufbau zu py-bcrypt.googlecode.com (py-bcrypt.googlecode.com)|64.233.166.82|:80… verbunden.
    HTTP-Anforderung gesendet, warte auf Antwort… 404 Not Found
    2017-02-01 17:53:39 FEHLER 404: Not Found.

    Mit
    wget https://pypi.python.org/packages/68/b1/1c3068c5c4d2e35c48b38dcc865301ebfdf45f54507086ac65ced1fd3b3d/py-bcrypt-0.4.tar.gz#md5=dd8b367d6b716a2ea2e72392525f4e36
    konnte ich „py-bcrypt-0.4.tar.gz“ dann aber beschaffen (und natürlich auch entpacken)

    „sudo python setup.py build && sudo python setup.py install“ führte aber zu folgender Anzeige und Fehlermeldung:

    running build
    running build_py
    running build_ext
    building ‚bcrypt._bcrypt‘ extension
    arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c bcrypt/bcrypt.c -o build/temp.linux-armv7l-2.7/bcrypt/bcrypt.o
    unable to execute ‚arm-linux-gnueabihf-gcc‘: No such file or directory
    error: command ‚arm-linux-gnueabihf-gcc‘ failed with exit status 1

    Nun muß nach weiteren Hilfsquellen suchen….

    Antworten
  32. benni says:

    hallo und danke für das tutorial.

    es ist ja mittlerweile schon ein paar jährchen alt und schmeißt mir bei step 5 folgenden fehler:
    >sudo python setup.py install
    Traceback (most recent call last):
    File „setup.py“, line 39, in
    from setuptools import setup
    ImportError: No module named setuptools

    weiß jemand rat?

    Antworten
  33. Leon says:

    Ein wirklich tolle Anleitung. Vielen Dank.

    Gibt es irgendwo eine aktualisierte Version mit bcrypt 3.* und radicale2.*

    Antworten
  34. quotentoter says:

    Hallo,
    über eine Aktualisierung des Artikels würde ich mich sehr freuen… Ich komme momentan bei Step 4 nicht weiter:
    Radicale wurde heruntergeladen in Version 2.1.8; nun liegt eine eine Ordnerstruktur vor und ich finde den Ordner auth/ nicht mehr und auch nicht das Skript htpassword.py

    Jemand eine Idee?

    Antworten

Trackbacks & Pingbacks

Antworten

Kommentar verfassen

JanKarres.de © 2007-2018