Baikal mit Nginx und https

Falls man seine Termine oder Kontaktdaten zur Synchronisation nicht an Dritte weitergeben möchte, ist es mit sehr einfachen Mitteln möglich, sie über den eigenen Server zu hause zu synchronisieren. Das Flagschiff in dieser Richtung ist im Prinzip Owncloud, welches ebenfalls zu synchronisation CalDAV und CardDAV zur Verfügung stellt. Allerdings hatte ich bei der Synchronisation immer wieder Probleme, und so wollte ich Baikal eine Chance geben.
Baikal ist ein in PHP geschriebener, kleiner und robuster Server zum synchronisieren von Kalender- bzw. Kontaktdaten mittels CalDAV bzw. CardDAV.
Baikal speichert seine Daten in einer SQLite- oder MySQL-Datenbank, wobei für den Privatgebrauch eine SQLite-Datenbank vollkommen ausreichend ist.

Da der Webserver Apache ein wenig zu mächtig ist für einen Raspberry oder Beaglebone, wollte ich es mal mit dem Nginx versuchen ( Ausgesprochen Engine X ) – ein kleiner, schlanker und sehr performanter Webserver.

Leider habe ich dazu im Netz einige Anleitungen gefunden, die nicht richtig funktioniert haben. Daher hab ich meine funktionierende Lösung nochmal aufgeschrieben.

Nginx installieren

apt-get install nginx

PHP und SQLite installieren

apt-get install sqlite php5 php5-fpm php5-sqlite

SSL-Zertifikat erstellen

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

Virtuellen Host für Nginx erstellen

nano /etc/nginx/sites-available/ssl

Das ist die für mich funktionierende Datei ssl, die ich nach einigen Versuchen so zusammen gestellt habe. Man kann sie also so übernehmen – gegebenenfalls noch den root-Pfad an die eigene Installation anpassen.

server {
	listen 443;
      
	ssl on;
	ssl_certificate /etc/nginx/ssl/cacert.pem;	# path to your cacert.pem
	ssl_certificate_key /etc/nginx/ssl/privkey.pem;	# path to your privkey.pem
	
	root /var/www/;
	index index.html index.htm index.php;

	server_name localhost;

	location / {
		try_files $uri $uri/ /index.html;
	}

	location ~ ^(.+\.php)(.*) {
		try_files $fastcgi_script_name =404;
		fastcgi_split_path_info ^(.+\.php)(.*)$;

		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		fastcgi_param  PATH_INFO        $fastcgi_path_info;
		fastcgi_index index.php;
		include fastcgi_params;
	}

    	charset utf-8;

	location ~ /(\.ht|Core|Specific) {
		deny all;
		return 404;
	}
}

Jetzt noch den virtuellen Host ssl aktivieren. Das geht durch einen sogenannten „symbolischen Link“ im Ordner sites-enabled auf den soeben erstellten virtuellen Host.

ln -s /etc/nginx/sites-available/ssl /etc/nginx/sites-enabled

Baikal runter laden und installieren
Jetzt wird es Zeit, Baikal zu installieren. Dazu wird einfach das Paket herunter geladen und im Root-Ordner des Web-Servers entpackt.

cd /var/www
wget http://baikal-server.com/get/baikal-flat-0.2.7.zip
unzip baikal-flat-0.2.7.zip
mv baikal-flat/ baikal/
chown -R www-data:www-data baikal/

Um jetzt Baikal in den Installationsmodus zu schalten, muss man eine leere Datei ENABLE_INSTALL im Ordner Specific erstellen.

touch /var/www/baikal/Specific/ENABLE_INSTALL

Jetzt kann man unter https://meine-url.com/baikal/ die Installation von Baikal abschließen.
Dafür legt man erst einen Administrator-Account an, legt die Zeitzone fest und – in meinem Fall – den Haken vor MySQL benutzen entfernen.

Dann logt man sich mit dem Administrator-Account ein und legt einen Nutzer an. Beim anlegen des Nutzers werden für ihn automatisch ein Kalender und ein Adressbuch mit dem Namen default angelegt.

