日程安排工具Calendso
什么是 Calendso ?
Calendso
是Calendly
的开源替代方案,作为日程安排工具可以大大简化我们的生活,可用于商务会议、研讨会、瑜伽课程,甚至与家人通话等,提供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
做数据库。默认情况下,只要你安装了 Moments
、Audio station
、Video Station
等套件,都会使用群晖内置的一个 PostgreSQL
数据库,但并没有像 MariaDB
一样提供数据库管理工具,所以老苏建议数据库最好另外安装
在注册表中搜索 postgresql
,选择第一个 postgres
,版本选 latest
安装 PostgreSQL
名称用的默认的,进 高级设置
卷
在 docker
文件夹中,创建一个新文件夹,并将其命名为 calendso
,再在 calendso
目录中建一个子目录 data
文件夹 | 装载路径 |
---|---|
docker/calendso/data |
/var/lib/postgresql/data/ |
端口
默认的端口 5432
存在冲突,因为前面老苏说过群晖已经安装了 PostgreSQL
,所以要改本地端口
1 | # 查看端口占用 |
本地端口 | 容器端口 |
---|---|
5433 | 5432 |
不打算通过客户端访问数据库的话,设自动也可以
环境
可变 | 值 |
---|---|
POSTGRES_USER |
数据库用户 |
POSTGRES_PASSWORD |
数据库密码 |
POSTGRES_DB |
数据库名称 |
高级设置
勾选了 启用自动重新启动
如果运行正常并且不报错的话,就可以进行 calendso
的安装了
安装 Calendso
端口
端口不冲突即可
本地端口 | 容器端口 |
---|---|
5554 | 3000 |
5555 | 5555 |
默认只有容器端口 3000
需按 +
号新增端口
链接
点 +
号,容器名称
中找到上一步安装的 postgres1
别名设置为 db
环境
参数有点多,先跑起来,后面会简单介绍与 Outlook.com Calendar
集成,至于Google Calendar
、Zoom
、发邮件、加密啥的,有需要的可以去官网查阅文档
可变 | 值 |
---|---|
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 做加密处理
只要填 id
、email
、password
三项,完成后点 Save 1 change
其他的可以在登录后,在设置中修改
回到 5554
端口的登录界面,用刚刚创建的账号登录
登陆成功后的主界面
反向代理
在做下一步集成时,需要先通过反代实现 https
协议访问,因为回调地址只支持 https
协议
完成之后需要修改容器环境变量的 BASE_URL
,否则登录成功后跳转的地址会是局域网地址
能通过域名正常访问之后,再进行第三方的集成
集成 Outlook 日历
需要获取 Microsoft Graph
客户端 ID
和密钥,这个在之前集成 OneDrive
时讲过
打开
Azure 应用注册
:https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps新注册应用
- 应用的名称
- 选择账户类型为
任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox)
- 重定向 URI:也就是回调地址必须以 “HTTPS” 或 “http://localhost" 开头,默认地址为 :
<Calendso 的公网地址> /api/integrations/office365calendar/callback
,将<Calendso 的公网地址>
替换为https://cal.laosu.ml
- 注册成功后,
应用程序(客户端)ID
作为MS_GRAPH_CLIENT_ID
属性值
添加证书或机密
–>新客户端密码
将 值
作为 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
后需要授权
添加成功
示例
- 设置中完善信息
- 设置可用时间,也就是别人可以跟你约的时间
- 创建新的事件类型
可以选择会议的类型
点 Show advanced settings
则可以更详细的设置
添加完成
这里的
preview
和copy link
都有问题,取不到用户名,可以在链接地址上手动改,也可以进到里面去再preview
或者copy link
- 分享链接
这里的
preview
没问题,但是copy link
是不带端口的,如果你没有备案,记得分享的时候要手动添加端口号
对方收到链接,就可以根据自己的时间和你设定的可用时间进行预约了
预约完成
在你的 Outlook
日历会看到预约成功的事件
这种预约方式,可以帮助我们减少来回沟通的时间。
参考文档
calendso/calendso: Scheduling infrastructure for absolutely everyone.
地址:https://github.com/calendso/calendsocalendso/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/dockerCal.com | Open Scheduling Infrastructure
地址:https://cal.com/3400 Star!知名日程安排工具的开源替代品_osfront的博客-CSDN博客
地址:https://blog.csdn.net/osfront/article/details/116242172Exploring Calendso, an open-source Calendly alternative - YouTube
地址:https://www.youtube.com/watch?v=TaIQhG8AL0w