CalDAV网络服务器Baikal
什么是 Baikal ?
Baikal是一个免费的开源自托管CalDav和CardDav服务器,适用于想要管理其数据并确保其数据是私有的用户。
Baikal和群晖套件中的 Synology Calendar 是类似的应用;
什么是 CalDav ?
CalDav是一种互联网标准和协议,用于跨设备和服务同步日历。它通常用于在您的日历应用程序、网络邮件、设备和服务之间同步您的日历事件。
什么是 CardDav?
CardDav或vCard是地址簿客户端/服务器协议和标准,也是WebDav的扩展,允许用户在兼容的服务器上存储、同步和共享他们的联系人数据。CardDAV协议由IETF开发,并于2011年8月发布为RFC 6352
安装
建数据库
老苏用了群晖自带的  MariaDB 10 数据库。

在 phpMyAdmin 中创建名为 baikal 的空数据库。
为便于说明,假设数据库密码为
123456,但实际上可能是用的9YdLh!Y#qK6v

安装镜像
在群晖上以 Docker 方式安装。
在注册表中搜索 baikal ,选择第一个 ckulka/baikal,版本选择 nginx。

卷
在 docker 文件夹中,创建一个新文件夹 baikal,并在其中建两个子文件夹,分别是 config 和 data
| 文件夹 | 装载路径 | 说明 | 
|---|---|---|
| docker/baikal/config | /var/www/baikal/config | 存放设置 | 
| docker/baikal/data | /var/www/baikal/Specific | 存放数据 | 

端口
本地端口不冲突就行,不确定的话可以用命令查一下
| 1 | # 查看端口占用 | 
| 本地端口 | 容器端口 | 
|---|---|
| 13281 | 80 | 

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
| 1 | # 新建文件夹 baikal 和 子目录 | 
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
| 1 | version: "2" | 
然后执行下面的命令
| 1 | # 新建文件夹 baikal 和 子目录 | 
运行
在浏览器中输入 http://群晖IP:13281 就能看到主界面

关于 WebDAV authentication type 有三个选项
- Basic:应该是指基本用户验证;
- Digest:消息摘要式身份验证;
- Apache:使用- Apache模块(例如- LDAP、- Kerberos或- SASL)提供高级身份验证方法;
老苏选择了最简单的 Basic 认证,一方面是对 Apache 等不熟悉,也没找到相关资料,另一方面考虑到 CalDAV 客户端对认证的要求,比如 AgenDAV 就支持 Basic
Admin password要记牢,后面登录后台会用到;

默认数据库使用的是 SQLite

如果多人一起用,MariaDB 性能会更高一些,这个看你应用的情况
如果数据库端口用的是
3306,可以不用带端口,但老苏用了MariaDB 10;

如果设置没问题的话,就可以点 start using baikal 开始使用了

先要登录,这里用到了我们前面设置的 Admin password

点 Authenticate 登录成功后会看到 Dashboard 主界面

进入 User and resources 菜单

点 Add User 新建一个用户

点开 Setup info,这里有 CalDAV 客户端登录时会用到 URI 和刚刚创建的用户账号、密码

到这里服务的设置就完成了
使用
Android
老苏是小米手机,自带的 日历 就支持自定义的 CalDAV 服务
打开 日历 应用,点右上角的三个点进入 设置

进入 日程导入

Caldav账号导入

添加 CalDAV 账号

添加完成后,除了 小米日历 外,还有我们刚添加的 Default calendar
Default calendar这个名字在客户端改不了,需要到服务端修改

现在 创建日程 时,日历账户 可以选择默认账号了

iOS
在 iOS 设备上,进入设置 –> 日历 –> 帐户 –> 添加帐户,选择 其他

添加 CalDAV 账户

需要注意的是,iOS 不支持 http 协议,会显示 CalDAV 账号验证失败

所以要做反代处理,没有什么特殊设置

在日历中,暂时还没有,需要先 添加日历

随便建了一个

现在有 CalDAV 上有日历了

新建日程时已经可以选择 CalDAV 服务上的新日历了

参考文档
sabre-io/Baikal: Baïkal is a Calendar+Contacts server
地址:https://github.com/sabre-io/Baikalckulka/baikal-docker: Dockerfile for a ready-to-go Baikal server
地址:https://github.com/ckulka/baikal-dockerInstallation using Docker - baikal
地址:https://sabre.io/baikal/docker-install/
