Baikal Server und iPhone

Fragen zu sonstigen Systemen (Haiku, FreeDOS etc.)
Antworten
Uelpenich
Beiträge: 3
Registriert: So 21. Sep 2025, 18:45

Baikal Server und iPhone

Beitrag von Uelpenich »

Vorgeschichte:
Zum 1. April 2025 (kein Aprilscherz!) hat Netcologne seine E-Mail Server von open-Xchange auf ein anderes Opensource E-Mail System umgestellt. Dieses System unterstützt in der von NC eingesetzten Form keine Adressbuch- und Kalenderprotokolle (cardDAV und calDAV).
Ich bin dann mit meinen Clients auf Baikal auf einem Raspberry PI 2 umgestiegen. Läuft überraschend gut und hat bis jetzt alles gemacht was ich brauche.
Aber:
Nach dem letzten iPhone SW update verlangt das Iphone für das cardDAV Protokoll zwingend ein öffentliches Server Zertifikat. Ich habe es mit Let's Encrypt versucht und habe heute aufgegeben.
Frage:
Hat jemand einen funktionsfähigen Adress- und Kalenderserver für die cardDAV und calDAV Protokolle zusammen mit einem iPhone Client?
Benutzeravatar
capixa
Beiträge: 41
Registriert: Mi 17. Sep 2025, 22:29

Re: Baikal Server und iPhone

Beitrag von capixa »

Mit dem iOS / iPhone wirst du ohne Zertifikat nicht weit kommen, egal welche Software/ Applikation eingesetzt wird. Bei mir läuft Kalender / Kontakte mit cardDAV und calDAV Protokolle über Nextcloud und nginx Reverse Proxy mit Lets Encrypt.

Was ist den mit Lets Encrypt? Wo kommst Du nicht weiter. Erzähl mal was Du einsetzt, vielleicht finden wir eine Lösung.
Uelpenich
Beiträge: 3
Registriert: So 21. Sep 2025, 18:45

Re: Baikal Server und iPhone

Beitrag von Uelpenich »

Was ist den mit Lets Encrypt? Wo kommst Du nicht weiter. Erzähl mal was Du einsetzt, vielleicht finden wir eine Lösung.
Mein Baikal Server befindet sich hinter einer FritzBox 7490. Die FritzBox bekommt bei spdyn einen DYNDNS Eintrag.
Ich habe in der Fritzbox die Ports 80, 443 und 9999 geöffnet und auf den Baikal Server verwiesen.

Ich habe die Let's Encrypt Zertifikate erhalten.
siehe https://pimylifeup.com/raspberry-pi-ssl-lets-encrypt/
Let's Encrypt braucht die Ports 443 und 80 (beide?) für die Erneuerung des Zertifikates.
Ich habe zwei Probleme / Fragen, wo ich noch weiter testen muss:
  • ich kann von aussen die "Hello World" Webseite des Baikal Servers über https://... nicht erreichen. Stattdessen meldet sich die Konfigurationsseite der Fritzbox, obwohl ich ihr die Konfiguriermöglichkeit von aussen verboten habe.
  • Wie binde ich das Zertifikat in den Port 9999 des Baikal Servers ein?
Den Zugangstest von aussen muss ich noch einmal wiederholen.
Benutzeravatar
capixa
Beiträge: 41
Registriert: Mi 17. Sep 2025, 22:29

Re: Baikal Server und iPhone

Beitrag von capixa »

Uelpenich hat geschrieben: Mo 23. Feb 2026, 21:41 Ich habe die Let's Encrypt Zertifikate erhalten.
siehe https://pimylifeup.com/raspberry-pi-ssl-lets-encrypt/
Mit welcher Methode hast du das gemacht, in der Anleitung sind ja 3 Stück.
------
Let's Encrypt braucht die Ports 443 und 80 (beide?) für die Erneuerung des Zertifikates.
Ja, beide Ports müssen für Let's Encrypt aus dem Internet unter deiner URL erreichbar sein.
------
Ich habe zwei Probleme / Fragen, wo ich noch weiter testen muss:
  • ich kann von aussen die "Hello World" Webseite des Baikal Servers über https://... nicht erreichen. Stattdessen meldet sich die Konfigurationsseite der Fritzbox, obwohl ich ihr die Konfiguriermöglichkeit von aussen verboten habe.
Deine Fritz!Box antwortet auf http (80) und https (443) aus dem Internet mit Loginbildschirm?
Auf der Fritz!Box ist: Internet -> Freigaben -> FRITZ!Box-Dienste wie nachfolgend eingestellt?
FRITZBox-Dienste.png
FRITZBox-Dienste.png (41.35 KiB) 68 mal betrachtet
------
  • Wie binde ich das Zertifikat in den Port 9999 des Baikal Servers ein?
Let's Encrypt arbeitet auf 443 und 80. Ich bin jetzt kein Spezialist für Baikal, aber andere Anleitungen geben den Port 443 nach draußen. Wie man das einbindet steht auf der Webpage (https://pimylifeup.com/raspberry-pi-ssl-lets-encrypt/) womit du das konfiguriert hat, abhängig von der Methode die du konfiguriert hast.

Ich schieße jetzt mal in die Luft und sage, das wenn die Fritz!Login Seite unter deiner extern URL erreichbar ist, das hier ein Fehler vorliegt. Das würde ich als erstes angehen und beseitigten. Solange die Fritz!Box Webseite unter http://deine_spdyn_DYNDNS und https://deine_spdyn_DYNDNS deine Fritz!Box Login Seite zurückgegeben wird, kann die Port Weiterleitung 80 und 443 die du an deinen Raspi übergibst nicht funktionieren. Prüfen kannst du das wie oben bereits geschrieben: Auf der Fritz!Box: Internet -> Freigaben -> FRITZ!Box-Dienste - sind die wie im Bild eingestellt?
Uelpenich
Beiträge: 3
Registriert: So 21. Sep 2025, 18:45

gelöst: Baikal Server und iPhone Problem

Beitrag von Uelpenich »

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
  • Webserver nginx
  • PHP 8.2
  • SQLite
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:
  • HTTP 80
  • HTTPS 443
zu CalDAV und CardDAV Datenaustausch sowie die Baikal Administration:
  • HTTP 9999
  • HTTPS 9998
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.
Antworten