Lo que cambió en Cal.com en abril de 2026
Cal.com publicó el 14 de abril de 2026 un artículo oficial explicando su decisión: el auge de las herramientas de IA capaces de escanear código público para detectar vulnerabilidades llevó al equipo a cerrar la base de código comercial. La versión v6.4 marca el punto de inflexión.
El repositorio público calcom/cal.com fue renombrado a calcom/cal.diy y su licencia cambió de AGPL-3.0 a MIT. Este cambio puede parecer permisivo a primera vista — MIT es una licencia permisiva — pero el núcleo del problema es lo que fue eliminado del código público, no la licencia en sí. Cal.diy está descrito oficialmente como una herramienta para uso personal y no productivo: el sitio cal.diy recomienda explícitamente Cal.com (la versión cerrada) para cualquier uso comercial o en producción.
Funcionalidades eliminadas de cal.diy respecto a la versión AGPL
- Teams y Organizations: gestión multi-miembro y espacios de equipo, ahora reservados para la oferta Enterprise cerrada.
- Workflows: automatizaciones de recordatorios, notificaciones y acciones disparadas, ausentes del código público.
- SSO y SAML: inicio de sesión único a través de tu proveedor de identidad, eliminado de cal.diy.
- Routing Forms: formularios de cualificación para enrutar reservas al miembro adecuado, eliminados.
- Instant Booking: reserva inmediata sin confirmación manual, reservada para la oferta comercial.
- Insights: panel analítico de reservas, ausente del código abierto.
- API v1: la antigua API REST documentada, reemplazada por API v2 únicamente en el lado comercial.
- Agente telefónico IA: función de programación por llamada telefónica, código cerrado.
Requisitos comparados: RAM, CPU y stack por alternativa
Antes de elegir, comprueba que tu VPS corresponde al perfil de la herramienta. Las tres alternativas tienen stacks muy diferentes — una en Node.js/PostgreSQL, una en PHP/MySQL, una en Elixir/PostgreSQL — lo que se traduce en requisitos y restricciones de administración distintos.
Perfiles de recursos por herramienta
- Rallly (AGPL-3.0): Next.js + PostgreSQL via Docker Compose. Prevé al menos 2 GB de RAM, 1 vCPU es suficiente para carga ligera. Se requiere un dominio, un relay SMTP y Docker Compose v2. El bundle oficial incluye PostgreSQL, almacenamiento de objetos compatible S3 y un proxy inverso HTTPS — un solo comando es suficiente.
- Easy!Appointments (GPL-3.0): PHP 8.2+ + MySQL/MariaDB. Funciona en cualquier servidor LAMP estándar o Docker. 512 MB de RAM son suficientes para uso individual o equipo pequeño — la más ligera de las tres. Compatible con hosting compartido cPanel, no solo VPS.
- Tymeslot (AGPL-3.0): Elixir/Phoenix LiveView + PostgreSQL incluido en el contenedor Docker. Stack compilado, huella de memoria muy baja en tiempo de ejecución. Un solo contenedor Docker con PostgreSQL integrado — diseñado para una instalación VPS limpia.
Desplegar Rallly en un VPS con Docker Compose
Preparar el servidor
Conéctate como root en tu VPS. Instala Docker y Docker Compose v2 si no están ya instalados:
curl -fsSL https://get.docker.com | sh docker compose versionAbre los puertos 80 y 443 en tu firewall. Apunta un subdominio (
cal.tu-dominio.com) a la IPv4 de tu VPS mediante un registro A en tu zona DNS.Obtener la configuración oficial
Clona el repositorio de ejemplos self-hosted de Rallly y crea tu archivo de entorno:
git clone https://github.com/lukevella/rallly-selfhosted.git cd rallly-selfhosted cp .env.example .envConfigurar las variables de entorno
Abre
.envy rellena las variables esenciales:SECRET_PASSWORD=<cadena-aleatoria-32-chars> NEXT_PUBLIC_BASE_URL=https://cal.tu-dominio.com SMTP_HOST=smtp.tu-proveedor.com SMTP_PORT=587 [email protected] SMTP_PWD=<contraseña-smtp> [email protected]Genera la cadena aleatoria con
openssl rand -hex 16. No dejesSECRET_PASSWORDvacío — Rallly se negará a iniciar sin un valor no vacío.Lanzar los contenedores
Inicia el stack completo en segundo plano. El bundle de Rallly incluye la aplicación, PostgreSQL, almacenamiento de objetos y un proxy inverso con TLS automático:
docker compose up -dVerifica que todos los servicios estén
healthy:docker compose psEl proxy inverso obtiene automáticamente un certificado Let's Encrypt en el primer inicio — espera un minuto antes de acceder al dominio.
Verificar la instalación y crear la primera encuesta
Abre
https://cal.tu-dominio.comen tu navegador. La interfaz de Rallly no requiere que los participantes creen una cuenta — solo el organizador. Crea una primera encuesta de disponibilidad para verificar que el envío de correos electrónicos SMTP funciona correctamente.Si el correo no llega, revisa los logs del servicio de aplicación:
docker compose logs app --tail=50Activar actualizaciones automáticas (opcional)
Para mantenerte actualizado sin intervención manual, instala Watchtower que monitorea nuevas imágenes y reinicia los contenedores afectados:
docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower --cleanup --interval 86400Watchtower verifica nuevas imágenes una vez al día. Rallly publica parches de seguridad regularmente — no dejes tu instancia sin supervisión.
Rallly vs Easy!Appointments vs Tymeslot vs cal.diy
Desplace la tabla
| Criterio | Rallly | Easy!Appointments | Tymeslot | cal.diy |
|---|---|---|---|---|
| Licencia | AGPL-3.0 | GPL-3.0 | AGPL-3.0 | MIT (código recortado) |
| Stack | Next.js + PostgreSQL | PHP 8.2 + MySQL | Elixir/Phoenix + PostgreSQL | Next.js + PostgreSQL |
| RAM mínima | 2 GB | 512 MB | No documentado | 2 GB |
| Docker Compose | Sí, bundle oficial | Sí, imagen disponible | Sí, contenedor único | Sí |
| Caso de uso principal | Encuestas de disponibilidad, votación grupal | Citas estructuradas (servicios/proveedores) | Programación individual y grupal | Programación individual (no prod) |
| Sincronización de calendario | Google, Outlook (iCal) | Google Calendar | Google, Outlook, iCloud, CalDAV, Nextcloud | Google, Outlook |
| SSO / SAML | No | No | No | Eliminado (oferta comercial) |
| Equipos multi-miembro | No | Multi-proveedor (servicios) | Sí (grupos) | Eliminado (oferta comercial) |
| Workflows / recordatorios automáticos | Sí (emails) | Sí (emails) | Sí (emails, Slack, Telegram) | Eliminado (oferta comercial) |
| API REST | Sí | Sí (REST completa) | Sí + webhooks | Solo API v2 |
| Recomendado para producción | Sí | Sí | Sí | No (declaración oficial) |
| Madurez (2026) | Activo, v4.15.2 (sept 2026) | Activo, v1.6.0 (mayo 2026) | Activo, lanzado en respuesta a Cal.com | Mantenido, alcance intencionalmente limitado |
Migrar desde Cal.com AGPL: exportar tus datos
Si has estado auto-alojando Cal.com bajo AGPL y quieres migrar a una de las alternativas, aquí te explicamos cómo extraer tus datos antes de apagar tu antigua instancia.
Exportar desde una instancia Cal.com AGPL existente. Cal.com almacena sus datos en PostgreSQL. Puedes exportar las tablas de reservas, disponibilidad y tipos de eventos via pg_dump:
pg_dump -U calcom -d calcom -t bookings -t event_types -t schedules > calcom_export.sqlLos datos a priorizar: las reservas existentes (para el historial de CRM), las direcciones de correo de los participantes (si envías recordatorios), y tus reglas de disponibilidad (horarios, slots bloqueados).
Lo que no puedes importar directamente. Ninguna de las tres alternativas ofrece importación en formato Cal.com — la migración es una reconfiguración manual, no una restauración. Céntrate en exportar tu lista de contactos y reglas de disponibilidad, luego reconfigura los tipos de eventos en la herramienta objetivo.
Endurecimiento post-instalación
Algunos pasos antes de exponer tu instancia al tráfico real.
Protege el acceso de administrador con autenticación HTTP básica delante de tu proxy inverso si la herramienta no ofrece 2FA nativo — especialmente importante para Easy!Appointments en acceso público. Configura copias de seguridad automáticas del volumen PostgreSQL o del directorio de datos MySQL: un docker exec programado con pg_dump o mysqldump a almacenamiento externo es suficiente. Verifica que tu VPS solo expone los puertos necesarios (80/443 para web, 22 para SSH) y que el acceso directo al puerto de base de datos (5432 o 3306) no está abierto en la interfaz pública.
Resolución de problemas comunes
Rallly: la aplicación arranca pero los correos no llegan. Verifica SMTP_HOST, SMTP_PORT y SMTP_USER en tu archivo .env. Algunos proveedores de hosting bloquean el puerto 25 saliente — usa el puerto 587 (STARTTLS) o 465 (SSL). Inspecciona los logs con docker compose logs app --tail=100 | grep -i smtp.
Easy!Appointments: error 500 o página en blanco tras la instalación. Verifica que el directorio storage/ es escribible por el proceso web (chmod -R 775 storage/). En Docker, comprueba que el contenedor MySQL está iniciado y accesible antes que el contenedor de aplicación — un depends_on con condition: service_healthy en tu Compose resuelve condiciones de carrera en el arranque.
Tymeslot: el contenedor arranca pero la sincronización de calendario falla. La sincronización de Google/Outlook requiere credenciales OAuth2 (Client ID y Client Secret) configuradas en variables de entorno. Crea un proyecto en Google Cloud Console, activa la API de Google Calendar, y configura GOOGLE_CLIENT_ID y GOOGLE_CLIENT_SECRET.
¿Qué alternativa elegir?
Rallly es la opción adecuada si necesitas encuestas de disponibilidad para encontrar un horario que funcione para varios participantes — reuniones de equipo, talleres, llamadas grupales. Sin flujo de reserva en tiempo real, pero una votación colaborativa ligera y sin fricción. Su madurez (v4.15.2 en septiembre de 2026, bundle Docker oficial completo) lo convierte en la opción más fácil de desplegar.
Easy!Appointments es la elección correcta si tu caso de uso se parece a un calendario profesional estructurado: servicios (consulta, clase, entrevista), proveedores, slots fijos y confirmación por correo. Funciona en hosting compartido cPanel además de en VPS, haciéndolo accesible sin Docker. Su versión 1.6.0 (mayo 2026) es la más reciente.
Tymeslot se posiciona como la respuesta directa a la partida de Cal.com AGPL: programación individual con enlaces de reserva, sincronización multi-calendario (Google, Outlook, iCloud, CalDAV, Nextcloud), e integraciones webhooks para conectar con n8n o Make. Nacido a raíz del cierre de Cal.com, apunta directamente a los desarrolladores que buscaban una alternativa de alcance equivalente, con licencia AGPL que garantiza la longevidad.