Twintig jaar geleden stonden je afspraken in je agenda en de adressen in het insteekboekje achterin. Die agenda nam je overal mee naartoe en zo had je al je gegevens overal beschikbaar. Tegenwoordig neem je deze gegevens mee op je smartphone, tablet, desktop-pc en het liefst als reserve ook nog in je webbrowser. Handig, maar het geeft ook technische aandachtspunten.

 

Hoe zit het namelijk met synchronisatie en protocollen en waar is de centrale opslagplek? Momenteel is deze opslagplek vaak de cloud. Maar van wie zijn die gegevens in de cloud, wie zijn de firma’s die deze dienst aanbieden en wat zijn hun drijfveren? Misschien wil je wel weg uit de cloud. We bekijken een selectie van software om kalender- en adresgegevens zelf te hosten en enkele client applicaties.

 

De protocollen CalDav en CardDav

Agenda en contactgegevens bijhouden en synchroniseren gaat met een netwerkservice. Een smartphone is daarin een client. De communicatie tussen die twee gaat door middel van een hiervoor ontworpen taaltje, oftewel een protocol. Een fabrikant van zowel de service als de client, houdt zo’n protocol vaak voor zichzelf. Om het mogelijk te maken dat verschillende softwareleveranciers en communities kunnen samenwerken bij het maken van services en clients is het handig om een protocol publiek te publiceren en royalty-vrij beschikbaar te maken, zoals de Internet Engineering Task Force (IETF) dat doet. Voor de uitwisseling van kalender- en contactgegevens zijn hiervoor in 2007 en 2011 CalDav en CardDav vastgelegd. Dit gaat met documenten met een nummertje. Een update betekent een nieuw nummer, de protocolnaam blijft vaak wel hetzelfde. Zo wordt verder geïnnoveerd op bestaande protocollen.

 

Het CalDav protocol is – zoals de naam al suggereert – opgebouwd uit het Dav-protocol met hieraan een specificatie voor kalenders toegevoegd. In feite de specificatie voor agenda items. Denk hierbij aan een bestandsbeschrijving voor een agenda-notitie. Het transport van die bestanden gaat over een http(s)-connectie, zoals gespecificeerd in het Dav-protocol. Dat is handig, want dat was allemaal al bedacht. Het goede van dit alles is dat alle services en clients met elkaar kunnen samenwerken als ze CalDav ondersteunen. Op dit moment zijn CalDav en CardDav al in heel wat applicaties geïmplementeerd. Ook zijn de oneffenheden in de beide protocollen tot op zekere hoogte door de ontwikkelaars van client- en serversoftware overwonnen.

 

Agenda- en adresboekservers

Hieronder volgt een voorselectie van drie server-implementaties die kalenders en adressenboeken via het CalDav- en CardDavprotocol aanbieden. Ze zijn op een eigen server te installeren en hebben een open source licentie.

 

De eerste is Radicale. Eenvoudig en met weinig systeemeisen, maar daardoor ook met enkele beperkingen. Baikal vraagt om meer systeemeisen, maar biedt ook meer, zoals betere performance bij grotere datasets. Beiden doen – geheel in de Unix/Linux filosofie – één ding goed en verder niets. OwnCloud, de derde, heeft bijna dezelfde systeemeisen als Baikal en biedt ook de performancevoordelen, maar biedt daarnaast ook nog wat meer functionaliteit.

 

Een kalenderservice die alleen beschikbaar is op een intern veilig en afgeschermd netwerk kan zinvol zijn, al is het maar in de testfase. Security is op dat moment geen issue. Voor veel situaties is aanbieden over het internet de manier waarop de service echt nuttig wordt. Op dat moment dient er natuurlijk authenticatie op de service te staan en dient de gegevensuitwisseling versleuteld te gebeuren. Een gebruikelijke manier is om een Apache of Nginx te gebruiken voor het transport over http. Configuratie van de ssl/tls dient hierin dan wel geactiveerd en geconfigureerd te worden. Een robuuste authenticatie kan door deze producten worden gedaan, maar wordt ook vaak in de applicatie zelf gedaan. In de onderstaande selectie komen we beiden tegen.

 

Radicale