Damit ist die Installation abgeschlossen.
Nun kann man unter folgenden Adressen auf seine Daten zugreifen:

CalDav: https://meine-url.com/baikal/cal.php/calendars/[username]/default/
CardDav: https://meine-url.com/baikal/card.php/addressbooks/[username]/default/

Synchronisation mit Thunderbird/Lightning

Zur Synchronisation mit Thunderbird / Lightning siehe Artikel Baikal mit Thunderbird / Lightning synchronisieren

Synchronisation mit Android-Geräten
Zur synchronisation mit meinen Android-Geräten verwende ich CalDAV Sync Free Beta. Funktioniert einwandfrei. Nach der Installation von CalDAV Sync Free Beta:

  1. Unter Einstellungen / Konten ein neues Konto erstellen
  2. CalDAV Sync Adapter wählen
  3. Nutzername, Passwort und die oben angegebene CalDAV-Adresse eintragen
  4. Dann auf Verbindung testen klicken
  5. Nochmal das neu erstellte CalDAV-Sync-Adapter-Konto wählen, um die automatische Synchronisation einzuschalten

Wenn alles passt, meldet der CalDAV Sync Adapter, dass er einen neuen Kalender namens default gefunden hat. Diesen kann man dann man dann in die Kalenderliste des Telefons übernehmen.

Synchronisation mit Android-Geräten
Zur Synchronisation seiner Kontakte gibt es ebenfalls eine kostenolse Variante, und zwar CardDAV-Sync free beta.

