随着日常工作的深入,我在工作任务管理上已经从仅限于具体事项的待办事项安排,逐步扩展到基于日历的事项安排,而这种对于任务管理的变化也反映到我的对效率工具组合的选择上——除了使用 Microsoft To Do 来安排具体的工作任务之外,我还需要通过 Outlook 这样日历工具,宏观的对当天需要完成的工作项进行管理,不过这也带来了一个问题——我在不同的平台都要用 Outlook 来进行事项管理,而考虑当前国内 Outlook 糟糕的网络访问情况,显然将「鸡蛋放在一个篮子里面」在当下国内网络环境下不算是一个好的选择。

恰好我自己正在使用群晖 NAS,群晖系统中自带了一个相当健全的日历工具:Synology Calendar。相比基于公有云的日历应用,基于私有云的 Synology Calendar 无论是数据安全上,还是网络访问都显得更加可控。

boxcnIwZI7X7RCZpJs4hpiVDqqd

而从功能上来看,对于主要用来记录全天工作事件的我来说,Synology Calendar 的事件设置就已经足够使用了——选中需要设定事件的当天,然后再「事件」中填写事件标题,选择日历以及设置开始和结束时间(也可勾选为全天事件),然后点击「创建事件」即可。

boxcnGKep1yozt3VyyxL8ZVMXfg

当然如果你希望进一步地细化创建事件,还可通过「编辑详情」来编辑更多的项目,比如说可以在当前事件中添加相关的附件,更改事件颜色、设置事件的位置、添加事件描述等等。

boxcnxT4VrQMNaVpmNNQsnOSrAE

虽然 Synology Calendar 也可以用来管理待办事项,但考虑到我已经习惯通过 Microsoft To Do 进行待办事项管理,因此这一部分并没有一并迁移到 Synology Calendar 中。

boxcn5pWbnOBetF9VNpvrBiMeru

Synology Calendar 如何和各端进行同步?

在满足我的使用标准之后,接下来就要考虑如何方便的使用,Synology Calendar 本身属于 web 服务且群晖也没有提供专属的客户端,因此如果使用日历都需要通过浏览器访问显然并不现实,毕竟不能为了接收事件通知还一直打开浏览器。因此最好的办法当然是通过桌面端或者移动端系统中的日历应用 / 组件来实现 Synology Calendar 同步了。

boxcnwkHvGc0jLIN9hbOSCqlOKd

而在同步上,Synology Calendar 本身支持经过 IETF 标准化的日历扩展协议 CalDAV,只需要通过 Synology Calendar 生成的 CalDAV 链接,理论上就可以实现不同客户端的日历同步。

只不过在最新的 DSM 7.X 中,并没有专门的 CalDAV 同步管理面板,这和此前在 DSM 6.X 下通过 WebDAV Server 进行管理存在比较大的差异。另外在移动端和桌面端使用 CalDAV 同步也对 CalDAV 地址有了更高的要求——比如 iOS/macOS 的系统原生日历中,CalDAV 连接必须需要使用 https 才能同步成功。

在 DSM 7.X 下配置 CalDAV 同步

要想在群晖中生成符合同步条件的 CalDAV 链接,我们需要生成公网可以访问的二级域名。默认情况下,群晖会通过内置的「外部访问」工具,通过 QuickConnect 实现外网访问群晖的 DSM,而一般上系统也会自动生成针对当前 NAS 设备的访问地址:

http://quickconnect.cn/[你的 QuickConnect ID]

boxcnxw8hnto2ZKw61pBgVQOo0c

当你从外网通过上面的网址访问群晖时,往往登录页面会自动跳转到:

https://[你的 QuickConnect ID].direct.quickconnect.cn:随机端口 

不难发现群晖在设置好 QuickConnect 服务后会自动生成对应的 SSL 证书,你可以在群晖的 控制面板 安全性 证书 中可以看到以上二级域名对应的证书。

boxcnhWt78axBZUSsA49yfXQTkf

所以我们只要通过 QuickConnect 地址登录 DSM 并打开 Synology Calendar,就可以生成支持 https 的 CalDAV 的链接。不过如果不在路由器中设置好固定的转发端口,网址后面的端口号还是会随机生成的,因此我们还需要通过路由器的端口转发设置,让 DSM 门户使用的 5001 端口内外一致。之后再通过 QuickConnect 访问时,地址就会变成如下:

https://[你的 QuickConnect ID].direct.quickconnect.cn:5001

而生成的 CalDAV 链接就是:https://[你的 QuickConnect ID].direct.quickconnect.cn:5001/caldav/[登录名]

Thunderbird 所支持的 CalDAV 链接则相对特殊一些:https://[你的 QuickConnect ID].direct.quickconnect.cn:5001/caldav/[登录名]/home/

当然如果你没有开启 QuickConnect ,那么还可以通过 DDNS 的方式进行访问,通过群晖中的 控制面板 外部访问 DDNS 可以选择不同的 DDNS 供应商来生成二级域名,尤其是选择群晖自己的 DDNS 服务(例如 *.synology.me)还可以一键生成对应的 SSL 证书,少了再一次手动添加证书的操作。

