Cal.com autohospedado: Alternativa a Calendly para reserva de citas
Qué cubre este artículo
- Qué es Cal.com: la plataforma de reserva de citas de código abierto más destacada.
- Autohospedaje con Docker, integración de calendarios (CalDAV, Google, Outlook).
- Tipos de eventos, disponibilidad, reservas en equipo.
- Automatización de flujos: webhooks, n8n, confirmaciones.
- Cuándo vale la pena autohospedar vs. usar la nube de Cal.com.
Introducción
Cal.com es la respuesta de código abierto a Calendly: enlaces para “reserva una cita conmigo”, gestión de disponibilidad, sincronización de calendarios, distribución en rotación entre equipos. Si lo autohospedas, tienes control total sobre los datos de reserva (relevante para RGPD: las citas suelen ser datos personales).
El autohospedaje requiere más esfuerzo que un único contenedor (app Next.js + Postgres + Prisma), pero es viable y para consultores, agencias y proveedores de servicios a menudo la solución compatible con RGPD.
Casos de uso típicos
- Citas de consultoría: los clientes reservan franjas horarias por sí solos, el calendario se completa automáticamente.
- Programación de equipos: distribución en rotación entre miembros del equipo.
- Reclutamiento: programar entrevistas sin intercambios de correos.
- Franjas de soporte: los clientes reservan ventanas de tiempo para soporte.
- Flujos con IA: n8n reacciona a reservas, genera recordatorios, documentos de preparación, entradas de CRM.
Instalación: Docker (honestamente, complejidad media)
Cal.com es una app Next.js, y el enfoque oficial de autohospedaje es Docker con compilación propia:
git clone https://github.com/calcom/docker.git calcom-docker
cd calcom-docker
cp .env.example .env
# Editar .env: NEXTAUTH_SECRET, DATABASE_URL, etc.
docker compose up -d
Variables .env importantes:
NEXTAUTH_SECRET=aleatorio-largo
CALENDSO_ENCRYPTION_KEY=aleatorio-largo-32-chars
DATABASE_URL=postgresql://calcom:secreto@db:5432/calcom
NEXT_PUBLIC_WEBAPP_URL=https://calendario.tu-dominio.es
EMAIL_FROM=calendario@tu-dominio.es
EMAIL_SERVER_HOST=smtp.tu-servidor-correo.es
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER=...
EMAIL_SERVER_PASSWORD=...
Tras el inicio: crea la cuenta administrador, define tipos de eventos, conecta tu calendario.
Integración de calendarios
- CalDAV: calendario de Nextcloud, ownCloud, Radicale, la opción para quienes autohospedan.
- Google Calendar: integración OAuth.
- Outlook/Exchange: Microsoft 365.
- Múltiples calendarios: la disponibilidad se sincroniza entre todos (detección de conflictos).
Tipos de eventos y disponibilidad
- Tipos de eventos: “Llamada de 30 min”, “Consultoría 60 min”, “Primera cita”, cada uno con duración, buffer, ubicación (enlace de video, teléfono, presencial).
- Disponibilidad: días de la semana, horarios, excepciones, buffer entre citas.
- Eventos en equipo: Collective (todos deben estar disponibles), Round-Robin (distribución en rotación).
- Página de reserva: tu enlace público
calendario.tu-dominio.es/tu-nombre.
Automatización con n8n
Cal.com envía webhooks cuando se crean o cancelan reservas:
Webhook de Cal.com: BOOKING_CREATED
│
▼
n8n: extrae datos (nombre, hora, notas)
│
├─→ Twenty CRM: crea contacto/oportunidad
├─→ Ollama: genera notas personalizadas de preparación
├─→ Correo: envía confirmación con agenda
└─→ Telegram: notificación interna
# En nodo HTTP-Request de n8n o script propio:
# La API de Cal.com es RESTful: obtén reservas
import requests
r = requests.get(
"https://calendario.tu-dominio.es/api/v1/bookings",
headers={"Authorization": "Bearer TU_API_KEY"})
Ejemplo práctico: agente de preparación
# Con nueva reserva → Ollama escribe preparación
booking = webhook_payload["booking"]
prep = ollama_client.chat(model="llama3.1:8b", messages=[{
"role": "user",
"content": f"Crea 5 puntos de preparación para una primera cita con "
f"{booking['name']} ({booking.get('notes','sin notas')})."
}])
# Almacena como comentario en la reserva o como nota interna
Seguridad y protección de datos
- RGPD: datos de reserva en tus servidores, sin proveedores estadounidenses, sin problemas de acuerdos de procesamiento.
- Envío de correos: usa tu propio SMTP para confirmaciones, consulta Autohospedaje.
- HTTPS: la página de reserva debe usar TLS (confianza + seguridad).
- Rate-Limiting: la página de reserva es pública, implementa límites contra abuso y spam.
Cal.com vs. Calendly
| Aspecto | Cal.com autohospedado | Calendly |
|---|---|---|
| Soberanía de datos | ✅ Tu servidor | ❌ Nube estadounidense |
| Costos | Solo servidor | $10-20/usuario/mes |
| Configuración | Docker, media | Ninguna |
| Funcionalidades | Básicas correctas, funciones empresariales limitadas | Más maduro |
| RGPD | ✅ Sencillo | ⚠️ Requiere acuerdo |
Enlaces de referencia
- IRC-Coding.de: Tutoriales de programación: webhooks, APIs de calendarios.
- n8n: Automatización de flujos para reservas.
- Twenty CRM: Envía reservas a tu CRM.
- Nextcloud: Hospeda tu calendario CalDAV.
- Docker: Fundamentos de contenedores.
Puntos clave:
- Cal.com = Calendly de código abierto: páginas de reserva, sincronización de calendarios, programación en equipo.
- Autohospedaje = compatible con RGPD, datos de reserva no en proveedores estadounidenses.
- Instalación más compleja (Next.js + Postgres) que un contenedor único.
- Webhooks + n8n lo convierten en componente de automatización.
- Para consultores y proveedores de servicios con requisitos de privacidad, la opción correcta.
FAQ
¿Es difícil autohospedar Cal.com?
¿Qué calendarios puedo conectar?
¿Necesito mi propio SMTP?
¿Reservas en equipo?
¿Alternativas?
¿Integración con IA?
Fuentes y lecturas recomendadas
- Cal.com: Sitio web oficial.
- Cal.com Self-Hosting: Documentación.
- IRC-Coding.de: Tutoriales de programación.


