Cal.com 日程预约平台部署教程
Cal.com 是一款开源的日程预约平台,作为 Calendly 的自托管替代方案。它允许你创建个人预约页面,他人可以根据你的空闲时间预约会议。支持日历集成、视频会议、团队调度和工作流自动化等企业级功能。本教程将在搬瓦工 VPS 上通过 Docker 部署 Cal.com。
一、Cal.com 核心功能
- 事件类型:创建不同类型的预约(如 30 分钟电话、60 分钟咨询),每种类型有独立的设置。
- 日历集成:连接 Google Calendar、Outlook 等日历,自动检测冲突和显示可用时段。
- 视频会议:集成 Zoom、Google Meet、Microsoft Teams 等,预约时自动创建会议链接。
- 团队调度:支持循环分配和集体预约模式,适合销售和客服团队。
- 工作流:自动化提醒和确认流程,通过邮件或短信发送预约提醒。
- 嵌入集成:预约页面可以嵌入到你的网站中,无缝集成品牌体验。
- 支付集成:集成 Stripe 实现付费预约,适合咨询收费场景。
二、环境准备
- 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
- 内存:至少 2GB RAM,推荐 4GB。
- 磁盘:至少 15GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 折扣。
三、Docker Compose 部署
3.1 克隆项目
cd /opt
git clone https://github.com/calcom/docker.git cal-com
cd /opt/cal-com
3.2 配置环境变量
cp .env.example .env
编辑 .env 文件中的关键配置:
# 应用设置
NEXT_PUBLIC_WEBAPP_URL=http://your-domain.com
NEXTAUTH_SECRET=your_nextauth_secret_here
CALENDSO_ENCRYPTION_KEY=your_encryption_key_here
# 数据库
DATABASE_URL=postgresql://calcom:your_db_password@db:5432/calcom
DATABASE_DIRECT_URL=postgresql://calcom:your_db_password@db:5432/calcom
# 邮件
EMAIL_FROM=noreply@example.com
EMAIL_SERVER_HOST=smtp.example.com
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER=your-email@example.com
EMAIL_SERVER_PASSWORD=your-email-password
生成密钥:
echo "NEXTAUTH_SECRET: $(openssl rand -base64 32)"
echo "ENCRYPTION_KEY: $(openssl rand -hex 32)"
3.3 创建 Docker Compose 文件
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
calcom:
image: calcom/cal.com:latest
container_name: calcom
restart: always
ports:
- "3000:3000"
env_file:
- .env
depends_on:
- db
db:
image: postgres:15-alpine
container_name: calcom-db
restart: always
environment:
POSTGRES_USER: calcom
POSTGRES_PASSWORD: your_db_password
POSTGRES_DB: calcom
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
EOF
3.4 启动服务
docker compose up -d
docker compose logs -f calcom
启动后访问 http://你的服务器IP:3000 注册管理员账户。
四、Nginx 反向代理
cat > /etc/nginx/sites-available/calcom <<'EOF'
server {
listen 80;
server_name cal.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
EOF
ln -s /etc/nginx/sites-available/calcom /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d cal.example.com
五、Cal.com 使用指南
5.1 设置可用时间
登录后首先设置你的可用时间。进入"Availability"页面,定义工作日和工作时间段。可以创建多个可用时间方案,例如"工作日"和"周末"方案,不同事件类型可以关联不同的时间方案。
5.2 创建事件类型
在"Event Types"页面创建预约类型。例如创建一个"30 分钟咨询"事件,设置时长、可用时间、缓冲时间(会议前后的间隔)、最小提前通知时间和最大可预约天数。每个事件类型有独立的预约链接。
5.3 连接日历
在"Integrations"页面连接你的日历账户。连接后 Cal.com 会自动读取已有日程,避免时间冲突。预约成功后也会自动在日历中创建事件。
5.4 预约页面
你的个人预约页面地址为 https://cal.example.com/你的用户名。访问者可以在页面上选择事件类型和可用时间段,填写姓名和邮箱后完成预约。双方都会收到邮件确认通知。
六、备份与升级
# 备份数据库
docker exec calcom-db pg_dump -U calcom calcom > /opt/cal-com/backup_$(date +%Y%m%d).sql
# 升级
cd /opt/cal-com
docker compose pull
docker compose down
docker compose up -d
总结
Cal.com 是功能最完整的开源日程预约平台,适合需要专业预约系统的个人和团队。如果你只需要简单的日程投票功能,可以参考更轻量的 Rallly。购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受折扣。更多教程请访问 搬瓦工VPS中文网。