日程安排工具Calendso

什么是 Calendso ?

CalendsoCalendly 的开源替代方案,作为日程安排工具可以大大简化我们的生活,可用于商务会议、研讨会、瑜伽课程,甚至与家人通话等,提供 API 接口和 WebHook, 支持自托管,可完全由自己掌控数据、事件、流程和 UI。

【工作原理】:A 公布自己的时间表,B 根据 A 的时间表进行预约,节省了来回沟通的时间,提高了预约的成功率

老苏觉得比较适合于医生、钢琴课等一对一服务的行业

安装

Calendso 涉及到两个镜像,比较简单的安装方式是编排 docker-compose.yml 文件,然后用 docker-compose up -d 命令启动

https://github.com/calendso/docker ,你能找到所需要的安装文档和相关文件。

老苏还是想用群晖传统的图形界面来安装,虽然繁琐,但对不熟悉命令行的人来说,这或许会降低一些安装难度。

镜像下载

在群晖上以 Docker 方式安装。

在注册表中搜索 calendso ,选择第一个 ctadeu/calendso,版本选择最新的,目前是 0.0.17-1

calendso 依赖 PostgreSQL 而不是 MariaDB 做数据库。默认情况下,只要你安装了 MomentsAudio stationVideo Station 等套件,都会使用群晖内置的一个 PostgreSQL 数据库,但并没有像 MariaDB 一样提供数据库管理工具,所以老苏建议数据库最好另外安装

在注册表中搜索 postgresql ,选择第一个 postgres,版本选 latest

安装 PostgreSQL

名称用的默认的,进 高级设置

docker 文件夹中,创建一个新文件夹,并将其命名为 calendso,再在 calendso 目录中建一个子目录 data

文件夹 装载路径
docker/calendso/data /var/lib/postgresql/data/

端口

默认的端口 5432 存在冲突,因为前面老苏说过群晖已经安装了 PostgreSQL ,所以要改本地端口

1
2
# 查看端口占用
netstat -tunlp | grep 端口号

本地端口 容器端口
5433 5432

不打算通过客户端访问数据库的话,设自动也可以

环境

可变
POSTGRES_USER 数据库用户
POSTGRES_PASSWORD 数据库密码
POSTGRES_DB 数据库名称

高级设置

勾选了 启用自动重新启动

如果运行正常并且不报错的话,就可以进行 calendso 的安装了

安装 Calendso

端口

端口不冲突即可

本地端口 容器端口
5554 3000
5555 5555

默认只有容器端口 3000

需按 + 号新增端口

链接

+ 号,容器名称 中找到上一步安装的 postgres1

别名设置为 db

环境

参数有点多,先跑起来,后面会简单介绍与 Outlook.com Calendar 集成,至于Google CalendarZoom 、发邮件、加密啥的,有需要的可以去官网查阅文档

可变
DATABASE_URL 数据库地址,默认为 postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
BASE_URL url 地址,默认 http://localhost:3000

DATABASE_URL 根据前面数据库设置的参数进行拼接,完成后为:

【注意】:因为是通过链接方式访问数据库,所以这里是数据库的 容器端口 而不是暴露出来的 本机端口

1
postgresql://laosu:2s7fFB8aBVBz@db:5432/calendso

BASE_URL 指能访问到的 Calendso 的地址,如果只是在局域网使用

对于群晖的 docker 容器是没法用 loclahost

1
http://群晖IP:5554

如果要在公网使用,改成域名即可

运行

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

不要点红框中的 Create an account,会报错的

而是要进入『终端机』

不知道怎么进终端机,可以去老苏的博客搜索一下

输入 npx prisma studio

下载取决于你的网速,反正老苏觉得有点慢

新开一个浏览器窗口输入 http://群晖IP:5555,下载完成前只有几个框和闪烁的 Getting things ready

下载完成前

下载完成之后可以选择 Model

选择 User

Add Record

密码需要先到 https://bcrypt-generator.com 做加密处理

只要填 idemailpassword 三项,完成后点 Save 1 change

其他的可以在登录后,在设置中修改

回到 5554 端口的登录界面,用刚刚创建的账号登录

登陆成功后的主界面

反向代理

在做下一步集成时,需要先通过反代实现 https 协议访问,因为回调地址只支持 https 协议

完成之后需要修改容器环境变量的 BASE_URL,否则登录成功后跳转的地址会是局域网地址

能通过域名正常访问之后,再进行第三方的集成

集成 Outlook 日历

需要获取 Microsoft Graph 客户端 ID 和密钥,这个在之前集成 OneDrive 时讲过

  1. 打开 Azure 应用注册https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

  2. 新注册应用

  • 应用的名称
  • 选择账户类型为 任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox)
  • 重定向 URI:也就是回调地址必须以 “HTTPS” 或 “http://localhost" 开头,默认地址为 : <Calendso 的公网地址> /api/integrations/office365calendar/callback,将<Calendso 的公网地址> 替换为 https://cal.laosu.ml

  1. 注册成功后,应用程序(客户端)ID 作为MS_GRAPH_CLIENT_ID 属性值

  1. 添加证书或机密 –> 新客户端密码

作为 MS_GRAPH_CLIENT_SECRET 属性值

可变
MS_GRAPH_CLIENT_ID 客户端 ID
MS_GRAPH_CLIENT_SECRET 客户端密码

App Store –> + Connect a new App,比默认的多了 Office 365 / Outlook.com Calendar

add 后需要授权

添加成功

示例

  1. 设置中完善信息

  1. 设置可用时间,也就是别人可以跟你约的时间

  1. 创建新的事件类型

可以选择会议的类型

Show advanced settings 则可以更详细的设置

添加完成

这里的 previewcopy link 都有问题,取不到用户名,可以在链接地址上手动改,也可以进到里面去再 preview 或者 copy link

  1. 分享链接

这里的 preview 没问题,但是 copy link 是不带端口的,如果你没有备案,记得分享的时候要手动添加端口号

对方收到链接,就可以根据自己的时间和你设定的可用时间进行预约了

预约完成

在你的 Outlook 日历会看到预约成功的事件

这种预约方式,可以帮助我们减少来回沟通的时间。

参考文档

calendso/calendso: Scheduling infrastructure for absolutely everyone.
地址:https://github.com/calendso/calendso

calendso/docker: The Docker configuration for Calendso is an effort powered by people within the community. Calendso does not provide official support for Docker, but we will accept fixes and documentation. Use at your own risk.
地址:https://github.com/calendso/docker

Cal.com | Open Scheduling Infrastructure
地址:https://cal.com/

3400 Star!知名日程安排工具的开源替代品_osfront的博客-CSDN博客
地址:https://blog.csdn.net/osfront/article/details/116242172

Exploring Calendso, an open-source Calendly alternative - YouTube
地址:https://www.youtube.com/watch?v=TaIQhG8AL0w