CalDAV网络服务器DAViCal
简介
什么是 DAViCal ?
DAViCal是一个开源的服务器,用于日历共享,基于CalDAV协议实现,旨在存储日历资源(采用iCalendar格式)在远程共享服务器上。支持多种客户端的访问。
主要特点
DAViCal是基于CalDAV协议的日历共享服务器,支持存储iCalendar格式的日历资源。- 支持多日历管理和共享,每个日历可设置不同的访问权限,实现多人协作。
- 支持事件的隐私设置,如私有事件和保密事件,可以控制信息显示范围。
- 支持日历中的提醒和报警功能,以及空闲/忙碌时间的查询。
- 与广泛的
CalDAV客户端兼容,如Mozilla Lightning、Apple iCal、iOS设备等。 - 支持读写访问,允许多个用户读取和编辑日历条目。
应用场景
- 个人数据同步:在手机、电脑、平板等多个设备间无缝同步您的个人日历和联系人。
- 家庭共享:为家庭成员创建共享日历,方便安排家庭活动。
- 小团队协作:在小团队内部共享项目日历和客户联系方式。
- 替代商业服务:作为注重隐私和数据所有权的用户的终极解决方案。

图片来自:https://www.cmdschool.org/archives/3745
DAViCal 提供了强大而灵活的日历共享解决方案,非常适合需要共享和协作的用户或团队。
安装
在群晖上以 Docker 方式安装。
官方没有提供 Docker 镜像,但社区贡献了优秀的解决方案。考虑到 DAViCal 本身只是个服务,而且界面比较丑,所以直接集成了 AgenDAV 作为 Web 客户端
文章传送门:CalDAV网页客户端AgenDAV
DAViCal 现在涉及到数据库、主服务和 Web 界面三个容器,配置较为复杂。推荐使用 docker-compose 进行部署
1 | services: |
关于环境变量的简单说明
| 服务 | 环境变量 | 说明 |
|---|---|---|
| postgres | POSTGRES_PASSWORD |
PostgreSQL 数据库的密码,设置为 postgres。 |
POSTGRES_USER |
PostgreSQL 数据库的用户,设置为 postgres。 |
|
| davical | PGHOST |
PostgreSQL 数据库的主机名,设置为 postgres(服务名)。 |
PGPASSWORD |
用于连接 PostgreSQL 的用户密码,设置为 davical。 |
|
RUN_MIGRATIONS_AT_STARTUP |
启动时运行数据库迁移,设置为 "true"。 |
|
ROOT_PGUSER |
具有创建用户和数据库权限的 PostgreSQL 用户,设置为 postgres。 |
|
ROOT_PGPASSWORD |
ROOT 用户的密码,设置为 postgres。 |
|
DAVICAL_ADMIN_PASS |
DAViCal 管理员的密码,设置为 laosu123。 |
|
| agendav | AGENDAV_SERVER_NAME |
Agendav 服务器名称,设置为 davical。 |
AGENDAV_TITLE |
Agendav 界面的标题,设置为 laosu Calendar。 |
|
AGENDAV_CALDAV_SERVER |
CalDAV 服务器的 URL,设置为 http://davical/caldav.php/admin。 |
|
AGENDAV_TIMEZONE |
设置时区,设置为 Asia/Shanghai。 |
|
AGENDAV_LANG |
设置语言,设置为 en(英语)。 |
|
AGENDAV_LOG_DIR |
日志目录,设置为 /tmp/。 |
然后通过 SSH 登录到您的群晖,执行下面的命令:
1 | # 新建文件夹 davical 和 子目录 |

如果日志中看到
1 | davical-server | [Tue Nov 25 09:16:07.896444 2025] [:crit] [pid 1] (38)Function not implemented: AH00141: Could not initialize random number generator |
说明你的群晖主机的内核版本太低( Linux kernel < 3.16),除了换机器,没找到其他的办法
运行
服务启动需要一些时间,因为它需要初始化数据库和执行迁移。您可以通过 docker logs davical-server 查看 davical 服务的日志
DAViCal
在浏览器中输入 http://群晖IP:4082 就能看到 DAViCal 的登录界面

- 用户名:
admin - 密码:
laosu123(您在docker-compose.yml中DAVICAL_ADMIN_PASS所设置的)
登录后的主界面

新建账号并授权

- 选择
User Functions–>Create Principa菜单 - 在
Username中填入新的用户,例如laosu - 在
Change Password和Confirm Password中填入用户的密码 - 填写
Fullname、Email Address等信息 - 在
Privileges granted中选择Read/Write按钮配置权限 - 单击
Create完成用户的创建

现在可以在手机客户端中导入日历
- 日历同步和导入 –>
CalDAV账号 - 你输入之前创建的用户名和密码
- 然后输入连接
http://192.168.0.199:4082/caldav.php/laosu/calendar/,其中laosu为用户的账号 - 如果没有错误提示,则你可以根据向导创建你的日历
- 创建日历成功后,可使用另外一个
CalDAV客户端读取当前创建的日历,如果能读到则所有配置成功

AgenDAV
在浏览器中输入 http://群晖IP:4089 就能看到 AgenDAV 的登录界面
可以用管理员
admin/laosu123或者我们新建的账号laosu/123456登录

登录后,您就可以在网页上管理您的日历了

参考文档
DAViCal - DAViCal Home
地址:https://www.davical.org/DAViCal Project / DAViCal · GitLab
地址:https://gitlab.com/davical-project/davicalfintechstudios/davical-docker: Standalone DAViCal docker image (based on official PHP image)
地址:https://github.com/fintechstudios/davical-docker