Another CalDav server I can recommend is Radicale. It's written in python and designed in a pretty modular way, enabling authentication and authorization (and more) plugins.
Data is saved in plain text files and I track/backup it using git.
Over the time I've accumulated some interesting modifications:
- Authentication runs with pam on the host system.
- To enable sharing of calendars I run a periodic script symlinking the calendars to all authorized users. Unfortunately this suffers from combinatiorial explosion.
- Using a rights plugin with custom CalDav Attributes and a modified web plugin I added support for access Control Lists.
- To enable public calendars you give read permissions to the `public` user using ACL. Then a nginx hack gives blanket acces for read operations:
location /public {
proxy_pass http://127.0.0.1:{%RADICALE_PORT%};
include proxy_params;
proxy_set_header Authorization "Basic {%RADICALE_PUBLIC_AUTH%}";
proxy_hide_header Authorization;
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods "GET, OPTIONS, PROPFIND";
add_header Access-Control-Allow-Headers "Depth";
limit_except GET OPTIONS PROPFIND { deny all; }
}
These public calendars are can be viewed on a web calendar (https://gitlab.nomagic.uk/popi/js_calendar_from_ics)I should probably write a blog post about the setup.
I too have been on a very aggressive mission to decloudify myself lately(as in, since comrade musk and co took over everything and I have 0 reason to trust him or anyone around him). And to be fair, for all the hundreds of gigabytes of data I have, the migration took no longer than two weeks, on and off, and it works infinitely better than I was hoping. The only service I've outsourced is email since I hate dealing with MX records, IMAP/SMTP. For everything else, the one thing that did wonders was an Asus PN40 with a dual core celeron CPU. It's biggest strength is that it's both accessible and has a slot for an M.2 NVME and a SATA drive so you can have a safe backup in one spot. I too share the opinion that CalDAV is kind of sketchy. That said, Nextcloud covered most of my needs(although it can be slow for some things, even with redis backing it up). Calendars, dropbox/google drive, docs, photos, backups and automatic syncing - it covers everything really well. That, combined with several other open source solutions truly cover all my needs(music and video streaming, monitoring, alerting, vpn, readers, management, and various other utilities). And as under-powered this mini PC is, it handles everything insanely well with lots of room to spare, given that my ISP is a solid 10/10. In fact it would be perfectly capable of handling another 5-6 people like me with ease.
This is exactly the post I've needed.
I have two calendars, one on my personal server running Mailcow (SoGO) and my work calendar with Fastmail.
They don't work together- I've never found a way to get mailcow's calendar to work with other tools well, and so I spend time syncing between them semi-manually.
I've wanted to de-couple the calendar for a while but the only alternative I knew about was Nextcloud, which I think is a bit heavy weight.
This Baïkal looks great and I can't wait to give it a try. Doing this will also allow me to explore changing out Mailcow for another self-hosted mail service.
Everything old is new again.
Back in the early 2000's I used Mozilla Sunbird to host my calendar on my personal Win2k server via IIS's WebDAV module… I don't think CardDAV was a thing yet but I might be mistaken.
I ended up importing all that data from it into my Google Calendar which is kind of fun because I've got all my homework and whatnot for college courses on there if you go back far enough.
Baikal looks interesting. I used DAViCal[0] in the past to share calendars between a couple of Apple iOS devices. When it worked it worked well, but as iOS versions changed it seemed to get unreliable and I eventually gave up.
When I do eventually revisit this I am going to look at DAViCal again, as well as Radicale[1], and now Baikal.
I've been using Baikal for a few years now and it's very solid, although it's just for myself and I don't have all of OP's requirements. For my desktop I just use Thunderbird's built in calendar to connect, and on my phone I use DAVx5 and Fossify Calendar from F-Droid. It's forked from Simple Mobile Tools's Calendar app, but unlike the name it's actually the most fully-featured calendar app I've seen. It's "simple" in the way that it just presents you with every option instead of forcing you do dig through half a dozen menus and dialogs to do what you want to do, which is very nice.
I have Outlook (at work) and Google Calendar (at home) and synchronising them through HTTP is completely unreliable. They seem to mess the time zone all the time, sometimes they publish in UTC, sometimes not, with the consequence of having meeting always at the wrong time.
I really don't understand how these 2 major providers cannot fix what seems to me such a basic feature.
If using my own system would solve it, I'd do it immediately, but I am afraid that it would be just the same: meeting created on Outlook and imported with 2 hours difference.
Nice!. I would like to do something like this but for Photos. I want to get off Dropbox and Google for a while. At the top of my list are:
1. Create a memories like feature from my photos to send on my cell phone, grouping by different features I like: anniversaries, similar activities, A `Me an X(X is Spouse, family, friends etc)`, Over the years(how x has evolved over the years).
2. Be able to save photos taken from my device to my servers.
I've set up three true-nas machines in different places with 2TB of space and want to slowly build this feature.
"My calendar is a true nightmare."
Check
"calendar systems suck. All of them."
Double check
"I’m trying to break off of big tech as much as I can"
I wish I could check this more ...
I've had similar needs/desires/gripes with my calendars and the terrible state of calendaring apps for a while. So thank you for scratching your own itch and sharing it with us.
I'm curious when you say that "[CalDAV] is an area begging for disruption". Can you enlighten us as to what your wishlist could be for (a) better protocol/systems/ecosystem might be? (a rant about your pain points might work too).
Thanks again!
Another route is to go serverless and use DecSync. Thunderbird (or Evolution) will sync with the Android app (F-Droid available) and your Cal, your Cards, and tasks, and even RSS will be replicated on the other peers.
This is the kind of thing I think about doing every so often, before realizing it would take me a lot more time, energy, and money than I'm willing to spend to save 10 minutes once a week manually copying my work events from GCal to Etar on my phone and vice versa, and both to the weekly dry erase calendar on my wall.
My recurring events are all blocked off on the calendars already ("private" for personal events on my work calendar), so it really is quite a quick update.
You have way more advanced needs than I have for a calendar, but I've also been thinking of using a self-hosted solution. The realization for this came when I started noticing all kinds of appointments by email came with a notification attached to add the event to your calendar. I'm talking Gmail here, and I suppose my smartphone was going to add it to my standard Android calendar or something (I didn't try). Then I realized I didn't even like the UI/UX of my standard Android calendar.
I only need to manually add some appointments per week (not even every day, I'm a lucky guy) and realized I do not even need a grid layout for my calendar.
Having worked with times and dates in my favorite programming language already, I feel confident I can make something simple based on the standard default classes.
Even running something as simple and important as a calendar through third-party apps has started feeling very strange the last years.
How does this actually help with owning your own data and repatriating it?
The integrations that are installed on the end devices (phone) sync all that private data into the cloud platform regardless of the backend server. State is shared.
Google Information Services, and Apple's backend's unpublicized equivalent both process and store that related data, regardless of the phone you choose to use or the options you choose on that phone. There is a reason gigabytes get sent up to the cloud every evening, and its all encrypted.
Until you remove the implants on your phone you won't be able to receive any benefit from repatriating the data. That requires jailbreaking, or installing a new OS (something like Graphene), which is model specific due to compatibility issues.
I've been self-hosting Nextcloud for calendar and file sharing for a few years now. I use DAVx5 on my Android device and my wife's iphone syncs out of the box. It's been a very solid solution for us and isn't that difficult to get up and running.
This is very interesting, but also a lot of work. I've been off Google and the likes for maybe 5y now, and what I must say is that it's a bit of a struggle to find the setup that works for you.
One thing for which I don't have a solution yet, and neither does that article seem to address, is how to send invites. My data is one next cloud now, so if I create an invite it sends it. But if I create a it from a client (eg phone) it doesn't. The best I've found is manually export as ics and send an email myself, which ain't great.
Anyone has a solution for that?
There is also NextCloud, Thunderbird for desktop and Davx5-app on Android.
A nitpick. The two managed docker volumes created (at the very bottom) are not used by the container and only serve to cause confusion to the reader.
services:
baikal:
image: ckulka/baikal:0.9.5
restart: always
ports:
- "XXXX:80"
volumes:
- /mnt/baikal/data:/var/www/baikal/config
- /mnt/baikal/data:/var/www/baikal/Specific
volumes:
config:
data:
CalDav and the ecosystem of libraries and self-hosted solution around it is horrible. Don’t do it yourself. Just use https://calendar.online/ and call it a day.
If you are on NixOS for your home server, take a look at my project that does most of the work for you. Bundles router, DDNS, firewall, vpn, ad blocking, and all the apps into a single integrated service if your machine has two ethernet ports. Even if you don't use it directly, the services are broken out into modules which can be referenced for your own setup:
I love these kinds of deep dive on selfhosting and personal data management. Where can i find moar
I have the weirdest calendar problem: if someone sends an invite to my Fastmail account, it gets swallowed up by Gmail. It never shows up in Fastmail, and in the calendar invite it appears as if it was sent to my Gmail address even though it wasn’t. It’s the strangest thing and I don’t know how to stop it or even what’s causing it (Fastmail support also had no idea).
I’m glad folks are using existing CalDAV/Carddav protocols. Too many “custom” junk that works only on web or mobile.
> I’d imagine you can set this up and run it easily from a NAS at home if you want, but I opt to keep my data safely protected in Switzerland, so I subscribe to about $100 monthly of server time to run my websites and all my integrations
This part confused me a bit. Wouldn't running the NAS at home be more safe and secure? Or are they talking about backup safety?
I started using a paper diary again about a year ago. Turns out I wasn’t missing much and fitting in the rails of calendaring and task management as the vendor (apple) saw fit wasn’t really helping me. I have two jobs and a large family to coordinate.
Ultimate self hosting that. Also only costs $15/year approx.
I've been looking for a new calendar myself. I've been using Vueminder for years, but I think it's time to move on. I'm not keen on the renewing updates thing either.
I'm in the Proton ecosystem, but from what I understand their Calender kind of sucks right now.
I use the CalDAV protocol for my to-do list (tasks.org and nextcloud) and I've been wonder if someone could hookup CalDAV with MCP so I can talk to my to-do list to modify it without going to some proprietary solution.
Is this feasible? Has anyone seen a tool like this yet?
Been thinking about this too.
Citizenship application is asking for my travel for the past couple years. And I have no idea. Especially since in Europe a weekend getaway to another country is feasible.
Some sort of long term tracking would have been really useful
There is no need for CalDAV, you can actually use the subscription feature of ics calendars!
At Qbix, we build software for communities to collaboratively manage various things, and that includes events. For example, here are three sites we built, all different:
1) https://yang2020.app for Andrew Yang's 2020 campaign and Yang Gangs - to help people collectively organize and knock on doors, etc.
2) https://new.freetalklive.com for a libertarian show that pulls their episodes into the site, and let people watch and discuss them
3) https://gba.community for their annucal conferences in Washington DC - all the speakers, events, etc.
We've long ago implemented integrations with people's devices (phones, computers). You can add contacts to your address book using .vcf files, and they can even contain thumbnails. They don't need to include people's phone numbers, they can include their IDs on your site, and URLs to contact them.
Similarly, we have a button to subscribe to calendars, and it even works on MacOS. Imagine each user having a calendar appear on their phone. The subscription will pull new events into the calendar, update and remove old ones. About the only downside is that the OS usually suppresses any VALERT info that we place there, so you can't place alerts on these events. But you can have location, directions, etc. You can have a URL for group rides. We've built it all!
For both contacts and events, what you really want is access control - some people can see some things, others can see other things. If you paid for an event, you can see the location and time, for instance. You can maybe see the speakers, etc.
I honestly prefer a pen and paper planner and just manually migrating my contacts over. Meanwhile, my personal gmail is 99.9% contacts I have no intention to ever speaking to again.
Syncing availability between multiple calendars is pretty useful
It was my main reason to purchase Motion but they eventually removed it.
I have a self hosted calendar solution. It was $15 at Staples, and it hangs in my kitchen. It wasn't a complete out of the box solution, though, I had to do a little work to customize it. I placed a pen cup with a few pens in it on the counter near the calendar to ensure it is always easy to modify.
This is one of those deep dives whereby you are either pivoting into building a calendar startup, or you are massively procrastinating actual work by overfocusing on scratching some tech itch.
Other variants of this malady include:
- Building a todo list app. - Building a web framework. - Editing Wikipedia articles. - Building your kernel.
Why not choose Anytype?
Ok unrelated, but I'm looking for a tool for making diagrams like that, anyone know what was used on this post? ty
[flagged]
I don't have the requirement of owning my data and I've solved this in a simpler way.
1. Create a shared family calendar 2. For things that need to block work calendar, invite my work email to the event.
I know this is not what people want to hear, but your data will never be safer than it is in the cloud. No setup you can dream up at home with in a reasonable budget will ever come close to the resilience and redundancy you have in the cloud.
Ownership is not about storing everything at home (or well, it's part of it), but having control over your data, which you can easily have while at the same time using the convenience that the cloud offers.
In the cloud your major concern is not losing data, but losing access to data, and you can counter that with making backups.
If privacy is a concern, use something like Cryptomator[1] to source encrypt data before uploading it. Cryptomator in particular integrates well with mobile phone operating systems, and has clients for all major operating systems (yes, Linux included).
Source encrypt your backups as well, and nobody can read your data besides you.
I know I will probably get pushback over this, but CalDAV sucks. People say that it's great and that it's easy; yet if that were true there would be way more self-hosted CalDAV solutions out there and they would be far more ergonomic than what's available. I was not impressed with Radicale. Because there's really only one calendar file I wanted to serve to myself, I tried implementing my own CalDAV server just for that purpose and pretty much gave up because of how unintuitive and complicated it was merely to make a single file available. I can see why it would be needed if sharing a calendar with other people with calendar apps that support CalDAV, but I think it's kind of a waste of time if hosting a calendar for one's self.
Instead, initially went with the approach of hosting my dynamically updating iCal file in an S3 bucket and using ICSx5 on Android to sync with it. No CalDAV needed – just HTTPS.
However, FOSS calendars for Android still suck, and for some reason I couldn't get ICSx5 to work within GrapheneOS, so I now use almost the same approach but with Proton Calendar which happens to support calendars from direct links to iCal files. It's not perfect, but it suits my needs enough.
I think the author's approach for using iCalendar format is a good one, though what I've discovered is the amount of support for various iCalendar features varies drastically between calendar software. Rather than dealing with that headache, I somewhat gave up and decided to shove most metadata into the description field rather than use the respective properties.
EDIT: My use case is software I wrote to grab data from various sites (Eventbrite, Meetup, pub trivia companies, public event calendars, etc.), filter for only social events I would be interested in, and combine them into a single calendar I can view in my normal calendar software.