Dit is een CalDav en CardDav server, geschreven in Python en de data staat in bestanden op het filesysteem. Het project biedt op www.radicale.org een tgz-archief. Door dit bestand uit te pakken, krijg je een map met bestanden. Voer het set-upscript uit als root. Dit installeert de applicatie in de /usr/local map. Maak voor de eerste start een configfile in ~/.config/radicale/config  met behulp van het in de tgz meegeleverde voorbeeld. Gebruikers maak je aan door een regel toe te voegen in de gebruikers file, volgens het htpasswd format. Per default staat authenticatie uit in de config, om in de voorliggende Apache-httpd te kunnen worden gedaan. Bij gebruik zonder Apache, dien je dat dus even in de config aan te zetten. De data wordt bewaard in bestanden, een per agenda, in de map ~/.config/radicale/collections/<username>/

 

De toegang tot de kalender verkrijg je met een CalDav-client op URL: http://servernaam:5232/<username>/Calendar.ics/. De URL is één op één terug te vinden in de directories op het bestandssysteem. Dus eenvoudig te back-uppen en te migreren. Het zijn immers gewoon ICS databestanden.

 

Voor een complete set-up kan Radicale achter een Apache gezet worden door middel van WSGI. Dat staat voor webserver gateway-interface. Dan kan ook de authenticatie door de Apache afgehandeld worden, door vanuit de httpd.confte verwijzen naar de htacces-file die al in het juiste format daarvoor was.

 

Radicale vraagt weinig resources en biedt toch een volwaardige service. Het kan even puzzelen zijn met de configuratie, want de documentatie bij het project zelf is behoorlijk summier. Er is met wat zoekwerk echter een goed werkende configuratie te maken.

 

Baikal

Baikal is een CalDav en CardDav server geschreven in PHP met een SQL-database voor de dataopslag. Er is een handige webbased admin-tool aan boord voor het applicatiebeheer. Hierin zit ook een dashboard, waar in één oogopslag het aantal gebruikers, kalenders en adressenboeken met hun aantallen zichtbaar zijn. Daarnaast kan hiermee gebruikersbeheer en applicatieconfiguratie worden uitgevoerd. De gebruiker kan vanuit zijn client applicatie zelf nog extra agenda’s en adressenboeken aanmaken.

 

Het is netjes dat de admin-tool ook eenvoudig uitgezet kan worden. Een zwak punt is namelijk de ingecodeerde gebruikersnaam admin. Bruteforce inbreken is daarmee een optie. In de PHP-code is het ingecodeerde admin-account natuurlijk wel gewoon te veranderen.

 

Baikal is net als Radicale een pure CalDav/CardDav-service. Voor het gebruik van de services dien je een client(-applicatie) te gebruiken. Baikal is geschikt als team-oplossing, maar door het ontbreken van een authenticatiemogelijkheid tegen bijvoorbeeld LDAP is het zonder aanpassingen voor een 1000+ organisatie niet geschikt.

 

De installatiebenodigdheden zijn Apache met PHP-module en een MySQL database. De documentatie bestaat uit een download aanwijzing op de website van het project en enkele tekstbestanden in de tgz. Dat lijkt weinig, maar voor wie vaker een PHP-applicatie heeft geïnstalleerd, is waarschijnlijk de verwijzing naar de handige installatiepagina al genoeg om Baikal werkend te maken.

 

 

 

OwnCloud

De derde server uit de voorselectie is het pakket ownCloud. Het is geschreven in PHP en gebruikt een SQL-database voor de dataopslag. Daarvoor mag je kiezen uit MySQL, PostgreSQL of SQLite. OwnCloud bevat onder andere een CalDav- en CardDav-service. Het heeft daarnaast ook nog een aantal andere mooie functionaliteiten, waaronder bestandssynchronisatie tussen clients, zoals al eerder beschreven in Linux Magazine.

 

Een webbased interface voor het gebruik van de agenda en het adressenboek is ingebouwd. Het gebruik hiervan kan dus zonder client-applicatie, direct in de webbrowser. Handig is dat gebruikers de CalDav en CardDav connectie-URL’s voor hun clients zelf uit kunnen lezen in de webapplicatie. Applicatiebeheer, zoals gebruikers aanmaken, kan tevens webbased mits je als admin bent ingelogd.

 

