Cal.com:开源日程预约管理平台,打造智能化的预约管理体验
背景
日程预约是商务和个人服务的重要环节,但现有方案存在诸多问题:
- Calendly 等商业工具免费版功能受限
- 预约确认需要人工协调,效率低下
- 日历和预约系统不同步,容易冲突
- 团队协作时预约管理混乱
- 预约提醒依赖人工发送,容易遗漏
- 时区处理复杂,国际客户预约困难
- 缺乏付款集成,收费服务预约麻烦
- 数据存储在第三方,隐私无法保障
今天介绍一款开源预约管理利器------Cal.com,它是 Calendly 的开源替代方案。
什么是 Cal.com?
Cal.com(原名 Calendso)是一款开源的日程预约管理平台,采用 TypeScript/Node.js 开发,为企业和个人提供专业的预约管理解决方案。
核心理念: "The open-source Calendly alternative"------开源的 Calendly 替代方案。
核心特性:
| 特性 | 说明 |
|---|---|
| 日历集成 | Google/Outlook/Apple Calendar |
| 多平台支持 | Web/移动端/嵌入页面 |
| 团队预约 | 支持多人同时预约 |
| 自动提醒 | 邮件/短信提醒 |
| 时区智能 | 自动时区转换 |
| 支付集成 | Stripe 付款功能 |
| 表单自定义 | 灵活的问题表单 |
| 嵌入功能 | 嵌入网站/日历 |
GitHub 地址: https://github.com/calcom/cal.com
Star 数量: 25K+
Cal.com vs Calendly vs 其他方案
| 对比项 | Cal.com | Calendly | 传统邮件预约 |
|---|---|---|---|
| 开源 | ✅ 完全开源 | ❌ 闭源 | 不适用 |
| 自托管 | ✅ 完全支持 | ❌ 不支持 | 不适用 |
| 免费版 | ✅ 无功能限制 | ⚠️ 功能受限 | 免费 |
| 支付集成 | ✅ 原生支持 | ⚠️ 付费版 | ❌ 不支持 |
| 团队功能 | ✅ 完整支持 | ⚠️ 付费版 | ❌ 不支持 |
| 嵌入功能 | ✅ 支持 | ✅ 支持 | ❌ 不支持 |
Cal.com 的独特优势:
- 完全开源,代码透明可审计
- 自托管部署,数据完全自主
- 完全免费,无任何功能限制
- 团队协作功能开箱即用
- 支持 Stripe 支付集成
- 活跃社区,持续迭代更新
快速上手
Docker 部署(推荐)
系统要求:
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核 |
| 内存 | 4GB | 8GB |
| 存储 | 20GB | 50GB+ |
| 数据库 | PostgreSQL 14+ | PostgreSQL 15+ |
创建目录:
bash
mkdir -p ~/calcom && cd ~/calcom
创建 docker-compose.yml:
yaml
version: '3'
services:
calcom:
image: calcom/docker:latest
container_name: calcom
restart: unless-stopped
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://calcom:calcom_password@db:5432/calcom
- DATABASE_TYPE=postgresql
- NEXTAUTH_SECRET=your-nextauth-secret
- NEXTAUTH_URL=http://your-domain.com
- CALENDSO_ENCRYPTION_KEY=your-encryption-key
volumes:
- ./data:/app/data
depends_on:
- db
networks:
- calcom_network
db:
image: postgres:15-alpine
container_name: calcom_db
restart: unless-stopped
environment:
- POSTGRES_USER=calcom
- POSTGRES_PASSWORD=calcom_password
- POSTGRES_DB=calcom
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- calcom_network
networks:
calcom_network:
driver: bridge
启动服务:
bash
# 启动服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f
访问 Web 界面:
http://your-server-ip:3000
首次访问需要创建管理员账号
简化版部署
bash
# 一键部署脚本
git clone https://github.com/calcom/docker.git calcom-docker
cd calcom-docker
cp .env.example .env
# 编辑 .env 配置必要参数
docker-compose up -d
核心功能详解
1. 事件类型
创建事件类型:
事件类型选项:
- 单人预约:客户预约单个主持人
- 小组预约:多人同时参与
- 团队活动:团队成员随机分配
- 群体活动:一个时间段多人预约
配置示例:
yaml
事件配置:
- 事件名称:30分钟咨询
- 事件时长:30分钟
- 可用时段:周一至周五 9:00-18:00
- 时区:Asia/Shanghai
- 提前预约时间:2小时
- 预约上限:每天10个
- 需要确认:手动/自动
2. 日历集成
支持的日历平台:
| 平台 | 说明 |
|---|---|
| Google Calendar | Gmail 日历集成 |
| Outlook Calendar | Microsoft 日历 |
| Apple Calendar | iCloud 日历 |
| CalDAV 兼容 | 其他日历支持 |
集成配置:
步骤:
1. 进入 Settings → Calendars
2. 点击"Add Calendar"
3. 选择日历平台
4. 完成 OAuth 授权
5. 同步日历
3. 团队预约
团队功能:
功能:
- 创建团队
- 添加团队成员
- 分配事件类型
- 路由规则:智能分配
- 池化预约:共享空闲时间
团队路由配置:
yaml
路由规则:
- 类型:均匀分配/按顺序/特定成员
- 成员可用性:自动检测
- 备选成员:主预约失败时启用
4. 提醒通知
提醒类型:
| 类型 | 说明 |
|---|---|
| 邮件确认 | 预约成功后自动发送 |
| 邮件提醒 | 会议前自动提醒 |
| 时区提醒 | 帮助参与者确认时区 |
| 取消通知 | 取消或改期时通知 |
自定义邮件模板:
提醒设置:
- 预约确认邮件:立即发送
- 会议前24小时提醒:自定义内容
- 会议前1小时提醒:自定义内容
- 取消确认邮件:立即发送
5. 表单问题
自定义预约表单:
问题类型:
- 单行文本
- 多行文本
- 下拉选择
- 多选
- 日期选择
- 文件上传
表单配置示例:
yaml
问题表单:
- 问题1:公司名称(单行文本,必填)
- 问题2:预约目的(下拉选择:咨询/采购/合作)
- 问题3:预算范围(多选:<1万/1-10万/10万+)
- 问题4:补充说明(多行文本,选填)
6. 嵌入和集成
嵌入方式:
html
<!-- 嵌入到网站 -->
<iframe src="https://cal.com/your-username/30min" width="100%" height="700px"></iframe>
<!-- 悬浮按钮 -->
<button onclick="Cal.open({ link: 'your-username/30min' })">
预约会议
</button>
<!-- 暗色模式 -->
<iframe src="https://cal.com/your-username/30min?theme=dark" ...></iframe>
高级配置
反向代理配置
Nginx 配置:
nginx
server {
listen 80;
server_name booking.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
启用 HTTPS:
nginx
server {
listen 443 ssl http2;
server_name booking.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:3000;
# ... 其他配置同上
}
}
Stripe 支付集成
配置步骤:
1. 在 Stripe 创建账户
2. 获取 API Keys
3. 在 Cal.com Settings → Payment 配置:
- Stripe Publishable Key
- Stripe Secret Key
4. 启用支付功能
配置环境变量:
yaml
environment:
- STRIPE_PUBLIC_KEY=pk_live_xxx
- STRIPE_PRIVATE_KEY=sk_live_xxx
- STRIPE_WEBHOOK_SECRET=whsec_xxx
邮件配置
使用 Gmail SMTP:
yaml
environment:
- EMAIL_FROM=your@gmail.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=your@gmail.com
- SMTP_PASSWORD=your-app-password
常见问题
Q:Cal.com 和 Calendly 有什么区别?
A:
- Cal.com 完全开源,Calendly 是闭源软件
- Cal.com 可自托管,Calendly 不支持
- Cal.com 完全免费,Calendly 免费版功能受限
- Cal.com 支持 Stripe 支付(免费版)
- Calendly 生态更成熟,集成更多
Q:需要多少服务器资源?
A:
- 最低配置:2核4G
- 推荐配置:4核8G
- PostgreSQL 存储取决于数据量
- 建议使用 SSD 提升性能
Q:支持中文界面吗?
A:
- 部分支持中文
- 可通过自定义翻译完善
- 预约页面支持多语言
- 邮件模板可自定义语言
Q:如何更新 Cal.com?
A:
bash
# Docker 更新
git pull
docker-compose pull
docker-compose up -d
# 注意:更新前建议备份数据库
适用场景
推荐使用:
- 咨询顾问预约管理
- 销售团队客户预约
- 医疗服务预约
- 教育培训预约
- 团队内部会议协调
- 替代 Calendly
- 需要自托管的场景
不推荐使用:
- 超大规模企业预约系统
- 需要复杂工作流
- 需要原生移动 App
总结
Cal.com 以"开源免费 + 自托管 + 团队协作 + 支付集成"的组合,成为了日程预约领域的最佳开源选择。
核心优势回顾:
- 完全开源:代码透明可审计
- 自托管:数据完全自主
- 免费使用:无任何功能限制
- 团队协作:完善的团队功能
- 支付集成:原生 Stripe 支持
- 活跃社区:持续迭代更新
对于需要日程预约管理、想要摆脱 Calendly 限制、追求数据自主的用户,Cal.com 是最佳选择。
本文由无边界科技技术团队分享,专注软件开发与技术解决方案。
官网:wubianj.com
© 版权归无边界科技所有,版权所有。