mail-in-a-box / mailinabox

Mail-in-a-Box helps individuals take back control of their email by defining a one-click, easy-to-deploy SMTP+everything else server: a mail server in a box.
https://mailinabox.email/
Creative Commons Zero v1.0 Universal
13.87k stars 1.43k forks source link

Cal/CardDav Alternatives #2164

Open stvhay opened 1 year ago

stvhay commented 1 year ago

@myfirstnameispaul wrote:

I attempted to survey options for replacing Nextcloud. A lot of searches discovered tools that have been created and then abandoned during the period this project has been laboring to maintain Owncloud/Nextcloud. This seems like it matters, since I'm guessing a final analysis will be to decide if you choose the devil you know or the one you don't.

I have not attempted to install any of these:

sabre/dav - "sabre/dav is the most popular WebDAV framework for PHP. Use it to create WebDAV, CalDAV and CardDAV servers." I think it is somewhat of a roll-your-own solution, but does support SQLite (and MySQL) for authentication and has been actively maintained for a lot of years. Note the site docs are somewhat dated, but the GitHub repos are very active.

  • The project includes Baïkal - "Baïkal is a lightweight CalDAV+CardDAV server. It offers an extensive web interface with easy management of users, address books and calendars. It is fast and simple to install and only needs a basic php capable server. The data can be stored in a MySQL or a SQLite database." The saber-io organization hosts the GitHub repo, which is actively maintained. Based on the description, this one seems like the only clear drop-in replacement for Nextclould (without evaluating actual migration headaches).

DAViCal - "DAViCal is a server for calendar sharing. It is an implementation of the CalDAV protocol which is designed for storing calendaring resources (in iCalendar format) on a remote shared server." It is actively maintained, written in PHP, and requires PostgreSQL.

SOGo - "SOGo offers multiple ways to access calendaring and messaging data. Your users can either use a web browser, Microsoft Outlook, Mozilla Thunderbird, Apple iCal, or a mobile device to access the same information." Does not support SQLite, supports MySQL but recommends PostgreSQL. It is available as a package, but the package will not be updated so if it is decided a newer version should be run, I think it will have to be compiled.

Radicale - "Radicale is a small but powerful CalDAV (calendars, to-do lists) and CardDAV (contacts) server." Authentication options in the config file:

none | htpasswd | remote_user | http_x_remote_user

Bedework Calendar - "Bedework is an open-source enterprise calendar system that supports public, personal, and group calendaring." Java. Claims to support MySQL, but only has configuration instructions for PostgreSQL (default installed with H2), but it's built on Wildfly so possibly could use any JDBC. Can't find anything indicating how much memory it uses.

Xandikos - "Xandikos is a lightweight yet complete CardDAV/CalDAV server that backs onto a Git repository." Python and has no authentication option (other than reverse proxy).

Originally posted by @myfirstnameispaul in https://github.com/mail-in-a-box/mailinabox/issues/2083#issuecomment-1119562136

stvhay commented 1 year ago

I thought this might be a good place to discuss DAV implementations for the future, if we are considering replacing NC at some point. In addition to @myfirstnameispaul 's great work summarizing options above, I found an interesting project that I think we should take a look at.

Here's a gist I wrote down some notes for getting started with Davis. I managed to get it up and running, autodetect with Thunderbird, and send a calendar invite.

https://gist.github.com/stvhay/310862d92f481da18eeda96066ffd507

In terms of database backup and restore, it may be as simple (?) as:

mysqldump db_name > backup-file.sql
mysql db_name < backup-file.sql
stvhay commented 1 year ago

I also did the same thing with Baïkal. Good results, but the key there will probably be to figure out how to interact with the web administration tool because it doesn't have a good way to sync the IMAP backend, and not a REST API for the admin which I can see.

myfirstnameispaul commented 1 year ago

Unfortunately, I didn't keep my notes and I don't recall why I didn't add Davis to my list. Typical reasons I will rule out projects:

I've still got too much going on to spend real time here, but this NC madness needs to end and will be I think a great contribution to figure out a better solution.

Also, whenever it is migrated we should create very clear documentation because there are many people using NC file sharing between users, so removing that feature from MiaB should include a clear migration path to a standalone NC server, or something, so we aren't just saying "no longer supported, have a nice day" because I really hate when projects do that to me.

Additionally, I really feel that MiaB should include something like a 500-character HTML (support hyperlinks, colors, bold, etc.) max message length in the dashboard new version notifications to provide only critical information related to the next version upgrade. Because MiaB version upgrades are usually so trouble-free, there will be many users who do not review anything only to discover they've removed NC and no longer have access to their file-sharing tool, likely turning an estimated 15-minute downtime to half a day or more.