De systeemeisen zijn op hoofdlijnen gelijk aan Baikal. Wel zijn enkele extra PHP-modules en wat extra software, zoals ImageMagick nodig. Pluspunt is de beschikbaarheid van een installatie- en upgrade-repository voor een groot aantal Linux-distributies. De installatie bestaat dan nog maar uit het ingeven van enkele commando’s. Zelfs de database wordt aangemaakt. Nadeel is dat je mee moet in het upgrade-regime van de repository beheerder. En dat is vrij regelmatig, met alle bijkomende voor- en nadelen. Er is echter ook een tgz-archief beschikbaar om geheel naar eigen inzicht de installatie en upgrades te kunnen doen. De installatiedocumentatie is van zeer goed niveau. De verschillende methodes worden duidelijk beschreven.

 

Voor wat betreft security zijn er twee aandachtspunten tijdens de installatie. Er is een directorylocatie voor de bestandsopslag nodig. Deze kan zelf gekozen worden, maar dient wel buiten de documentroot te liggen. Merk op dat de agenda- en adressendata volledig in de database staat en niet bij de bestanden. Tweede aandachtspunt is dat, nadat je jouw ownCloud via https beschikbaar hebt gemaakt, je dit nog met een vinkje in de beheerpagina moet bevestigen. Pas vanaf dit moment forceert ownCloud het gebruik hiervan in al zijn URL’s.

 

CalDav/CardDav-servers

 

Radicale

Baikal

ownCloud

site:

www.radicale.org

baikal-server.com

www.owncloud.org

taal:

Python

PHP

PHP

open source:

ja

ja

ja

zelf te hosten

ja

ja

ja

opslag van de data in:

bestanden

SQL-database

SQL-database

webbased beheer

nee

ja

ja

webbased gebruik

nee

nee

ja

performance bij veel data

-/+

+

+

authenticatie lokaal

ja (in bestand)

ja (in SQL-database)

ja (in SQL-database)

authenticatie aan LDAP

nee

nee

ja

 

Clients voor Linux

Op een Linux desktop zijn een aantal goede mogelijkheden voor agenda- en adressenboekgebruik. Een echte agenda-applicatie voor op de desktop is KOrganizer. Dit is een gebruiksvriendelijke applicatie met alles wat je van een kalender-applicatie verwacht. Mutaties zijn snel te maken, doordat het met een lokale dataset werkt die periodiek synchroniseert met de caldav-server. Het minpunt is dat deze synchronisatie nog wel eens stopt met werken. Nog erger is dat dit alleen te zien is door te gaan kijken in het settings-menu. Wanneer dit probleem optreedt, dient alle invoer na het stoptijdstip opnieuw aangeleverd te worden bij de server, bijvoorbeeld via de webinterface, en dient in KOrganizer de connectie naar de caldav-server verbroken en opnieuw gedefinieerd te worden.

 

Voor wie zijn kalender graag geïntegreerd wil hebben in zijn mail-applicatie Thunderbird is er de Lightning-plugin. Vroeger was deze code verpakt in de Mozilla-Sunbird applicatie, de standalone versie van de Lightning-plugin, maar die wordt niet meer geleverd. Hier geen synchronisatie issues, maar de agenda is alleen te gebruiken bij een online verbinding met de CalDav-server.

 

De applicatie KAddressbook is een goede client voor adresgegevens op de desktop. Zowel KOrganizer als KAddressbook hebben een wizzard voor de connectie en ownCloud is hierin opgenomen. Dat werkt gebruiksvriendelijk.

 

Op Apple hardware met Mac OS X zijn de protocollen CalDav en CardDav standaard beschikbaar in de meegeleverde agenda- en adressenboekapplicaties. Op werkstations met Microsoft Windows zijn volgens de literatuur zowel plug-ins als additionele software beschikbaar om CalDav- en CardDav-services te laten gebruiken door Microsoft Outlook. Thunderbird met de Lightning-plugin is hier natuurlijk ook te gebruiken.

Op de smartphone