boxcnKTCRbnLfG9rUZHqmfVuBzg

不过我更希望 Synology Calendar 可以通过特定的域名和端口直接打开,而不是像现在这样需要通过 DSM 门户访问。所以我这里为 Synology Calendar 设置了特定的「登录门户」:在 控制面板 登录门户 应用程序 中,选中 Synology Calendar 点击「编辑」就可以设定门户的登录方式。

boxcnGDFzOm5QcNwEM8BMisetlf

这里我们需要设置的是 网页服务 中的自定义端口(HTTP)以及自定义端口(HTTPS),我这里分别设置了 20002 和 20003,并将这两个端口在路由器上设置了端口转发。

boxcndIvilR5dl913XVPmGq7PHe

由于我在 DSM 中配置的证书相当地多,但我还是选择为 Synology Calendar 这个服务配上单独的证书,这里需要回到 控制面板 安全性 证书 上,点击 设置 ,在配置的服务中找到 Calendar ,将其对应的证书设置为刚才我们新生成的 DDNS 并点击确认,这样我们就可以使用下面这个 DDNS 域名 + 端口的形式直接访问 Synology Calendar 的 web 端了:

https:// [你的 DDNS 域名]:20003/

在不同的用户端同步 Synology Calendar

在完成同步的配置之后,无论使用 QuickConnect 还是 DDNS 的方式,我们都可以使用某个网址来访问 Synology Calendar。在 Synology Calendar 的右侧面板上,单击要与 CalDAV 客户端同步的日历。单击向下箭头并选择 CalDAV 帐户,我们可以看到生成的 CalDAV 链接均为 HTTPS 链接,那么接下来我们只需要把 CalDAV 添加到各个系统中就好

通常而言一个系统或者软件的官方文档都会有详细的步骤介绍如何添加并同步 CalDAV:

但 Windows 10/11 默认的 UWP 日历应用并不支持 CalDAV 协议,不过我们可以通过添加「假的 iCloud 账户」的方式,导入 CalDAV 日历来变相达到目的。

boxcnyQqgxV37kfo8pZHU9wglyD

打开「日历」应用并点击左下方的设置按钮,在设置中选择 管理账户 添加账户

boxcnqEHfdHrVXPAY4AMbBH1Bde

在弹出的 添加账户 中选择 iCloud,在 iCloud 账户设置中,电子邮件地址中不要填写真实的 iCloud 账户,可以随便填写,名称类似:xxx@icloud.com,而 使用此名称发送邮件 这一行可以填写 Synology Calendar,密码可以随便填写,填写好之后点击「登录」。

登录后会将「假的 iCloud 账户」添加到日历中,这时候客户端会提示账户已经过期,这时候我们需要对账户进行设置,在日历的 管理账户 中点击刚才添加的假的 iCloud 账户,点击 更改设置

boxcnm4a7BEClHVTqSVn9RSTcGX

在弹出的 账户设置 中,将用户名改为你的群晖账号,密码为你的群晖账户的登录密码,账户名称改为 Synology Calendar,然后点击「用于同步内容的选项」,在下载新电子邮件下改为「手动」,同步选项下关掉用不到的「电子邮件」和「联系人」。

boxcnRVqmGuvHGPiwQuvGl82OQd

紧接着点击「高级邮箱设置(联系人(CardDAV)和日历(CalDAV)服务器设置)」,将「传入电子邮件服务器」、「传出电子邮件服务器」以及「联系人服务器」的地址都改为 localhost,去掉「传出服务器需要身份验证」和「使用相同的用户名和密码发送邮件」前面的勾选,最重要的是日历服务器,这里填写 Synology Calendar 生成的 CalDAV 地址,这里填进去的是适用于 Thunderbird 的就可以,然后点击完成即可。

boxcnBDE6Fd69A00NMsPTJxsjGb

如果一切顺利,我们就可以看到此前创建在 Synology Calendar 的事件已经出现在了 Windows 10/11 的日历应用中了,左侧边栏也会呈现 Synology Calendar 日历,在创建新的事件时,选择 Synology Calendar 后也会根据同步周期自动进行日历项同步。

关联阅读:一日一技 | 如何在 Windows 10 的日历上添加 CalDAV 账号

总结

通过以上的一系列操作,我终于通过基于 NAS 自建日历服务的方式,实现了基于私有云的日历工具的全端同步,相比使用其他公有云的日历服务,私有云的日历服务数据信息可控,同时在国内的网络环境中访问速度极快,如果你有考虑使用 NAS 搭建基于私有云的效率服务,不妨试试搭建一个私有云日历服务吧。

> 暑期征文 数字文具盒 火热征稿中,分享学习方法,拿走现金奖励 🧑🎓

> 实用、好用的 正版软件,少数派为你呈现 🚀