• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

Baikal CalDav/CardDav server parallel zum Pi-Hole mit lighttpd

karlitos

New Member
Guten Tag,

ich habe Schwierigkeiten den lighttpd, der mit der Installation von Pi-Hole DNS Server kam so zu konfigurieren, so zu konfigurieren, dass neben der Weboberfläche von Pi-Hole auch der Baikal CalDav/CardDav server richtig funktioniert.

Das Pi-Hole habe ich auf dem Armbian Bullseye mit dem armbian-config Tool installiert. Es läuft auf einem Orange Pi Lite in meinem Heimnetzwerk, angeschlossen an die FritzBox.
Die Installation von Baikal habe ich nach der offiziellen Anleitung gemacht. Die enthält leider lediglich die Konfiguration für Apache und Nginx. Die Konfiguration von lighttpd habe ich also nach dieser Anleitung gemacht. Ich kann die Weboberfläche von Baikal erreichen, was immer noch scheitert ist die Anbindung des Adressbuches an meinem Mac - ich gehe also davon aus, dass lighttpd nicht ganz richtig konfiguriert ist da Mac für CadDav die richtig gesetzten url.redirect Regeln braucht.

Die Dateien von Baikal liegen im /var/www/html neben den Dateien für die Pi-Hole Benutzeroberfläche

Bash:
$ tree -L 2 -pug /var/www
/var/www
└── [drwxrwxr-x www-data www-data]  html
    ├── [drwxr-xr-x root     root    ]  admin
    ├── [drwxr-xr-x root     root    ]  baikal
    ├── [-rw-r--r-- root     root    ]  index.lighttpd.orig
    └── [drwxr-xr-x root     root    ]  pihole


$ tree -L 1 -pug /var/www/html/baikal/
/var/www/html/baikal/
├── [drwxr-xr-x www-data www-data]  config
├── [drwxr-xr-x root     root    ]  Core
├── [drwxr-xr-x root     root    ]  html
├── [-rw-r--r-- root     root    ]  LICENSE
├── [-rw-r--r-- root     root    ]  README.md
├── [drwxr-xr-x www-data www-data]  Specific
└── [drwxr-xr-x root     root    ]  vendor

Auf die Benutzeroberfläche von Baikal kann ich im Browser über http://pi-hole/baikal/html/ (pi-hole ist das hostname von dem Orange Pi Lite) bzw.. http://pi-hole/baikal/html/admin/ zugreifen. Genauso über die IP-Adresse: http://192.168.178.4/baikal/html/ In der Pine-Hole Administration habe ich unter Local DNS - DNS Records folgendes eingetragen: Domain: baikal | ip: 192.168.178.4

So sieht die Originalkonfiguration für das lighttpd in /etc/lighttpd/lighttpd.conf aus - die soll man auch nicht ändern:
NGINX:
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Lighttpd config for Pi-hole
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.

###############################################################################
#     FILE AUTOMATICALLY OVERWRITTEN BY PI-HOLE INSTALL/UPDATE PROCEDURE.     #
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
#                                                                             #
#              CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE:              #
#                         /etc/lighttpd/external.conf                         #
###############################################################################

server.modules = (
    "mod_access",
    "mod_accesslog",
    "mod_auth",
    "mod_expire",
    "mod_redirect",
    "mod_setenv",
    "mod_rewrite"
)

server.document-root        = "/var/www/html"
server.error-handler-404    = "/pihole/index.php"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80
accesslog.filename          = "/var/log/lighttpd/access.log"
accesslog.format            = "%{%s}t|%V|%r|%s|%b"

index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc", ".md", ".yml", ".ini" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

mimetype.assign = (
    ".ico"   => "image/x-icon",
    ".jpeg"  => "image/jpeg",
    ".jpg"   => "image/jpeg",
    ".png"   => "image/png",
    ".svg"   => "image/svg+xml",
    ".css"   => "text/css; charset=utf-8",
    ".html"  => "text/html; charset=utf-8",
    ".js"    => "text/javascript; charset=utf-8",
    ".json"  => "application/json; charset=utf-8",
    ".map"   => "application/json; charset=utf-8",
    ".txt"   => "text/plain; charset=utf-8",
    ".eot"   => "application/vnd.ms-fontobject",
    ".otf"   => "font/otf",
    ".ttc"   => "font/collection",
    ".ttf"   => "font/ttf",
    ".woff"  => "font/woff",
    ".woff2" => "font/woff2"
)

# Add user chosen options held in external file
# This uses include_shell instead of an include wildcard for compatibility
include_shell "cat external.conf 2>/dev/null"

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port

# Prevent Lighttpd from enabling Let's Encrypt SSL for every blocked domain
#include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
include_shell "find /etc/lighttpd/conf-enabled -name '*.conf' -a ! -name 'letsencrypt.conf' -printf 'include \"%p\"\n' 2>/dev/null"

# If the URL starts with /admin, it is the Web interface
$HTTP["url"] =~ "^/admin/" {
    # Create a response header for debugging using curl -I
    setenv.add-response-header = (
        "X-Pi-hole" => "The Pi-hole Web interface is working!",
        "X-Frame-Options" => "DENY"
    )
}

# Block . files from being served, such as .git, .github, .gitignore
$HTTP["url"] =~ "^/admin/\.(.*)" {
    url.access-deny = ("")
}

# allow teleporter and API qr code iframe on settings page
$HTTP["url"] =~ "/(teleporter|api_token)\.php$" {
    $HTTP["referer"] =~ "/admin/settings\.php" {
        setenv.add-response-header = ( "X-Frame-Options" => "SAMEORIGIN" )
    }
}

# Default expire header
expire.url = ( "" => "access plus 0 seconds" )

Die Konfiguration für Baikal habe ich in /etc/lighttpd/external.conf eingetragen:

NGINX:
$HTTP["host"] == "baikal" {
    server.modules = (
        "mod_access",
        "mod_redirect",
        "mod_rewrite"
    )

    server.document-root = "/var/www/html/baikal/html"
    server.errorlog = "/var/log/lighttpd/error.log"
    server.username = "www-data"
    server.groupname = "www-data"
    server.port = 80
    server.follow-symlink = "enable"
    index-file.names = ("index.php")

    $HTTP["url"] =~ "/(\.ht|Core|Specific|config)/" {
        url.access-deny = ("")
    }

    url.redirect = (
        "^/.well-known/caldav"  => "/dav.php",
        "^/.well-known/carddav" => "/dav.php"
    )
}

Ich bin mir leider nicht sicher ob die Konfiguration so stimmt, und ob sie von dem lighttpd auch richtig wahrgenommen wird. Bzw. wie ich das auch testen kann.
 
Last edited:
Ich habe jetzt versucht $HTTP["host"] == "baikal" gegen $HTTP["url"] =~ "^/baikal/html/" zu tauschen und nach dem Neustart von lighttp kann ich auf die Benutzeroberfläche von Baikal gar nicht zugreifen. Die ursprüngliche Konfiguration war also gar nicht effektiv, sie ist aber offenbar je nach wie vor falsch
 
Back
Top