[[Vorlage(Getestet, focal ))]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte erlangen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./davical_logo.png, 64, align=left)]] [https://www.davical.org/ DAViCal] {en} ist ein Kalenderserver, welcher das [wikipedia:CalDAV:]-Protokoll implementiert. Das CalDAV-Protokoll erweitert das [wikipedia:Hypertext_Transfer_Protocol:HTTP-] bzw. das [wikipedia:WebDAV:WebDAV-Protokoll] um Zugriffsicherungs- und Auswertungsfunktionen für das Kalenderaustauschformat [wikipedia:iCalendar:]. Der Server selbst ist in [:PHP:] programmiert und verwendet für die Verwaltung der Daten eine [:PostgreSQL:]-Datenbank. Es können verschiedene Arten von Nutzern definiert werden, welche Kalender schreiben, lesen oder auch nur freie Termine einer anderen Person einsehen dürfen. Die Kalender können mit diversen Programmen abgerufen und modifiziert werden. Auch Mobilgeräte und Telefone sind teilweise in der Lage, sich mit den (online) veröffentlichten Kalendern zu synchronisieren. Unter anderem können die folgenden Client-Programme bzw. Geräte mit DAViCal verwendet werden: [[Anker(Clientprogramme)]] * [:Evolution:] * [:Thunderbird:] mit der Erweiterung [:Thunderbird/Lightning:Lightning] * [:Kontact:] * [:Rainlendar:] * [wikipedia:Mulberry_(Software):Mulberry] * [wikipedia:Kalender_(Software):Kalender] * [wikipedia:iPhone:] Neben der Funktion als reiner Kalenderserver kann DAViCAL auch Aufgabenlisten und Notizen verwalten. So wird es möglich, Treffen mit anderen Personen zu planen, Aufgaben in einem Team zu verteilen und die Arbeit zu organisieren. Sehr interessant ist ein DAViCal-Server in Kombination mit [:Postfix:], [:Fetchmail:], [:Dovecot_2:Dovecot] (IMAP), OpenLDAP und einem geeigneten E-Mail-Programm mit Kalenderfunktion, da diese Kombination von der Funktion her recht nahe an die weit verbreitete kommerzielle Lösung Exchange/Outlook herankommt. Wen die Kombination verschiedener Einzelprogramme abschreckt, sollte sich [https://davmail.sourceforge.net/ DavMail Gateway] {en} anschauen. Diese Software stellt ein [wikipedia:Gateway_(Informatik):Gateway] zu einem bestehenden Exchange-Server bereit. Der DAViCal-Server auch Adressen im [wikipedia_en:CardDAV:]-Format verarbeiten, womit eine gemeinsame Adressenverwaltung auch ohne LDAP z.B. mit [:Evolution:] möglich ist. = Voraussetzungen = Zunächst müssen [:Apache_2.4:], [:PHP:] und [:PostgreSQL:] installiert werden und prinzipiell funktionieren. Anleitungen dazu findet man in den Artikeln: * [:Apache_2.4:] * [:PHP:] * [:PostgreSQL:] = Installation = DAViCal ist in den offiziellen Paketquellen enthalten. Folgende Pakete müssen installiert werden [1]: {{{#!vorlage Paketinstallation davical, universe davical-doc, universe, optional, Dokumentation }}} ##Da die in den offiziellen Paketquellen enthaltene Version unter Umständen älter als der aktuelle ##Entwicklungsstand ist, kann bis einschließlich [:Trusty:Ubuntu 14.04] eine manuelle Installation interessant ##sein. Dazu kann man entweder eine Fremdquelle nutzen oder die jeweiligen Pakete manuell installieren. Die ##Verwendung einer Fremdquelle hat den Vorteil, dass Updates automatisch eingespielt werden. == Fremdquelle == Zum Einrichten einer Fremdquelle folgt man der entsprechenden [https://wiki.davical.org/index.php/Downloading#Ubuntu Anleitung] {en} im DAViCal-Wiki. [[Vorlage(Fremd, Quelle, "")]] == Fremdpakete == Alternativ können drei Fremdpakete im DEB-Format, die benötigte Bibliothek [https://people.debian.org/~fsfs/davical-current/pool/main/a/awl/ libawl-php] {dl} und die eigentlichen [https://people.debian.org/~fsfs/davical-current/pool/main/d/davical/ davical-Pakete] {dl} heruntergeladen werden. Vor der Installation müssen zunächst noch fehlende Abhängigkeiten installiert werden. Für Ubuntu 20.04 sind dies: {{{#!vorlage Paketinstallation libdbd-pg-perl libdbi-perl libyaml-libyaml-perl libyaml-perl php-pgsql php-xml php7.4-pgsql php7.4-xml }}} Danach können die DEB-Pakete manuell installiert werden, wobei die Installation des Pakets '''libawl-php''' zuerst erfolgen muss (`VERSION` bitte anpassen): 1. '''libawl-php_VERSION_all.deb''' 1. '''davical_VERSION_all.deb''' 1. '''davical-doc_VERSION_all.deb''' [[Vorlage(Fremd, Paket, "")]] = Konfiguration = Diese Anleitung erhebt keinen Anspruch auf Vollständigkeit, stellt aber einen funktionierenden Kalenderserver mit Webadministration bereit. Die offizielle Anleitung mit erweiterten Konfigurationsmöglichkeiten ist auf den [https://www.davical.org/installation.php Projektseiten] {en} von DAViCal zu finden. Der Port `11371` darf nicht durch eine Firewall blockiert werden. . == Apache == Davical kann mit verschiedenen Webservern und PHP ab 5.1 arbeiten. Die Webserver können dann die Daten als Virtueller Host oder als simuliertes Unterverzeichnis zurück liefern. Die letztere, auch als Alias bezeichnete Variante, wird im Folgenden betrachtet. === Apache 2.4 === Für Apache Version 2.4 wird die Konfigurationsdatei '''/etc/apache2/conf-available/davical.conf''' mit folgendem Inhalt erstellt: {{{#!code apache ## /etc/apache2/conf-available/davical.conf # Alias /davical /usr/share/davical/htdocs Require all granted Options Indexes DirectoryIndex index.php php_flag magic_quotes_gpc Off php_flag register_globals Off # }}} Die Konfigurationsdatei wird anschließend aktiviert: {{{#!vorlage Befehl sudo a2ensite davical.conf }}} Nach Änderungen in den Konfigurationsdateien muss der Webserver (Apache) neu gestartet werden. {{{#!vorlage Befehl sudo systemctl reload apache2 }}} Wer nur SSL-verschlüsselte Verbindungen erlauben will, kann die #-Kommentarzeichen vor den Zeilen mit `` und `` entfernen. == DAViCal Konfiguration == Im Verzeichnis '''/etc/davical/''' wird die Standardkonfiguration in der Datei '''config.php''' mit dem Texteditor bearbeitet und durch folgenden Inhalt ersetzt: {{{#!code html+php default_locale = "de_DE"; // Diesen String verwenden, wenn die Datenbank auf dem gleichen Host betrieben // wird, wie das Webinterface. $c->pg_connect[] = 'dbname=davical user=davical_app'; // Wenn der Datenbankserver auf einer anderen Maschine läuft, diesen String verwenden. // $c->pg_connect[] = 'dbname=davical user=davical_app host=HOSTNAME port=5432'; ?> }}} Die Konfigurationsdatei muss für den Apache lesbar sein. Diese erreicht man, indem man die Leserechte für andere Benutzer setzt. {{{#!vorlage Befehl sudo chmod 644 /etc/davical/config.php }}} {{{#!vorlage Hinweis Die Konfigurationsdatei kann auch so angelegt werden, dass für verschiedene Clients im Netzwerk verschiedene Datenbanken verwendet werden (siehe [https://davical.dhits.nl/index.php?title=Configuration Davical Configuration] {en}). }}} == PostgreSQL == Zuerst müssen in der PostgreSQL-Datenbank die Benutzer für DAViCal angelegt werden. Dafür wird ein Terminal [2] geöffnet und der folgende Befehl eingegeben: {{{#!vorlage Befehl sudo -u postgres createuser davical_app sudo -u postgres createuser davical_dba }}} Sollte es beim Ausführen der Befehle Fragen nach `superuser`, `roles` und `databases` geben, können alle mit ''"Nein"'' beantwortet werden, denn die beiden neu zu erstellenden Benutzer von PostgreSQL sollen keine besonderen Rechte besitzen. {{{#!vorlage Hinweis Da in unterschiedlichen Ubuntu-Versionen auch die Versionen von PostgreSQL variieren, ist im folgenden `VERSION` ein Platzhalter für die Versionsnummer des PostgreSQL-Servers. }}} Jetzt müssen noch die Zugriffsrechte der beiden Nutzer für die PostgreSQL-Datenbank eingerichtet werden, damit sie sich lokal ohne Passwort anmelden dürfen. Dazu wird die Konfigurationsdatei '''/etc/postgresql/VERSION/main/pg_hba.conf''' mit einem Editor [3] mit Root-Rechten [4] geöffnet und die folgenden zwei Zeilen __vor__ den bereits vorhandenen Codeblöcken eingefügt. {{{ # TYPE DATABASE USER ADDRESS METHOD local davical davical_dba trust local davical davical_app trust [...] }}} Damit die Änderungen wirksam werden, muss der Datenbankserver neu gestartet werden: {{{#!vorlage Befehl sudo systemctl restart postgresql.service }}} Anschließend wird mit einem Skript die DAViCal-Datenbank angelegt: {{{#!vorlage Befehl sudo -u postgres -s /usr/share/davical/dba/create-database.sh }}} Nachdem das Skript durchgelaufen ist, wird am Ende das Administrator-Password angezeigt. {{{#!vorlage Hinweis Dieses Passwort sollte man sich notieren. Es kann und sollte später über das [#Administration Webinterface] geändert werden. Das Passwort steht in jedem Fall auch als Klartext in der Datenbank. Bei entsprechender Konfiguration und Verwendung von SSL-Verschlüsselung (`https://`) ist dies jedoch vernachlässigbar. }}} Damit ist die Grundkonfiguration abgeschlossen und man kann sich mit der Erstellung von Benutzern und Ressourcen beschäftigen. == LDAP-Anbindung == Davical kann die oben genannte Benutzerdatenbank, die unter der Konfigurationsdatei '''/etc/davical/config.php''' mit dem Befehl `pg_connect` angelegt wurde, mit einem LDAP-Verzeichnis synchronisieren. Hierzu ist zunächst die Konfigurationsdatei '''/etc/davical/config.php''' wie folgt zu erweitern: Für die Aktivierung der LDAP-Synchronisation: {{{#!vorlage Befehl $c->authenticate_hook['call'] = 'LDAP_check'; }}} Einzelne Benutzer werden wie folgt von der LDAP-Synchronisation ausgenommen (es empfiehlt sich den Administrator von der Synchronisation auszuschließen): {{{#!vorlage Befehl $c->do_not_sync_from_ldap = array( 'admin' => true ); }}} Dann wird die Synchronisation definiert (hier: Annahme, dass die zu synchronisierenden Benutzer mit der objectClass posixAccount angelegt sind): {{{#!vorlage Befehl $c->authenticate_hook['config'] = array( // Verbindungsdaten des LDAP-Servers 'host' => 'SERVER-IP', 'port' => '389', 'protocolVersion' => '3', // Wenn keine anonyme Abfrage möglich 'bindDN'=> 'KNOTEN DES ABFRAGENDEN BENUTZERS', 'passDN'=> 'PASSWORT', // Suchkriterien der zu synchronisierenden Benutzer im LDAP 'baseDNUsers'=> 'BAUM DER ZU SYNCHRONISIERENDEN BENUTZER', 'filterUsers' => 'objectClass=posixAccount', // Definition der zu synchronisierenden Benutzerdaten 'mapping_field' => array("username" => "uid", "updated" => "modifyTimestamp", "fullname" => "displayName", "email" =>"mail"), // Suchkriterien der zu synchronisierenden Gruppen im LDAP 'baseDNGroups' => 'BAUM DER ZU SYNCHRONISIERENDEN BENUTZER', 'filterGroups' => 'objectClass=posixGroup', // Definition der zu synchronisierenden Gruppendaten 'group_mapping_field' => array("username" => "cn", "updated" => "modifyTimestamp", "fullname" => "cn", "members" => "memberUid", "email" =>"mail"), // lokale Einstellungen 'default_value' => array("date_format_type" => "E", "locale" => "de_DE"), 'format_updated' => array('Y' => array(0,4), 'm' => array(4,2), 'd' => array(6,2), 'H' => array(8,2), 'M' => array(10,2), 'S' => array(12,2)), 'scope' => 'subtree', ); }}} Abschließend wird im Webadmin `http://SERVER-IP/davical/index.php` des Davical-Servers die Synchronisation gestartet. Unter dem Menüpunkt "Tools" im Menü "Administration" lässt sich die Synchronisation für die Benutzer und Gruppen dann getrennt voneinander starten. = Benutzung = [[Bild(./davical_login.png,325,align=right)]] == Administration == Als Administrator kann man mit einem Web-Browser lokal über * `http://localhost/davical/` oder * `http://IP-ADRESSE/davical/` auf die Verwaltung zugreifen und Benutzer und deren Rechte einrichten. Der Anmeldename ist `admin` und das Passwort ist das Passwort aus der Datenbankerstellung. Als Erstes sollte das Passwort geändert werden. Für einen schnellen Funktionstest ist es ausreichend, einen neuen Benutzer nur mit Benutzername und Passwort anzulegen. Empfehlenswert ist auf jeden Fall ein Blick in die umfangreiche [https://wiki.davical.org/w/Main_Page Dokumentation] {en}, um z.B. Gruppen festzulegen, damit Benutzer auch untereinander Kalenderdaten austauschen können. == Clients == Der Zugriff mit einem geeignetem [#Clientprogramme Clientprogramm] erfolgt grundsätzlich über die Adresse (URL) des DAViCal-Servers: {{{ http:///davical/caldav.php//calendar/ }}} Das Adressbuch ist über folgende URL erreichbar: {{{ http:///davical/caldav.php//addressbook/ }}} == Upgrade == Die neuen Pakete herunterladen und installieren. DAViCal bringt ein eigenes Upgrade-Skript zum Aktualisieren der Datenbank mit. {{{#!vorlage Hinweis Wer früher sichert, hat später was zum Rücksichern. Soll heißen: Vor dem Update sollte die Datenbank gesichert werden. }}} {{{#!vorlage Befehl sudo -u postgres pg_dump -W -U postgres davical > davical_`date +"%d.%m.%Y-%H.%M"`.psql }}} Dann kann man das Update-Skript ausführen: {{{#!vorlage Befehl sudo -u postgres -s /usr/share/davical/dba/update-davical-database }}} = Alternativen = * [https://devguide.calconnect.org/CalDAV/Server-Implementations/ CalDAV Server] {en} - Übersicht * [packages:calendarserver:Apple Calendar Server] bis Ubuntu 18.04 LTS * [https://www.k5n.us/webcalendar.php WebCalendar] {en} - Kalenderserver * [:Radicale:] - ein Kalenderserver in [:Python:] * [https://www.lewe.com/teamcal-neo/ TeamCal Neo] {en} - Webkalender für Teams * [https://phpicalendar.net/documentation/index.php/Main_Page PHP iCalendar] {en} - Lesezugriff auf [wikipedia:iCalendar:]-Dateien * [:Archiv/SOGo:SOGo] - Groupware mit CalDAV-Implementation * [https://www.tine20.com/ Tine 2.0] {de} - Groupware und Customer Relationship Management (CRM) mit CalDAV-Implementation = Links = * [https://www.davical.org/ Projektseite] {en} #tag: Server, Kommunikation, Kalender, Netzwerk, Adressbuch