Skip to content
BotServBotServ
Cal.comCalendlyReserva de citasSelf-hostingOpen SourceCalendario

Cal.com self-hosted: Alternativa a Calendly

Cal.com self-hosted: reserva de citas open-source como alternativa a Calendly. Setup Docker, sincronización de calendario, automatización con n8n.

S

schutzgeist

4 min read
Cal.com self-hosted: Alternativa a Calendly

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

AspectoCal.com autohospedadoCalendly
Soberanía de datos✅ Tu servidor❌ Nube estadounidense
CostosSolo servidor$10-20/usuario/mes
ConfiguraciónDocker, mediaNinguna
FuncionalidadesBásicas correctas, funciones empresariales limitadasMá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?

Complejidad media: es una app Next.js con Postgres y Prisma, no un contenedor único. El repositorio Docker oficial ayuda, pero las actualizaciones y la configuración de correo requieren mantenimiento. Si solo necesitas reservas simples, también puedes usar la nube de Cal.com.

¿Qué calendarios puedo conectar?

CalDAV (Nextcloud, Radicale), Google Calendar, Outlook/M365, Apple Calendar vía CalDAV. Múltiples calendarios simultáneamente para verificación de conflictos.

¿Necesito mi propio SMTP?

Sí, para confirmaciones de reserva y recordatorios necesitas un servidor SMTP (tu propio servidor de correo, Postfix, o un proveedor externo). Sin correo, no hay confirmaciones.

¿Reservas en equipo?

Sí: Collective (todos deben estar disponibles) y Round-Robin (distribución rotatoria) son funcionalidades básicas. Ideal para equipos de soporte y ventas.

¿Alternativas?

Easy!Appointments (más simple, PHP), herramientas similares a Fossil/Crontab, o Nextcloud Appointments (si ya usas Nextcloud). Cal.com es la más madura.

¿Integración con IA?

Mediante webhooks: n8n o tu propio script reacciona a reservas: Ollama escribe notas de preparación, responde FAQ, genera borradores de seguimiento. Cal.com también tiene una API para integración directa.

Fuentes y lecturas recomendadas

Volver al blog
Share:

Entradas relacionadas