什么是 Cal.com (原 Calendso) ?
Cal.com
是一个现代化、灵活且功能强大的开源日程管理平台,旨在为用户提供全面的控制权和定制能力,是适合每个人的活动日程安排程序,被誉为Calendly
的继任者。它的最大特点是完全开源,用户可以完全掌控自己的数据、工作流程和外观设计。
Cal.com
就是三年前老苏介绍过的 Calendso
。之所以重新写,是因为有网友反馈折腾不成功。老苏抽空看了一下,确实变化有点大。很有必要更新下文档,来适应现在的镜像
文章传送门:日程安排工具Calendso
准备工作
因为要和第三方应用集成,比如老苏选择了 Outlook Calendar
,其中的回调地址,必须是可公网访问的 https
协议地址,所以我们第一步需要通过反代处理,实现 https
协议,第二步是获取到Microsoft Graph
客户端 ID
和密钥。
当然你只打算局域网随便用用,这一步可能是非必须的,但老苏没测试过,行不行你得自己试试才知道
反向代理
准备好两个子域名。
不能用
tailscale + npm
方案,因为tailscale
是私有地址
域名 | 局域网地址 | 备注 |
---|---|---|
cal.laosu.tech | http://192.168.0.197:5554 | Cal.com 的访问地址 |
api.laosu.tech | http://192.168.0.197:5555 | API 的访问地址 |
没有什么特殊设置,所以就不放图了
集成 Outlook Calendar
可以参考 Calendso
的 集成 Outlook 日历
章节,这里就不赘述了
也可以参考官方文档:https://github.com/calcom/cal.com#obtaining-microsoft-graph-client-id-and-secret
官方的文档的集成(Integrations
)比较全,如果你要集成其他的应用,例如 Google
,也可以参考
安装
在群晖上以 Docker 方式安装。
env.txt
env.txt
中是 Cal.com
的环境变量文件,包含了需要的设置
# Set this value to 'agree' to accept our license:
# LICENSE: https://github.com/calendso/calendso/blob/main/LICENSE
#
# Summary of terms:
# - The codebase has to stay open source, whether it was modified or not
# - You can not repackage or sell the codebase
# - Acquire a commercial license to remove these terms by emailing: license@cal.com
NEXT_PUBLIC_LICENSE_CONSENT=
LICENSE=# BASE_URL and NEXT_PUBLIC_APP_URL are both deprecated. Both are replaced with one variable, NEXT_PUBLIC_WEBAPP_URL
# BASE_URL=http://localhost:3000
# NEXT_PUBLIC_APP_URL=http://localhost:3000NEXT_PUBLIC_WEBAPP_URL=https://cal.laosu.tech
NEXT_PUBLIC_API_V2_URL=https://api.laosu.tech/api/v2# Configure NEXTAUTH_URL manually if needed, otherwise it will resolve to {NEXT_PUBLIC_WEBAPP_URL}/api/auth
# NEXTAUTH_URL=http://localhost:3000/api/auth# It is highly recommended that the NEXTAUTH_SECRET must be overridden and very unique
# Use `openssl rand -base64 32` to generate a key
NEXTAUTH_SECRET=K/63DVPNhaFDT2U//fhOoPE1HeygLPzTOiRkCYNphmw=# Encryption key that will be used to encrypt CalDAV credentials, choose a random string, for example with `dd if=/dev/urandom bs=1K count=1 | md5sum`
CALENDSO_ENCRYPTION_KEY=deLkL83PbUARmr76# Deprecation note: JWT_SECRET is no longer used
# JWT_SECRET=secretPOSTGRES_USER=calendso
POSTGRES_PASSWORD=CYSCJe7kh*!gkdTB
POSTGRES_DB=calendso
DATABASE_HOST=database:5432
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
# Needed to run migrations while using a connection pooler like PgBouncer
# Use the same one as DATABASE_URL if you're not using a connection pooler
DATABASE_DIRECT_URL=${DATABASE_URL}
GOOGLE_API_CREDENTIALS={}# Set this to '1' if you don't want Cal to collect anonymous usage
CALCOM_TELEMETRY_DISABLED=# Used for the Office 365 / Outlook.com Calendar integration
MS_GRAPH_CLIENT_ID=
MS_GRAPH_CLIENT_SECRET=# Used for the Zoom integration
ZOOM_CLIENT_ID=
ZOOM_CLIENT_SECRET=# E-mail settings
# Configures the global From: header whilst sending emails.
EMAIL_FROM=wbsu2003@88.com# Configure SMTP settings (@see https://nodemailer.com/smtp/).
EMAIL_SERVER_HOST=smtp.88.com
EMAIL_SERVER_PORT=465
EMAIL_SERVER_USER=wbsu2003@88.com
EMAIL_SERVER_PASSWORD=NODE_ENV=production
源文件在:https://github.com/calcom/docker/blob/main/.env.example
这里老苏只简单介绍几个改了的参数
NEXT_PUBLIC_WEBAPP_URL
:用我们前面反代的Cal.com
的访问地址;NEXT_PUBLIC_API_V2_URL
:在我们设置的API
访问地址后面还有加上/api/v2
NEXTAUTH_SECRET
:密钥,可以用openssl rand -base64 32
来生成;CALENDSO_ENCRYPTION_KEY
:用于加密CalDAV
凭据的加密密钥;POSTGRES_
和DATABASE
:为数据库设置;POSTGRES_USER
:数据库用户;POSTGRES_PASSWORD
:数据库用户对应的密码;POSTGRES_DB
:数据库库名;DATABASE_HOST
:包含主机和端口;DATABASE_URL
:数据库访问地址;
MS_GRAPH_CLIENT_ID
:填入你的Microsoft Graph
客户端ID
;MS_GRAPH_CLIENT_SECRET
:填入你的Microsoft Graph
密钥;EMAIL_FROM
:邮件发送用户;EMAIL_SERVER_
:邮件相关设置,还是以88
邮箱为例EMAIL_SERVER_HOST
:SMTP
服务器地址;EMAIL_SERVER_PORT
:SMTP
服务器端口;EMAIL_SERVER_USER
:邮件发送用户;EMAIL_SERVER_PASSWORD
:邮件中设置的第三方客户端密码;
docker-compose.yml
源文件在:https://github.com/calcom/docker/blob/main/docker-compose.yaml
老苏做了必要的微调,请将下面的内容保存为 docker-compose.yml
文件
# Use postgres/example user/password credentials
version: '3.8'services:database:image: postgrescontainer_name: cal-databaserestart: alwaysvolumes:- ./data:/var/lib/postgresql/data/env_file: env.txtcalcom:image: calcom/cal.comcontainer_name: cal-webrestart: alwaysports:- 5554:3000env_file: env.txtenvironment:- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}- DATABASE_DIRECT_URL=${DATABASE_URL}depends_on:- database# Optional use of Prisma Studio. In production, comment out or remove the section below to prevent unwanted access to your database.studio:image: calcom/cal.comcontainer_name: cal-prismarestart: alwaysports:- 5555:5555env_file: env.txtenvironment:- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}- DATABASE_DIRECT_URL=${DATABASE_URL}depends_on:- databasecommand:- npx- prisma- studio
# END SECTION: Optional use of Prisma Studio.
然后执行下面的命令
# 新建文件夹 calcom 和 子目录
mkdir -p /volume1/docker/calcom/data# 进入 calcom 目录
cd /volume1/docker/calcom# 将 docker-compose.yml 和 env.txt 放入当前目录# 一键启动
docker-compose --env-file env.txt up -d
运行
在浏览器中输入 https://cal.laosu.tech
,开始刷总是错误
老苏用的
cloudflared + npm
,所以错误界面和局域网访问不一样
从日志看,启动时间
到出现向导界面
差不多用了半小时,首先要设置管理员用户
个人用的话,AGPLv3 License
是免费的
选择与 Cal.com
集成的应用程序,不知道怎么设的话,保持默认就可以
进入主界面
第一次还需要设置一些基本信息
选择集成的日历
根据我们的设置,选择了 Outlook Calendar
,会需要登录认证
认证成功后
选择视频应用,老苏没有,直接选 Set up later
跳过了
设置你的可预约时间
默认是周一到周五,每天早上
9
点到下午5
点
最后是个人简介,照片
终于完成了
进入左下角的 Setting
--> General
--> Language
,下拉找到中文
Update
之后,界面就是中文了
根据我们的设置,访客可以看到的界面是下面👇这样的
可以根据我们开放的时间段进行预约
参考文档
calcom/cal.com: Scheduling infrastructure for absolutely everyone.
地址:https://github.com/calcom/cal.com
calcom/docker: The Docker configuration for Cal.com is an effort powered by people within the community. Cal.com, Inc. does not provide official support for Docker, but we will accept fixes and documentation. Use at your own risk.
地址:https://github.com/calcom/docker
Cal.com | Open Scheduling Infrastructure
地址:https://cal.com/zh-CN
calcom/cal.com - Docker Image | Docker Hub
地址:https://hub.docker.com/r/calcom/cal.com
Introduction - Cal.com Docs
地址:https://cal.com/docs/developing/introduction
Welcome | Design
地址:https://design.cal.com/