Op smartphones met Android is in de standaard agenda- en contactenapps geen mogelijkheid om een CalDav- of CardDav-server te configureren. Er zijn echter wel goede apps beschikbaar om dit toe te voegen. Met het app duo CalDAV-sync en CardDAV-sync wordt het opgelost per protocol. Met de app DAVdroid zijn beide protocollen in één keer beschikbaar.

 

Op smartphones en tablets met iOS is, net als op OSX, ondersteuning voor de protocollen CalDav en CardDav reeds aanwezig in de standaard agenda en contacten-apps.

 

Op smartphones met Windows is geen ondersteuning voor de protocollen CalDav CardDav aanwezig. Met het configureren van de iCloud-connector kan meestal toch een eigen server worden geconfigureerd.

Let op! Er is een ownCloud app voor Android en voor iOS. Deze levert echter alleen bestandsfunctionaliteit. Het biedt geen toegevoegde waarde voor de agenda of het adresboek.

 

In de webbrowser

In sommige situaties is het gewenst om met een webbrowser bij je gegevens te kunnen. OwnCloud heeft dit ingebouwd, zowel voor de agenda als voor de adressen. Baikal en Radicale hebben alleen de netwerkservice geïmplementeerd en bieden deze gebruiksfunctionaliteit zelf niet.

 

Agendatoegang via de webbrowser kan echter wel zelf opgezet worden met de PHP-applicatie Agendav. De applicatie werkt op de server en daar staat ook de configuratie die verwijst naar de gewenste CalDav-service. Dit werkt overigens alleen met http zonder ssl/tls. Agendav is een prima client, die zelf eventuele extra agenda’s detecteert bij een gebruiker en ook extra agenda’s kan aanmaken. De verschillende agenda’s van een gebruiker kunnen een eigen kleur krijgen. Een eigenaardigheidje in de huidige versie is dat als de kleur wordt aangepast, er een foutmelding wordt gegeven na een druk op de ‘save’-knop. Maar na een pagina-verversing staat het toch goed ingesteld. Agendav werkt verder probleemloos en is erg gebruiksvriendelijk. Het is te vergelijken met de ownCloud-agenda in de webbrowser.

De installatievereisten voor Agendav zijn een Apache met PHP-module en een MySQL-database. De installatiedocumentatie is duidelijk.

 

Migratie van bestaande data

Staat er nog data op andere servers? Dan komt het op datamigratie aan. Een goed uitwisselformaat is ICS voor agenda items en VCF voor adresgegevens. Het exporteren en importeren van data kan soms op de server, bijvoorbeeld bij Google. Je kalender- en adresgegevens zijn daar vanuit de webbrowser te exporteren naar bestanden.

 

Bij de iCloud van Apple kan dit niet. Daar dient de export altijd met een client te worden gedaan. Dit geldt ook voor de Baikalserver. Bij de Radicaleserver is eveneens geen import- of exporttool. Echter, de interne opslag hier is in ICS en VCF bestanden op het filesysteem van de server, dus die kun je daar als beheerder gewoon zelf plaatsen, dan wel vanaf halen bij datamigraties.

 

Dankzij de extra functionaliteit biedt ownCloud op dit punt veel voordelen. Via de webbrowser is er op de server al exportfunctionaliteit. Import van data kan ook goed, vanuit meerdere bestandstypen kan data gelezen worden. Door het plaatsen van een ICS of VCF bestand in de documenten-mode, en het bestand daar aan te klikken, wordt de importfunctie gestart voor de betreffende gebruiker en kan aangegeven worden in welke agenda de data moet komen.

 

Met clients zijn er meerdere mogelijkheden. De applicaties KOrganizer en KAddressbook bieden allebei ruime export- en importfunctionaliteit naar en van bestanden. Op OSX systemen kan dat met de meegeleverde applicaties, die prima export en import functies hebben.

 

Conclusie

Er zijn in ieder geval drie bruikbare opensource CalDav/CardDav-servers die zelf zijn te hosten en er zijn bruikbare agenda- en adressenboekclients voor op Linux werkstations. Als een caldav-server geen browsertoegang voor gebruikers biedt, kan deze zelf worden toegevoegd. Smartphones met Android kunnen goed werken met een eigen server. En via datamigratie zijn historische gegevens mee te nemen naar een eigen server.