Danke an
Capixa für die hilfreichen Tipps. Sie haben mir geholfen, eine funktionierende Lösung zu finden. Wie so häufig hatte das Problem mehrere Ursachen, sich sich gegenseitig überdeckten.
Baikal ist ein kleiner Server für Kalender und Adressbücher, der (auch) auf einem Raspberry Pi 2 läuft.
Hier ist die Beschreibung der funktionierenden Lösung.
Zur Installation des
Baikal Servers auf einem Raspberry Pi 2 habe ich die Anleitung von JsBergbau
https://github.com/JsBergbau/BaikalAnleitung genommen:
- Baikal Version 0.11.1 von 2026-02-11
Diese Installation nutzt den Port 9999.
In der
FritzBox habe ich 4 Ports für IPV4 und IPV6 geöffnet:
zur Installation des Let's Encrypt Zertifikats und dessen regelmäßige Erneuerung:
zu CalDAV und CardDAV Datenaustausch sowie die Baikal Administration:
Der Baikal Server erhält in der FritzBox eine feste IP Adresse. Die Konfiguration der FritzBox aus dem Internet muß abgeschaltet werden.
Zur
Let's Encrypt Installation und Zertifikats-Erstellung habe ich drei Beschreibungen nebeneinander benutzt. Vielen Dank an die Autoren dieser Anleitungen. Das Iphone akzeptiert nur offizielle Zertifikate, keine selbst signierten.
Let's Encrypt ist meiner Kenntnis nach die einzig verbliebene kostenfreie offizielle Zertifikationsstelle für Server Zertifikate.
Diese drei Anleitungen ergänzen sich und müssen nebeneinander gelesen werden.
Die Konfigurationsseite des Baikal Servers liegt bei der JsBergbau Variante auf
/home/pi/DiensteUndProgramme/Baikal/baikal-nginx.site. In dieser Konfigurationsdatei habe ich die Zeilen mit
listen 9998 . . . und
ssl_certificate . . . ergänzt:
Code: Alles auswählen
server {
listen 9999 default_server;
#listen [::]:80 default_server;
# SSL configuration
#
listen 9998 ssl default_server;
listen [::]:9998 ssl default_server;
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
#root /var/www/html;
root /home/pi/DiensteUndProgramme/Baikal/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
ssl_certificate /etc/letsencrypt/live/uelpenich.spdns.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/uelpenich.spdns.de/privkey.pem;
# location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404. try_files $uri $uri/ =404;
# }
rewrite ^/.well-known/caldav /dav.php redirect;
rewrite ^/.well-known/carddav /dav.php redirect;
charset utf-8;
location ~ /(\.ht|Core|Specific|config) {
deny all;
return 404;
} #In der aktuellen Variante nicht benötigt, da "html" das Root Verzeichnis ist, schadet aber auch nicht.
#Sollte man Baikal jedoch direkt im Webserver als Unterverzeichnis installieren, absolut notwendig. Bitte daran denken!
location ~ ^(.+.php)(.*)$ {
try_files $fastcgi_script_name =404;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; #Hier auf eure installierte PHP-Version achten.
#fastcgi_pass unix:/run/php/php7.4-fpm.sock; #Ubuntu hat z.B. schon php 7.4
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
deny all;
}
}
Damit erhält nur der Webserver auf Port 9998 ein Zertifikat, nicht der Port 443!
Ich habe nicht mehr ausprobiert, wie man 2 Serverinstanzen auf unterschiedlichen Ports mit einem Zertifikat konfiguriert, da die Ports 80 und 443 nur für die Zertifikatserneuerung benötigt werden. Da die Erst-Zertifikatsinstallation ohne SSL auf Port 443 funktioniert hat, scheint mir SSL auf Port 443 nicht erforderlich zu sein (sonst hätte die Erstinstallation des Zertifikates ein "Henne oder Ei Problem").
Apple Iphone:
Es scheint erforderlich zu sein, die bestehenden CalDAV und CardDAV Verbindungen zu löschen und neu einzurichten.
Iphone Kalender App:
Da die serienmäßige Kalenderapp eine etwas unübersichtliche Darstellung hat, habe ich die "OneCaledar" App installiert. Diese App bringt eigene Clients für eine große Anzahl von Protokollen mit, und nutzt nicht die Iphone Clients. Der "OneCaledar" CalDAV Client funktioniert auch ohne SSL Zertifikat.
PS: Die Software
carddav2fb https://github.com/blacksenator/carddav2fb/läuft ebenfalls auf dem gleichen Raspberry Pi und versorgt meine Fritzbox mit den Telefonnummern aus den Baikal Kontakten. Die carddav2fb Lösung bietet gegenüber der FritzBox eigenen Importlösung bessere Konfigurationsmöglichkeiten für die Namensfelder und die Schreibweise der Telefonnummern, sowie noch weitere Zusatzfunktionen.