stvhay commented 1 year ago

Unfortunately, I didn't keep my notes and I don't recall why I didn't add Davis to my list. Typical reasons I will rule out projects:

* Appears not very popular - Even well-maintained projects need to have a large user-base or MiaB will end up being the beta/RC testing pool, which is probably not a good fit for the majority of MiaB installs. I usually will search beyond just the GitHub repo because many projects do not use GitHub. Even mature well-maintained projects may have a nearly dormant-appearing GitHub repo, but remain active on GitLab, SourceForge, or self-hosted

Davis does not look like it is used by a ton of people. But the good news is that it is relatively simple, like Baikal, and there is an active developer maintaining it, like Baikal.

* Exceptionally long inactive periods - Usually this indicates only fixing show-stopper bugs for the maintainer's own installs.

Yeah, it doesn't look that bad, but it is one person maintaining it. Unfortunately the landscape here is pretty bleak in general.

* Young - MiaB should be using reasonably mature projects, so same reasons as first bullet above for not listing.

Davis has been around since 2019.. So its not new, but not old either.

* Requires some sort of container. This one is just my opinion, but containers are for SaaS, not standalone installs.

No container required.

I've still got too much going on to spend real time here, but this NC madness needs to end and will be I think a great contribution to figure out a better solution.

Also, whenever it is migrated we should create very clear documentation because there are many people using NC file sharing between users, so removing that feature from MiaB should include a clear migration path to a standalone NC server, or something, so we aren't just saying "no longer supported, have a nice day" because I really hate when projects do that to me.

I can say this -- Davis has the basics. you can do CalDAV, CardDAV, and WebDAV with it. It doesn't have the greatest documentation, but its all there. Migrations scripts will be tricky. Files are easy, but I think the contacts and calendar will be much more difficult. That is probably true of any non-nextcloud solution though.

Additionally, I really feel that MiaB should include something like a 500-character HTML (support hyperlinks, colors, bold, etc.) max message length in the dashboard new version notifications to provide only critical information related to the next version upgrade. Because MiaB version upgrades are usually so trouble-free, there will be many users who do not review anything only to discover they've removed NC and no longer have access to their file-sharing tool, likely turning an estimated 15-minute downtime to half a day or more.

If we end up torching NC, I agree we need to give the users a big heads up. I mean, I can go either way with it. NC is fine. Yeah its kinds slow and a pain in the arse to keep up to date. But it can be made to work and is working.

Here are what I see as the main benefits of Davis:

Here are some weak points:

Of all the options you listed, and I think its a very thorough list, here's what I think about them:

stvhay commented 1 year ago

Migration Challenges:

mschering commented 1 year ago

Disclaimer: I am the author of this software and I don't want to spam. But it looks like our software Group-Office https://www.group-office.com meets all your requirements!

downtownallday commented 10 months ago

Some thoughts and ideas from the maintainer of the carddav plugin for Roundcube:

https://github.com/mstilkerich/rcmcarddav/issues/454#issuecomment-1769079025

cmonty14 commented 8 months ago

Could you please share an update on this topic? In my greenfield installation directory /usr/local/lib/owncloud allocates ~630MB w/o using Cal/CardDav. Imo Nextcloud is not a thin solution for Cal/CardDav only.

Would it be possible to give end-users who want to deploy MiaB from scratch the option to select which Cal/CardDav service to use: Nextcloud or thin service? This would allow MiaB development to delegate responsibility for Cal/CardDav migration from Nextcloud to another service to end-user.

arodier commented 8 months ago

I am very happy with SOGo. For a demo of the integration using Ansible: https://github.com/progmaticltd/homebox

Glich440 commented 1 month ago
  • If we want to do this completely automagically, it will involve figuring out how to pull the calendar and contacts OUT of Nextcloud and then into the new implementation automatically. Right now, I have no idea how to do this. In addition to this, I've run into some pretty serious bugs in the Nextcloud contacts export function. Using Thunderbird, I've also failed a workflow of exporting and importing my calendar from and to Nextcloud (due to a missing STATUS field in on of my events. Thunderbird just exits out with the error when this happens so not graceful at all. I was successful using BusyCal and BusyContacts, a Mac calendar app you have to pay for to use. All this is to say, I think that this problem is going to be very sticky to generalize.

After looking for a bit on the Nextcloud help forums I've found https://codeberg.org/BernieO/calcardbackup which seems to implement the required functionality.