Open NoProsNoNoobs opened 1 year ago
Running 16.3 and would be happy to comment, but just getting up on Baikal today.
A question for you: I have the CalDAV account set up in Calendar and my calendars show in the side bar, but the calendars are not populating on the screen...is there some I need to do here?
Can't find an install manual anywhere for how to set up on the Apple side of things.
Thanks.
I have no idea, i mean i can't even get my calendars to show up. But documentation is indeed lacking for Apple devices. I am running Nextcloud now as a CalDAV server, which works perfectly with iOS. But Nextcloud is quite bloated if you only use it for a calendar, which why i want to use Baikal instead.
Thanks NoPros. I'll check out Nextcloud—it looks like I can do a self-host.
I have Baikal 0.9.3 working with Apple Calendar, and also with Fantastical on the Mac.
your.server.com
in the "Server Address" text field (I have it without https://
etc.)/dav.php/principals/USERNAME/
in the "Server Path" text field. Use the same username as you entered above.This is using a self-installed (non-docker) version on a subdomain of my server with a corresponding SSL certificate. If you don't have a certificate, untick SSL and use port 80.
With Fantastical I needed to provide a more explicit server path: /dav.php/calendars/USERNAME/CALENDARNAME/
I have simple one-word user name set up in Baikal rather than a complete email address. In Apple Calendar I have it set to update every 5 minutes. Note therefore that changes to the calendar aren't synced instantly.
Also, see this issue where a user reported having success after deleting the account, rebooting and setting up the account anew.
Thanks Jools. No problem setting up the accounts. Calendars show in left column of Calendar app.
However, no events are populating in my calendar (I have four calendars being shared).
Do I need to manually upload the data or similar first?
Even after deleting the account and rebooting my iPhone, and following your steps i can't get any calendar to actually show up in the calendar app. I tried both using /dav.php/principals/MY_USERNAME/ and /dav.php/calendars/MY_USERNAME/MY_CALENDAR/ .
This allows me to connect to my databases (which are displayed under the Calendars Tab): http://domain.com/html/dav.php/principals/user/
If you want SSL, select it and use port 443.
Data in calendars, however, is not populating.
My iPhones are running 16.3
If i try your url, it says "Check CalDAV-account failed".
I also initially had a problem connecting using user names over 3 characters.
I tried connecting with a username of 3 characters, but for some reason it is still not pulling in my calendar's.
Also, port 80 seemed to work for non-SSL.
On the iPhone I only need to enter the server (without http/s) and user + pass in the settings. The rest was autodetected.
Under Advanced I see the path: https://sub.domain.com/dav.php/principals/USERNAME/
with Use SSL checked and Port 443.
Try adding, changing and removing events in that calendar to check syncing. Depending on your settings and when your various devices last polled the caldav server, your data may take a few minutes to sync between devices.
FWIW: my user name has 5 letters.
In my case, there is no need to check syncing—no data is displayed at all.
BTW, I would also try non-SSL as well as SSL. Two of my iPhones took SSL. The third could only be connected using non-SSL.
All are running 16.3.
I also "Share this resource" for all of my accounts for all of the databases.
Is there another step here I need to do?
Another thing you can check is the configuration settings by clicking on the "i" button next to each calendar within the Baïkal CalDAV dashboard.
Hmm, I can't think of anything else other than that you have a checkmark for "This account is active" (my translation so the name may be similar) in the account information about the calendar (ctrl-click on the calendar in the sidebar, then choose "Calendar Info") and that you have a tick mark next to the calendar in the sidebar so that it's displayed on your calendar.
In Baikal you can't see the calendar itself but if you log in as admin and check “Users and Resources”, then click on your user, you can double-check if Baikal does indeed have events logged for a specific calendar (note: they may be in the past).
I haven't additionally shared my calendar publicly. It's being used by several users (using the same baikal username) across various devices and platforms including Macs, iPhones, Windows and android phones. Some clients on the windows side need additional caldav calendar plugins.
"Enable this account" is checked (when it is unchecked, the calendars disappear from the sidebar).
When I ctrl-click on the calendar in the sidebar, I only get: Get Info; Share Calendar...; Delete; Custom Color...
User is showing in Users and Resources, but no events are logged.
I still don't understand how the Calendar data from my computer gets into Baikal.
Baikal shows no events logged in my case too.
If under "Users and Resources" › User › Calendars, there are 0 events in the Events column, it looks like you have nothing to sync.
Try first adding something to your calendar on your phone or mac to see if it gets picked up by Baikal, and in turn then by any other devices.
If that's successful, you can then can set about transferring any existing calendar entries to that calendar and they should sync to Baikal, and on to other people / devices.
I'm using https:/dav.me.tls/dav.php/
I use the DNS SRV records from https://sabre.io/dav/service-discovery/
Works on Android and iOS.
Added three separate events. None were picked up.
Sorry, no further ideas except perhaps: what do you have set for “WebDAV authentication type” in Baikal's admin area. I have basic. Some have described having problems with other settings.
When i set WebDAV authentication type to basic, it gives me the "check CalDAV-account failed" error. Same for if i set it to Apache, it wil only connect using Digest.
Thanks. I tried all three options. Digest allows an error-free connection.
After sleeping on this, the issue seems to be that Baikal (in my case) isn't accessing the calendar data on any of my devices, which may mean that I not only need to create calendars in Baikal, but all must populate them, i.e., import my data.
Did anyone go through a procedure like this?
I came to the conclusion that there are multiple aspects to this and that one fix might break other dav clients. So, my final working setup with nginx is:
server {
listen 80;
server_name dav.example.org;
root /web/public/dav.example.org/html;
charset utf-8;
index index.php;
# Redirect to the root with HTTPS - iOS clients require secure connections
location = /.well-known/caldav {
return 302 https://$server_name/dav.php;
}
location = /.well-known/carddav {
return 302 https://$server_name/dav.php;
}
# Disable Baikal index.php
location = /index.php {
deny all;
return 404;
}
}
/.well-known/caldav
and /.well-known/carddav
are redirected (HTTP 302) to the /dav.php
and it is very important to FORCE HTTPS - without this iOS clients will not follow your redirect and end up doing a request to the root of the webserver that fails.
So if I understand this correctly, this fixes it for iOS but breaks it for other clients?
I will try it out soon when I have the time, but thank you already.
I will try it out soon when I have the time, but thank you already.
If you plan to have autoconfig working really well, don't forget to add the SRV entries to your domains like:
_caldavs._tcp SRV 0 1 443 dav.example.org
_carddavs._tcp SRV 0 1 443 dav.example.org
I've run into the same issue and to be more precise it's not only a matter of https or not.
# Redirect to the root with HTTPS - iOS clients require secure connections
location = /.well-known/caldav {
return 302 https://$server_name/dav.php;
}
location = /.well-known/carddav {
return 302 https://$server_name/dav.php;
}
Actually the MacOS Calendar app does first a propfind
on /.well-known/caldav
to know the root url :
172.27.0.1 - - [17/Sep/2023:22:56:50 +0000] "PROPFIND /.well-known/caldav HTTP/1.1" 302 145 "-" "macOS/13.5.2 (22G91) dataaccessd/1.0" "myip"
172.27.0.1 - - [17/Sep/2023:22:56:50 +0000] "PROPFIND / HTTP/1.1" 405 157 "-" "macOS/13.5.2 (22G91) dataaccessd/1.0" "myip"
Here the connection is HTTPS but it redirects to /
which is wrong. I fixed it by redirecting to /dav.php
and everything works well 😃
I've run into the same issue and to be more precise it's not only a matter of https or not.
# Redirect to the root with HTTPS - iOS clients require secure connections location = /.well-known/caldav { return 302 https://$server_name/dav.php; } location = /.well-known/carddav { return 302 https://$server_name/dav.php; }
Actually the MacOS Calendar app does first a
propfind
on/.well-known/caldav
to know the root url :172.27.0.1 - - [17/Sep/2023:22:56:50 +0000] "PROPFIND /.well-known/caldav HTTP/1.1" 302 145 "-" "macOS/13.5.2 (22G91) dataaccessd/1.0" "myip" 172.27.0.1 - - [17/Sep/2023:22:56:50 +0000] "PROPFIND / HTTP/1.1" 405 157 "-" "macOS/13.5.2 (22G91) dataaccessd/1.0" "myip"
Here the connection is HTTPS but it redirects to
/
which is wrong. I fixed it by redirecting to/dav.php
and everything works well 😃
I tried this once and I remember it caused issues with some other DAV client... not sure what or why.
Just a heads up for those with shared hosting: I created a dav.mydomain.com domain with cPanel and it added tons of unecessary Zone Record entries on my Zone Editor, specially ones related to autodiscovery. I deleted all but the essential ones (A Records and TXT records) and added the _carddavs._tcp and _caldavs._tcp settings from this guide: https://sabre.io/dav/service-discovery/
After a couple minutes for it to propagate I was able to login flawlessly on iOS and macOS.
After a couple minutes for it to propagate I was able to login flawlessly on iOS and macOS.
For those clients I also followed that guide and I'm using the DNS SRV records + the .well-known
URLs.
If anyone else is having this issue and is using Nginx Proxy Manager (NPM) one or both of these added to the 'advanced' tab of my proxy solved it for me:
location = /.well-known/caldav {
return 302 https://$server_name/dav.php;
}
location = / {
return 302 https://$server_name/dav.php;
}
I came to the conclusion that there are multiple aspects to this and that one fix might break other dav clients. So, my final working setup with nginx is:
server { listen 80; server_name dav.example.org; root /web/public/dav.example.org/html; charset utf-8; index index.php; # Redirect to the root with HTTPS - iOS clients require secure connections location = /.well-known/caldav { return 302 https://$server_name/dav.php; } location = /.well-known/carddav { return 302 https://$server_name/dav.php; } # Disable Baikal index.php location = /index.php { deny all; return 404; } }
/.well-known/caldav
and/.well-known/carddav
are redirected (HTTP 302) to the/dav.php
and it is very important to FORCE HTTPS - without this iOS clients will not follow your redirect and end up doing a request to the root of the webserver that fails.
very helpfull,thank you very much
Just a heads up for those with shared hosting: I created a dav.mydomain.com domain with cPanel and it added tons of unecessary Zone Record entries on my Zone Editor, specially ones related to autodiscovery. I deleted all but the essential ones (A Records and TXT records) and added the _carddavs._tcp and _caldavs._tcp settings from this guide: https://sabre.io/dav/service-discovery/
After a couple minutes for it to propagate I was able to login flawlessly on iOS and macOS.
Doing this on cloudflare plus adding this worked for me. Thank you!
location = /.well-known/caldav {
return 302 https://$server_name/dav.php;
}
location = / {
return 302 https://$server_name/dav.php;
}
Baikal version: 0.9.3
Expected behaviour: My calendars show up in the calender app.
Current behaviour: My Baikal CalDAV account shows up in the calendar app but my calendars don't show up.
I am using Baikal with MySQL and using a shared calendar within Baikal if that matters.
Steps to reproduce: