Cal.com:开源日程预约管理平台,打造智能化的预约管理体验

4 阅读7分钟

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 地址: github.com/calcom/cal.…

Star 数量: 25K+

Cal.com vs Calendly vs 其他方案

对比项Cal.comCalendly传统邮件预约
开源✅ 完全开源❌ 闭源不适用
自托管✅ 完全支持❌ 不支持不适用
免费版✅ 无功能限制⚠️ 功能受限免费
支付集成✅ 原生支持⚠️ 付费版❌ 不支持
团队功能✅ 完整支持⚠️ 付费版❌ 不支持
嵌入功能✅ 支持✅ 支持❌ 不支持

Cal.com 的独特优势:

  • 完全开源,代码透明可审计
  • 自托管部署,数据完全自主
  • 完全免费,无任何功能限制
  • 团队协作功能开箱即用
  • 支持 Stripe 支付集成
  • 活跃社区,持续迭代更新

快速上手

Docker 部署(推荐)

系统要求:

项目最低要求推荐配置
CPU2 核4 核
内存4GB8GB
存储20GB50GB+
数据库PostgreSQL 14+PostgreSQL 15+

创建目录:

mkdir -p ~/calcom && cd ~/calcom

创建 docker-compose.yml:

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

启动服务:

# 启动服务
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f

访问 Web 界面:

http://your-server-ip:3000

首次访问需要创建管理员账号

简化版部署

# 一键部署脚本
git clone https://github.com/calcom/docker.git calcom-docker
cd calcom-docker
cp .env.example .env
# 编辑 .env 配置必要参数
docker-compose up -d

核心功能详解

1. 事件类型

创建事件类型:

事件类型选项:
- 单人预约:客户预约单个主持人
- 小组预约:多人同时参与
- 团队活动:团队成员随机分配
- 群体活动:一个时间段多人预约

配置示例:

事件配置:
- 事件名称:30分钟咨询
- 事件时长:30分钟
- 可用时段:周一至周五 9:00-18:00
- 时区:Asia/Shanghai
- 提前预约时间:2小时
- 预约上限:每天10个
- 需要确认:手动/自动

2. 日历集成

支持的日历平台:

平台说明
Google CalendarGmail 日历集成
Outlook CalendarMicrosoft 日历
Apple CalendariCloud 日历
CalDAV 兼容其他日历支持

集成配置:

步骤:
1. 进入 Settings → Calendars
2. 点击"Add Calendar"
3. 选择日历平台
4. 完成 OAuth 授权
5. 同步日历

3. 团队预约

团队功能:

功能:
- 创建团队
- 添加团队成员
- 分配事件类型
- 路由规则:智能分配
- 池化预约:共享空闲时间

团队路由配置:

路由规则:
- 类型:均匀分配/按顺序/特定成员
- 成员可用性:自动检测
- 备选成员:主预约失败时启用

4. 提醒通知

提醒类型:

类型说明
邮件确认预约成功后自动发送
邮件提醒会议前自动提醒
时区提醒帮助参与者确认时区
取消通知取消或改期时通知

自定义邮件模板:

提醒设置:
- 预约确认邮件:立即发送
- 会议前24小时提醒:自定义内容
- 会议前1小时提醒:自定义内容
- 取消确认邮件:立即发送

5. 表单问题

自定义预约表单:

问题类型:
- 单行文本
- 多行文本
- 下拉选择
- 多选
- 日期选择
- 文件上传

表单配置示例:

问题表单:
- 问题1:公司名称(单行文本,必填)
- 问题2:预约目的(下拉选择:咨询/采购/合作)
- 问题3:预算范围(多选:<1万/1-10万/10万+)
- 问题4:补充说明(多行文本,选填)

6. 嵌入和集成

嵌入方式:

<!-- 嵌入到网站 -->
<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 配置:

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:

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. 启用支付功能

配置环境变量:

environment:
  - STRIPE_PUBLIC_KEY=pk_live_xxx
  - STRIPE_PRIVATE_KEY=sk_live_xxx
  - STRIPE_WEBHOOK_SECRET=whsec_xxx

邮件配置

使用 Gmail SMTP:

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:

# Docker 更新
git pull
docker-compose pull
docker-compose up -d

# 注意:更新前建议备份数据库

适用场景

推荐使用:

  • 咨询顾问预约管理
  • 销售团队客户预约
  • 医疗服务预约
  • 教育培训预约
  • 团队内部会议协调
  • 替代 Calendly
  • 需要自托管的场景

不推荐使用:

  • 超大规模企业预约系统
  • 需要复杂工作流
  • 需要原生移动 App

总结

Cal.com 以"开源免费 + 自托管 + 团队协作 + 支付集成"的组合,成为了日程预约领域的最佳开源选择。

核心优势回顾:

  • 完全开源:代码透明可审计
  • 自托管:数据完全自主
  • 免费使用:无任何功能限制
  • 团队协作:完善的团队功能
  • 支付集成:原生 Stripe 支持
  • 活跃社区:持续迭代更新

对于需要日程预约管理、想要摆脱 Calendly 限制、追求数据自主的用户,Cal.com 是最佳选择。


本文由无边界科技技术团队分享,专注软件开发与技术解决方案。

官网:wubianj.com

© 版权归无边界科技所有,版权所有。