CalDAV网络服务器DAViCal

在这里插入图片描述

简介

什么是 DAViCal ?

DAViCal 是一个开源的服务器,用于日历共享,基于 CalDAV 协议实现,旨在存储日历资源(采用 iCalendar 格式)在远程共享服务器上。支持多种客户端的访问。

主要特点

  • DAViCal 是基于 CalDAV 协议的日历共享服务器,支持存储 iCalendar 格式的日历资源。
  • 支持多日历管理和共享,每个日历可设置不同的访问权限,实现多人协作。
  • 支持事件的隐私设置,如私有事件和保密事件,可以控制信息显示范围。
  • 支持日历中的提醒和报警功能,以及空闲/忙碌时间的查询。
  • 与广泛的 CalDAV 客户端兼容,如 Mozilla LightningApple iCaliOS 设备等。
  • 支持读写访问,允许多个用户读取和编辑日历条目。

应用场景

  • 个人数据同步:在手机、电脑、平板等多个设备间无缝同步您的个人日历和联系人。
  • 家庭共享:为家庭成员创建共享日历,方便安排家庭活动。
  • 小团队协作:在小团队内部共享项目日历和客户联系方式。
  • 替代商业服务:作为注重隐私和数据所有权的用户的终极解决方案。

图片来自:https://www.cmdschool.org/archives/3745

DAViCal 提供了强大而灵活的日历共享解决方案,非常适合需要共享和协作的用户或团队。

安装

在群晖上以 Docker 方式安装。

官方没有提供 Docker 镜像,但社区贡献了优秀的解决方案。考虑到 DAViCal 本身只是个服务,而且界面比较丑,所以直接集成了 AgenDAV 作为 Web 客户端

文章传送门:CalDAV网页客户端AgenDAV

DAViCal 现在涉及到数据库、主服务和 Web 界面三个容器,配置较为复杂。推荐使用 docker-compose 进行部署

services:
  # shared database
  postgres:
    image: postgres:15-alpine
    container_name: davical-db
    restart: unless-stopped
    volumes:  
      - ./data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
  
  # caldav server
  davical:
    image: fintechstudios/davical
    container_name: davical-server
    ports:
      - 4082:80
    depends_on:
      - postgres
    environment:
      PGHOST: postgres
      PGPASSWORD: davical
      RUN_MIGRATIONS_AT_STARTUP: "true"
      ROOT_PGUSER: postgres
      ROOT_PGPASSWORD: postgres
      DAVICAL_ADMIN_PASS: laosu123
    healthcheck:
      test:
        - CMD
        - curl
        - -X
        - OPTIONS
        - -u
        - admin:laosu123
        - -f
        - http://localhost/caldav.php
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
  
  # web gui for caldav server
  agendav:
    image: ghcr.io/nagimov/agendav-docker:latest
    container_name: davical-web
    ports:
      - 4089:8080
    environment:
      - AGENDAV_SERVER_NAME=davical
      - AGENDAV_TITLE=laosu Calendar
      - AGENDAV_CALDAV_SERVER=http://davical/caldav.php/admin
      - AGENDAV_TIMEZONE=Asia/Shanghai
      - AGENDAV_LANG=en
      - AGENDAV_LOG_DIR=/tmp/

关于环境变量的简单说明

服务环境变量说明
postgresPOSTGRES_PASSWORDPostgreSQL 数据库的密码,设置为 postgres
POSTGRES_USERPostgreSQL 数据库的用户,设置为 postgres
davicalPGHOSTPostgreSQL 数据库的主机名,设置为 postgres(服务名)。
PGPASSWORD用于连接 PostgreSQL 的用户密码,设置为 davical
RUN_MIGRATIONS_AT_STARTUP启动时运行数据库迁移,设置为 "true"
ROOT_PGUSER具有创建用户和数据库权限的 PostgreSQL 用户,设置为 postgres
ROOT_PGPASSWORDROOT 用户的密码,设置为 postgres
DAVICAL_ADMIN_PASSDAViCal 管理员的密码,设置为 laosu123
agendavAGENDAV_SERVER_NAMEAgendav 服务器名称,设置为 davical
AGENDAV_TITLEAgendav 界面的标题,设置为 laosu Calendar
AGENDAV_CALDAV_SERVERCalDAV 服务器的 URL,设置为 http://davical/caldav.php/admin
AGENDAV_TIMEZONE设置时区,设置为 Asia/Shanghai
AGENDAV_LANG设置语言,设置为 en(英语)。
AGENDAV_LOG_DIR日志目录,设置为 /tmp/

然后通过 SSH 登录到您的群晖,执行下面的命令:

# 新建文件夹 davical 和 子目录
mkdir -p /volume1/docker/davical/data

# 进入 davical 目录
cd /volume1/docker/davical

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

如果日志中看到

davical-server | [Tue Nov 25 09:16:07.896444 2025] [:crit] [pid 1] (38)Function not implemented: AH00141: Could not initialize random number generator
davical-server exited with code 1

说明你的群晖主机的内核版本太低( Linux kernel < 3.16),除了换机器,没找到其他的办法

运行

服务启动需要一些时间,因为它需要初始化数据库和执行迁移。您可以通过 docker logs davical-server 查看 davical 服务的日志

DAViCal

在浏览器中输入 http://群晖IP:4082 就能看到 DAViCal 的登录界面

  • 用户名admin
  • 密码laosu123 (您在 docker-compose.ymlDAVICAL_ADMIN_PASS 所设置的)

登录后的主界面

新建账号并授权

  • 选择 User Functions --> Create Principa 菜单
  • Username 中填入新的用户,例如 laosu
  • Change PasswordConfirm Password 中填入用户的密码
  • 填写 FullnameEmail 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/davical

fintechstudios/davical-docker: Standalone DAViCal docker image (based on official PHP image)
地址:https://github.com/fintechstudios/davical-docker

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值