Baikal

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Baïkal in einer „leichtgewichtigen“ Subdomain

Baïkal ist ein leichtgewichtiger Server für CalDAV (Kalender) und CardDAV (Kontakte). Die Installation kann im Großen und Ganzen der Installationsanleitung folgen. Bei der Installation in einer Subdomain, die als Unterverzeichnis eingerichtet ist, sind jedoch Besonderheiten zu beachten:

Die Installation soll in ein Verzeichnis erfolgen, das nicht aus Web zugänglich ist. Dafür bietet sich ein Ordner im $HOME des Domainadmins an. Der Unterordner "html", der die Webroot der Subdomain sein soll, wird als Symlink im "subs"-Ordner der Domain angelegt. (im Beispiel soll dies https://cal.example.org sein)

 # Herunterladen und Entpacken
 wget https://github.com/sabre-io/Baikal/releases/download/0.7.1/baikal-0.7.1.zip
 unzip  baikal-0.7.1.zip
 # durch das Entpacken der Zip-Datei ist ein Verzeichnis "baikal" entstanden.
 mkdir ~/sites
 mv baikal ~/sites
 ln -s ~/sites/baikal/html ~/doms/example.org/subs-ssl/cal
  • Stolperfalle: Die Quelle des Symlinks (baikal/html) muss als absoluter Pfad angegeben werden, da der Webserver ein anderes Arbeitsverzeichnis hat als der Domainadmin.
  • ich habe einen Ordner ~/sites dazwischengezogen. Hierunter gruppiere ich die Webanwendungen, die nach diesem System installiert sind. So habe ich auch den CalDAV/CardDAV-Client InfCloud eingerichtet.

Damit kann der Server bereits über die URL https://cal.example.org aufgerufen und fertig installiert werden. Auch das Anlegen von Benutzern ist dann schon möglich.

Der anschließende Versuch, mit dem frisch angelegten Benutzer die API aufzurufen, schlägt jedoch mit der Meldung fehl: Requested uri (/dav.php/) is out of base uri (/al/dav.php/)

Ursache ist, daß die DOCUMENT_ROOT nicht auf den Ordner unserer Subdomain zeigt, sondern auf /home/doms/example.org/htdocs-ssl. Baïkal verwendet hier übrigens nur die Stringlänge, d.h. wenn also die verwendete Subdomain nur einen Buchstaben lang ist (z.B. http://c.example.org), tritt der Fehler lustigerweise nicht auf. Um ihn in den anderen Fällen zu beheben, kann man in der Datei ~/sites/baikal/Core/Frameworks/Flake/Framework.php die Variable $_SERVER["DOCUMENT_ROOT"] durch den entsprechenden absoluten Verzeichnisnamen ersetzen, d.h. aus

 $sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen($_SERVER["DOCUMENT_ROOT"]));

wird

 $sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen('/home/doms/example.org/subs-ssl/cal'));

(Bei einem Update muss diese Änderung natürlich nachgezogen werden)

Damit ist Baïkal funktionsfähig.