58 Gedanken zu “Baikal mit Nginx und https

  1. Servus,

    Deine Anleitung ist echt super!
    Allerdings hast du im Befehl zur Erstellung der Verknüpfung einen Schreibfehler drin: availible anstatt available.

    Ansonsten wirklich alles super. Selbst für mich als Linux noob. einfach eingeben und Verbindung mit SSL haben. Absolut super.

    • Hey Danke

      Habs verbessert. Hab mich da echt vertippt.

      Und freut mich, dass dir die Anleitung weiter geholfen hat.Ich hab auch echt lange gesucht und probiert, bis alles funktioniert hat.

      Bjoern

  2. Hej Bjoern,

    noch ein Nachtrag für alle DAVdroid Nutzer. Die können in die SSL-Datei noch folgende zwei Zeilen eintragen (über der Zeile charset utf-8;):

    rewrite ^/.well-known/caldav /baikal/cal.php redirect;
    rewrite ^/.well-known/carddav /baikal/card.php redirect;

    Damit muss man bei Davdroid als Basis-URL nur noch

    https://meine-url.com/

    eintragen und CalDav und CardDav nicht als zwei Konten anlegen.

    Die DAVdroid Nutzer müssen außerdem bei der Erstellung des Zertifikats darauf achten, bei „Common Name“ ihre Domain „meine-url.com“ anzugeben.

    Bin immer noch begeistert :).

    Gruß Michael

  3. Hallo Bjoern,

    Du hast mir kürzlich in meinem Blog dankenswerterweise Deine Links hinterlassen.
    Nun drängen sich aber noch ein paar Fragen hierzu auf: wenn ich das ganze mit Apache und SSL machen will, wie läuft hier das ganze? Wenn ich den Standardport 443 ändern muß, weil schon anderweitig belegt, wie sehen dann die Pfadangaben von den mobilen Geräten (Android‘) aus?
    Ich hoffe Du kannst mir helfen.

    Grüße Markus

  4. Hallo Bjoern,

    ich habe Baikal installiert und einen User angelegt.
    Lightning findet den Kalender nicht,
    Carddav und Wave-Kalender auf Android syncen sich, aber:
    Ich kann im Baikal-Web-Admin keine User oder Kalender hinzufügen.
    Auch zeigt er mir bei Anzahl der Termine und Adressbucheinträgen
    jeweils noch 0 an.
    Mir gehen die Ideen aus und hoffe du hast welche für mich!

    Uwe

    • Hallo Uwe

      Zu Lightning: Leider hakt Lightning bei der ersten Anmeldung. Einfach mehrfach versuchen. Wenn gar nichts geht, Kalender nochmal löschen und neu anlegen. Irgendwann nimmt er es ..

      Das du keine Nutzer und / oder Kalender hinzufügen kannst, könnte ein Problem mit den Rechten sein. Wenn du Baikal als nutzer root installiert und SQLite als Datenbank gewählt hast, musst du noch mit

      chown -R www-data:www-data /pfad/zu/baikal 

      die richtigen Rechte für das Verzeichnis setzen, so dass dein Webserver auch in das Verzeichnis rein schreiben darf.

      Ich hoffe, das hilft dir weiter.

      Gruß

      • Nein Lightning will nocht … erstmal egal !
        Und
        „chown -R www-data:www-data /var/www/baikal“
        hat nicht geholfen !
        wie kann ich Baikal denn neu installieren ?

        • Hast du nach dem „chown … “ den Webserver mal neu gestartet?

          Wenn du noch keinen Nutzer anlegen konntest, dürfte auch noch kein Kalender da sein, auf den Lightning zugreifen kann. Das könnte das Problem mit Lightning sein, denn die Kalenderadresse ist ja https://Deine-IP/baikal/cal.php/calendars/%5Bnutzername%5D/default/ .. und wenn noch kein Nutzer angelegt ist, existiert diese Adresse nicht.

          Um Baikal neu zu installieren brauchst du einfach nur das Verzeichnis „baikal“ löschen und das entpackte flat-Paket neu dort hin zu kopieren. Ich denke aber nicht, dass dich das weiter bringt.

          Hast du als Datenbank SQLite oder MySQL genommen ?

          • Zunächst sah alles super aus.
            Ich habe den default Kalender und das default Adressbuch angelegt bekommen.

            Ich kann den Server auch per Android-App erreichen (ich habe einen Kalender und Adressbuch anlegen können).
            Dann ist mir aber aufgefallen, das im WebAdmin kein Eintrag im Kalender und auch nicht im Adressbuch angezeigt wird.
            In der Adresszeile ist bei der WebAdmin Seite das „https“ rot durchgestrichen…

          • Das klingt echt merkwürdig. Ich hab jetzt nochmal ein wenig rum gesucht. Die meisten Probleme traten mit Baikal auf, wenn Baikal während der Installation keine Schreibrechte auf seine Ordner hatte.

            Vielleicht installierst du Baikal wirklich nochmal neu, achtest aber dieses mal drauf, das du vor dem ersten Einloggen mit Abschluss des Setups du mit „chown … “ die richtigen Rechte auf den Ordner setzt. Ist ja eine Sache von ein paar Minuten.

            Zu dem https-Problem: welchen Webserver nutzt du?

  5. Vielen Dank für deine Anleitung !
    Habe erst die Anleitung für die Baikal installation durchgeführt und anschließend die für den eigenen Heimserver, da noch php etc. zur vollen Funktion gefehlt hat.
    Jetzt funktioniert alles bestens.
    Ich habe eine dynamische dns und sogar auf meinem Blackberry, das öfters probleme machte, funktioniert alles einwandfrei.
    Bei der einrichtung ist zu beachten, dass Blackberry die serveradresse ohne https:// möchte, um zu funktionieren.
    Da ich was Kalender angeht immer paralel Owncloud verwendet habe, da Kalender mit mehreren Benutzern geteilt werden können, werde ich versuchen diese Funktion in Baikal zu integrieren und die Anleitung hier als Kommentar anzufügen….

  6. Ich nutze Nginx.
    Ich habe den baikal Ordner gelöscht und neu gezipt
    baikal-flat in baikal umbenannt.
    „chown -R www-data:www-data baikal/“ ausgeführt(ja ich war im richtigen Verzeichniss).
    „touch /var/www/baikal/Specific/ENABLE_INSTALL“
    Dann die Webseite geöffnet und das Passwort eingegeben.
    Nach dem speichern passiert nichts…ich werde nicht zu zweiten Seite weitergeleitet ?

    Ps:Danke für deine Ideen

    • Kein Problem.

      Bislang konnte ich ja leider nicht wirklich helfen. Wenn du magst, schick mir mal per Mail die Datei, die in der /etc/nginx/sites-available für die Baikal-Installation zuständig ist .. also default oder default-ssl oder so.

      Ich schicke dir eine Mail an deine Adresse, damit du meine Adresse hast.

  7. Hallo Bjoern,

    super Anleitung!

    doch nach der Installation von Baikal und nachdem ich versucht habe „Meine Addresse“/baikal/cal.php/calendars/David/default/“ aufzurufen kam dieser Fehler: „Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt.“
    zudem steht auf der Seite:
    „Sabre\DAV\Exception\NotImplementedGET is only implemented on File objects1.8.7“.

    Weißt du wie man das beheben kann?

    LG
    David

    • Hallo David

      Naja, beheben musst du das nicht. Das heißt nämlich erstmal, dass der Kalender funktioniert.
      Was du vermutlich suchst, ist ein Kalenderoberfläche, wo deine Termine drin stehen – wie früher bei Owncloud.
      Die gibt es aber bei Baikal (noch) nicht.
      Die Hauptaufgabe von Baikal ist, die Kalender deiner unterschiedlichen Geräte wie Smartphone, PC usw. synchron zu halten.

      Du kannst z.B. in dem Kalender auf deinem PC ( ich nutze Thunderbird mit der Erweiterung Lightning ) einen Termin eintragen und über Baikal synchronisiert sich z.B. dein Telefon dann mit den Terminen auf deinem PC. Das funktioniert aber auch mit Outlook und vielen anderen Kalendern, da die meisten mittlerweile das CalDAV-Protokkoll unterstützen.

      Wie es mit Thunderbird klappt, habe ich in diesem Artikel beschrieben.

      http://my5cent.spdns.de/allgemein/baikal-mit-thunderbird-lightning-synchronisieren.html

      Ich hoffe, das hilft dir weiter

      Gruß Bjoern

  8. Also von meiner Seite aus auch noch mal vielen Dank, total toll,
    jetzt hat es nach gut drei Wochen ‚basteln‘ auch endlich mit dem Zertifikat funktioniert. 😀

    Ich habe das Gefühl das viele andere HowTo Schreiber ja nur IOS nutzen. -.- Was mich schier zu Verzweiflung gebracht hatte, weil ich das Zertifikat nicht zum laufen bekommen habe unter dem Androiden.

    Grüße
    Percy

  9. Mal ne kurze frage. Hat jemand dad ganze unter nginx mit einem subdirectory hinbekommen? Bei mir findet er nämlich die Kalender nicht. Scheint ein Problem mit dem Document Root zu sein. Im Internet fand man ein paar hilfreiche tips, wie das nutzen von aliase statt root path. Doch weiter als das admin menü bin ich nicht gekommen. Beim aufruf des kalenders erhalte ich nur ein 404 not found

    • Hey Sebastian

      Hast du da vielleicht ein paar zusätzliche Infos? Zum Beispiel, in welches Unterverzeichnis du Baikal installiert hast und welchen Pfad zum Kalender du dann eingestellt hast?

      Gruß

  10. Also Baikal liegt bei mir unter /baikal. Hier mal meine nginx config:

    location /baikal {
    charset utf8;
    alias /var/www/baikal;
    index index.php;
    error_log /var/log/nginx/e.log debug;

    rewrite ^(/baikal)(/.?.php)(/.)?$ /…$document_root/…$1/…$2/…$3 last;
    rewrite ^/baikal/.well-known/caldav /cal.php redirect;
    rewrite ^/baikal/.well-known/carddav /card.php redirect;

    location ~ \.php$ {
    fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    include fastcgi_params;
    }

    location ~* /baikal/(.ht|Core|Specific) {
    deny all;
    return 404;
    }

    }

    Damit wird schonmal unter http://www.server-name.de/baikal angezeigt das Baikal läuft.
    Auch unter http://www.server-name.de/baikal/admin krieg ich die Admin Oberfläsche zu Gesicht. Unter SystemSettings habe ich dann die Card und Cal Dav BaseUri entsprechend angepasst nach:

    PROJECT_BASEURI . „baikal/cal.php/“
    PROJECT_BASEURI . „baikal/card.php/“

    Der Aufruf von http://www.server-name.de/baikal/cal.php lässt dann auch das Login Fenster aufpoppen und die XML Ansicht erscheint im Browser.

    Sobald ich aber auf einen Kalender zugreifen möchte:
    http://www.server-name.de/baikal/cal.php/calendars/username/default
    bekomme ich nur einen 404 zurück.

  11. Da war ja auch einer Nacht-Aktiv 😀
    Ja wie Pflegt man doch immer zu sagen, es gibt keine dummen Fragen ^^

    Mein Username trage ich schon korrekt ein. Hab das ganze getestet wenn es im root directory läuf, da klappt alles. Momentan hab ich ne Notlösung, indem ich den Port 82 missbrauche. Aber das ist immer so ne Sache mit Firewalls, daher wäre mir die saubere Lösung mit Subdirecory und Port 80 lieber. Aber diesbezüglich steh ich auch stark auf dem Schlauch.

    • Ja .. sch… Vollmond 🙂

      So, ich hab das jetzt mal mit meiner Konfig verglichen. Ich vermute mal, dass deine rewrite-Anweisungen da Durcheinander rein bringen.
      Ich habe die gar nicht und alle Angaben in dem Tut beziehen sich auch auf URLs ohne diese rewrites ..

      Versuch es mal ohne die Dinger .. Zur Sicherheit schicke ich dir mal noch per Mail meine Konfig .. mit der bei mir Baikal auch in einem Unterverzeichnis läuft.

      Gruß Bjoern

      • Hallo Zusammen,

        Ich habe genau wie Sebastian Baikal unter /baikal liegen, da ich auch noch Seafile installiert habe (die /etc/nginx/sites-available/default habe ich entsprechend dem Post von Sebastian vom 3. Mai ergänzt). Seafile (mit nginx, https und mysql) läuft tadellos. Auch ich kann unter https://example.spdns.de:Port/baikal sehen, dass Baikal läuft. Auch einen Benutzer samt neuem Kalender konnte ich anlegen. Unter https://example.dyndns.de:Port/baikal/admin kann ich ebenfalls die Admin Oberfläche mir ansehen und Einstellungen etc. ändern. Leider kann ich weder per Andoid (CalDav Sync) noch per Thunderbird (Lightning) auf einen meiner Kalendar zugreifen.

        Was habt ihr damals gemacht? Es sieht ja ziemlich danach aus, dass ich jetzt das gleiche Problem habe 😀

        Gruß

        • Hey Andre

          Also wenn du schon so weit bist, kann es ja eigentlich nur noch an der URL liegen, mit der du auf den Kalender zugreifst. Vergleich vielleicht nochmal mit den Beispielhaften Links auf meiner Seite ..

          CalDAV https://meine-url.com/baikal/cal.php/calendars/%5Busername%5D/default/

          meine-url.com, [username] sind zu erssetzen. Und wenn du zusätzliche Kalender angelegt hast, ist der letzte Wert „default“ noch durch den entsprechenden Kalendernamen zu ersetzen.

          Ich hoffe, so kommst du weiter

          Gruß Bjoern

          • Hallo Bjoern,

            zunächst einmal vielen Dank für die Antwort, allerdings funktioniert die Sache immer noch nicht. Die URL wurde mehrfach überprüft, daran kann es also nicht liegen.
            Sebastian hatte ja anscheinend das gleiche Problem, habt ihr es damals zusammen lösen können?

            Gruß

  12. Hi Björn, many thanks.

    I struggled a bit with the standard installation instructions provided with Baïkal. With Apache, it becomes complicated, especially to „harden“ the web server. With nginx, I had issues with the virtual host solution, like you.

    When following your instructions, I have had to restart nginx after making the virtual host file. Command is sudo /etc/init.d/nginx restart

    Furthermore, after completing the OS-part, I still could not reach the admin page on address https://myserver/admin or https://myserver/baikal. Instead, I had to use https://myserver/baikal/html/admin. Not sure what causes it, presumably it is in the virtual host file.

    Erwin

  13. Habe auch ein Problem mit Baikal. Nach dieser Anleitung hier installiert. Ich komme in das Webinterface und habe 2 user angelegt. es gelingt mir jedoch nicht das caldav einzurichten auf Mac OS X. Auf der Test in troubleshooting geht schon schief. Irgendwie scheinen die Anfragen verbogen zu werden.
    der Test mit Curl liefert das:
    curl -so – –digest –user USER:PASSWORT http://192.168.178.31/cal.php/calendars/USER/default

    404 Not Found

    404 Not Found
    nginx/1.6.2

    bei Verbinden mit Mac OS X sieht es so aus als ob user und Passwort nicht passen.
    im ACCESS-Log steht dann folgendes:
    192.168.178.36 – – [15/Jan/2016:22:15:41 +0100] „PROPFIND /baikal/cal.php/calendars/Peter/default HTTP/1.1“ 405 172 „-“ „Mac+OS+X/10.11.2 (15C50) CalendarAgent/361.1“
    und bei Abfrage mit Curl:
    192.168.178.31 – – [15/Jan/2016:21:45:19 +0100] „GET /cal.php/calendars/Peter/default
    HTTP/1.1“ 404 168 „-“ „curl/7.38.0“
    im Error-log lese ich folgende Meldungen:
    2016/01/15 22:13:06 [error] 3558#0: *82 rewrite or internal redirection cycle while internally redirecting to „/index.html“, client: 192.168.178.36, server: 192.168.178.31, request: „PROPFIND /principals/ HTTP/1.1“, host: „192.168.178.31“
    und für die Curl-Anfrage:
    2016/01/15 21:45:19 [error] 3557#0: *1 open() „/var/www/html/cal.php/calendars/Peter/default“ failed (2: No such file or directory), client: 192.168.178.31, server: , request: „GET /cal.php/calendars/Peter/default HTTP/1.1“, host: „192.168.178.31“

    hat jemand eine Tip
    Grüße
    Peter

  14. Hi Meine Config

    server {
    listen 80;
    server_name ;
    rewrite ^/(.*) https://$server_name/$1 permanent;
    }
    server {
    listen 443; #IPv4
    #listen [::]:443; # IPv6
    ssl on;
    ssl_certificate /var/www/ssl/cloudssl.crt;
    ssl_certificate_key /var/www/ssl/cloudssl.key;
    server_name ;

    location / {
    fastcgi_pass 127.0.0.1:8000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;

    fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;

    fastcgi_param HTTPS on;
    fastcgi_param HTTP_SCHEME https;
    }

    location /seafhttp {
    rewrite ^/seafhttp(.*)$ $1 break;
    proxy_pass http://127.0.0.1:8082;
    client_max_body_size 0;
    }

    location /media {
    root /home/seafile/seafile-server-latest/seahub;
    }

    location /seafdav {
    fastcgi_pass 127.0.0.1:8080;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;

    fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;

    fastcgi_param HTTPS on;
    }

    location /baikal {
    root /var/www;
    index index.php index.html;

    location ~ ^(.+\.php)(.*)$ {
    try_files $fastcgi_script_name =404;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    include /etc/nginx/fastcgi_params;
    }

    rewrite ^/baikal/caldav /baikal/cal.php redirect;
    rewrite ^/baikal/carddav /baikal/card.php redirect;

    charset utf-8;

    location ~ /(\.ht|Core|Specific) {
    deny all;
    return 404;
    }
    }

    location /seafmedia {
    rewrite ^/seafmedia(.*)$ /media$1 break;root /home/seafile/seafile-server-latest/seahub;
    }
    }

  15. Hallo bei mir kommt bei Kontakte Hinzufügen (macOS Sierra)
    Fehler . Der Vorgang konnte nicht abgeschlossen werden. (CoreDAVHTTPStatusErrorDomain-Fehler 404.)

    Gruß peete

  16. hallo bjoern,
    vielen dank für deine schnelle antwort (im ’seafile‘ thread).
    hab jetzt beide server (seafile und baikal mit nginx) zum laufen gebracht.
    allerdings hab ich jetzt ein richtiges problem den androiden mit baikal zu verbinden.
    sitz schon seit stunden und bin leicht frustriert. seafile lief auf anhieb – caldav/cardav am androiden scheitert kläglich.

    server: basic auth. und sqlite.
    client: cm13 barebone, versucht hab ich davdroid, cardav-sync free, caldav sync, cardav-sync.
    bestenfalls bin ich bis zur zertifikatsbestätigung gekommen, das wars aber auch schon.
    in den logs hab ich nicht wirklich brauchbare infos gefunden. im admin-gui kann ich user
    und kalender/kontak-db anlegen und wird das sqlite-file am server auch gespeichert.

    meine frage:
    wo fange ich am besten mit der fehlersuche an?

    servus aus wien
    techcom

    • Heyho

      Ich habe auch vor Kurzem ein Update gemacht und habe seitdem auch Probleme mit dem Androiden.
      Ich komme aber erst am Wochenende dazu, mich damit zu beschäftigen – vorher kann ich dir leider nicht mehr sagen.
      Ich würde im NginX access-log und im Error-Log anfangen .. ich werde hier schreiben, wenn ich mehr weiß

      Gruß Bjoern

  17. hallo bjoern,
    habs mittlerweile geschafft den androiden zu verbinden.
    (in der config des nginx den error-level auf ‚debug‘ gesetzt – nicht vergessen
    den level wieder auf ‚error‘ zurückzusetzen, sonst müllt das log file den rpi zu!)
    problem war (wie so oft) ein falscher pfad am server.
    die zuständigen *.php files lagen bei mir (nach der installation) unter :
    /var/www/baikal/html/
    muss aber sein:
    /var/www/baikal/

    und im tb (mit lightning addon) unbedingt mit
    https://user:passwd@meindyndnsserver/baikal/cal.php/calendars/user/default/
    anmelden. (realm true/false hab ich noch nicht überprüft).

    jetzt hab ich am androiden/und im tb das problem dass die synchronisation noch nicht
    sauber funktioniert (entweder nur in eine richtung bzw. werden datensätze
    gelöscht/angelegt aber änderungen werden nicht übernommen.

    lg techcom

  18. hallo,
    jetzt funkts endlich.
    folgende kombination funktioniert bei mir:
    pc/notebook:
    die kontakte sync ich mit dem CardBook addon von tb.
    den kalender mit Evolution
    am android:
    Offline Calendar
    CalDav Sync Adapter
    CardDAV-Sync free

    lg techcom

  19. Hallo Bjoern

    Zu Beginn muss ich sagen, dass ich totaler Neuling in dieser Thematik bin. Soll heißen, bisher wenig Verständnis von Linux Systemen und auch insgesamt von Handlings auf Servern etc. habe.
    Was mein Problem betrifft, komme ich bei der Installation des Baikal-Servers nicht weiter. Mein aktueller Stand der Dinge ist:
    Ich bin deiner Homepage (die wirklich top ist, das muss man nochmal sagen)
    Schritt für Schritt gefolgt, von der Grundeinrichtung eines BananaPi mit „Installation und erst Schritte“ -> „Bananian von Festplatte booten“ ->“Nginx, MySQL und PHP5 installieren“ -> und jetzt eben diesem Kapitel hier.
    Es läuft soweit einiges wie erwartet.
    Ich kann auf mein BananaPi zugreifen und auch die Standard Nginx-Startseite sowie die selbst erstellte Info.php aufrufen.
    Auch das erstellen der SSL Zertifikate hat geklappt (musste bei Firefox natürlich eine Ausnahme hinzufügen).
    Leider scheitere ich jedesmal beim Aufrufen von https://BananaPi/baikal
    Es kommt schlicht weg „Forbidden 403“
    Habe angefangen mich schlau zu machen und habe auch im Error-Log von Nginx geschaut. Soweit ich das beurteilen kann, ist alles gut eingerichtet, nur dass mich Nginx aus einem mir unerklärbaren Grund nicht auf die Baikal-Datei zugreifen lässt um die Installation abzuschließen. -> Muss also an Nginx liegen, wo ich wohl was vermasselt habe, aber hier stecke ich fest.
    Der User „www-data“ hat Zugriff auf „www“ , „www/html“ (hier liegen meine Default-Seiten) und auch auf „www/baikal“.
    Wäre über deine Hilfe sehr dankbar

    Beste Grüße
    Philip

    • Hey Philip

      Also mit den Dateirechten scheint ja alles in Ordnung zu sein.
      Ein weiterer Grund für diese Fehlermeldung kann sein, dass Nginx nicht komplett richtig für PHP konfiguriert wurde.

      Schau bitte mal, ob in deiner Konfig-Datei in /etc/nginx/sites-available folgende Zeilen wie folgt drin sind:

      index index.html index.htm index.php;
      

      und

      location /baikal/ {
         try_files $uri $uri/ /index.php;
      }
      

      Gruß Bjoern

  20. Nabend Bjoern

    Danke erst mal für die schnelle Rückmeldung, werde heute Abend mal einen Versuch starten, ich melde mich mit dem Ergebnis

    Gruß Philip

  21. Hey Bjoern

    Ich muss leider sagen, das hat an der Stelle noch nicht gefruchtet.
    Hier mal kurz der Inhalt meiner „SSL“ Datei, welche unter
    /etc/nginx/sites-available“ abgelegt ist:
    server {
    listen 443;

    ssl on;
    ssl_certificate /etc/nginx/ssl/cacert.pem; # path to your cacert.pem
    ssl_certificate_key /etc/nginx/ssl/privkey.pem; # path to your privkey.pem

    root /var/www/;
    index index.html index.htm index.php;

    server_name localhost;

    location / {
    try_files $uri $uri/ /index.html;
    }

    location ~ ^(.+\.php)(.*) {
    try_files $fastcgi_script_name =404;
    fastcgi_split_path_info ^(.+\.php)(.*)$;

    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_index index.php;
    include fastcgi_params;
    }

    location /baikal/ {
    try_files $uri $uri/ /index.php;
    }

    charset utf-8;

    location ~ /(\.ht|Core|Specific) {
    deny all;
    return 404;
    }
    }

    Nach deinem Vorschlag habe ich die „location /baikal/…“ Stelle eingefügt, der „index index.html…“-Part war bereits vorhanden.
    Die Baikal-Dateien liegen unter
    /var/www/baikal/

    Hoffe das hilft die Problematik einzugrenzen.
    Vielen Dank, dass du dich der Sache annimmst, wirklich top!

  22. Hoi Bjoern

    Wieder mal vielen Dank fürs kümmern. Auf der Seite hatte ich auch schon rumgestöbert und sowohl die Vorlage dort 1:1 übernommen (außer eben auf SSL-Zugriff einstellt), als auch Kombinationen von deinem Original mit der Version von Baikal gemischt. Ich habe interessanterweise beide „fastcgi“ -Dateien, habe aber trotzdem mal auf fastcgi.conf umgestellt. Das Ergebnis bleibt ein „Forbidden 403“ wobei ich im Error-Log von Nginx keine Veränderung feststelle:

    „2017/03/07 02:43:25 [error] 2624#0: *1 directory index of „/var/www/baikal/“ is forbidden, client: 192.168.178.20, server: localhost, request: „GET / HTTP/1.1“, host: „bananapi.fritz.box“

    Das ist mehr oder minder immer der Output (hatte auch schon die root zwischen „/var/www;“ und „/var/www/baikal“ gewechselt ohne Erfolg. Ich werde das Gefühl nicht los, nur eine Kleinigkeit zu übersehen, weiß aber nicht wo.
    Eine Verhaltensänderung gibt es seit der „fastcgi.conf“ und zwar, das Firefox beim Eingeben der Server-Adresse „https://bananapi.fritz.box/baikal“ mit dem „Forbidden 403“ endet und sich dabei die Zieladresse ohne das „/baikal“ darstellt, falls das was zu bedeuten hat?
    Ich stehe jedenfalls total auf dem Schlauch…

    Viele Grüße
    Philip

Schreibe einen Kommentar