Por qué el cambio de precios de Loom obliga a las agencias a actuar
El rol Creator Lite permitía añadir miembros a un espacio de trabajo de Loom sin facturarlos como creadores de pago. Un diseñador o jefe de proyecto que graba una demo corta para un cliente una vez a la semana encajaba en este rol sin coste adicional. Atlassian, que adquirió Loom, eliminó este rol para todas las cuentas creadas después de febrero de 2026, y las cuentas existentes migran a la facturación de Atlassian de forma progresiva.
En la práctica, para un equipo pequeño con 10 creadores de pago y 20 usuarios Creator Lite: la factura mensual pasa de 180 $ a 540 $ el mes de la migración. Usuarios individuales reportan facturas que saltan de 18 $ a 220 $ al mes de la noche a la mañana. El plan Business factura a 18 $ por usuario al mes, sin excepciones.
Para una agencia que factura a sus clientes por proyectos de alcance fijo, esta variabilidad de costes es inaceptable. La captura de pantalla async es una herramienta de comunicación interna y con clientes: debe tener un coste predecible, o bien auto-alojarse.
Por qué Cap se adapta a una agencia
- Coste fijo: paga por el VPS, no por una suscripción por asiento que crece con cada contratación.
- Datos alojados en su propia infraestructura: las capturas de maquetas, demos y código nunca salen de su servidor.
- Licencia AGPL-3.0: el código es auditable, la hoja de ruta es pública y el proyecto está activo (más de 23.000 estrellas en GitHub a 5 de octubre de 2026).
- Compartir por enlace: sus clientes reciben una URL firmada, igual que con Loom, sin crear cuenta.
- Dominio personalizado: expone Cap bajo
cap.your-domain.com, no bajo un dominio de terceros. - Almacenamiento configurable: MinIO integrado para empezar, o un bucket S3/Cloudflare R2 externo para producción.
- Interfaz limpia sin capa de IA de pago impuesta: la herramienta hace lo que promete, nada más.
- Despliegue en un solo comando:
docker compose up -ddesde el repositorio oficial.
Requisitos de VPS para desplegar Cap
Cap está compuesto por cuatro servicios Docker: la aplicación web (cap-web), una base de datos MySQL 8.0 (ps-mysql), un servidor de medios para transcodificación (cap-media-server) y MinIO para almacenamiento de objetos compatible con S3. El conjunto consume alrededor de 1 GB de RAM en reposo; en condiciones de producción con varias grabaciones simultáneas, planifique 2 vCPU y 4 GB de RAM como base. Calcule 20 GB de disco SSD/NVMe para binarios y vídeos iniciales, y luego añada o externalice el almacenamiento según el volumen.
Otros requisitos:
- Docker Engine 24+ y Docker Compose v2 instalados en el VPS.
- Un subdominio dedicado (por ejemplo cap.your-domain.com) apuntando a la IP del VPS.
- Un proxy inverso que gestione HTTPS (Caddy o Nginx con Certbot).
- Puertos 3000 (app), 3456 (servidor de medios), 3902/3903 (MinIO) accesibles desde el proxy inverso, pero no expuestos directamente al público.
Desplegar Cap en su VPS
Clonar el repositorio oficial
En su VPS, clone el repositorio de CapSoftware y acceda al directorio raíz:
git clone https://github.com/CapSoftware/Cap.git cd CapEl repositorio incluye un archivo
docker-compose.template.yml. Cópielo comodocker-compose.ymlpara no sobreescribir sus cambios en un futurogit pull:cp docker-compose.template.yml docker-compose.ymlConfigurar las variables de entorno
Cree un archivo
.enven la raíz a partir de la plantilla proporcionada y edite los valores críticos:cp .env.example .envVariables a definir antes de cualquier exposición pública:
# URL pública de la aplicación NEXTAUTH_URL=https://cap.your-domain.com WEB_URL=https://cap.your-domain.com # Secretos — regenere estos valores, NUNCA deje los valores por defecto NEXTAUTH_SECRET=<cadena-aleatoria-32-chars> DATABASE_ENCRYPTION_KEY=<cadena-aleatoria-32-chars> # Base de datos MySQL DATABASE_URL=mysql://root:su-contraseña@ps-mysql:3306/planetscale # Almacenamiento MinIO integrado (reemplazar por S3 externo en producción) CAP_AWS_ACCESS_KEY=minioadmin CAP_AWS_SECRET_KEY=minioadmin CAP_AWS_BUCKET=cap-media CAP_AWS_REGION=us-east-1 S3_PUBLIC_ENDPOINT=https://cap.your-domain.com/s3 S3_INTERNAL_ENDPOINT=http://minio:9000 # Servidor de medios MEDIA_SERVER_URL=http://cap-media-server:3456 MEDIA_SERVER_WEBHOOK_SECRET=<cadena-aleatoria-32-chars>Si no configura un servidor SMTP, los enlaces de inicio de sesión aparecen en los logs del contenedor
cap-web:docker compose logs cap-web. Es suficiente para las pruebas iniciales.Iniciar la pila
Inicie los cuatro servicios en segundo plano:
docker compose up -dVerifique que todos los contenedores estén en estado
running:docker compose psLa aplicación web escucha en el puerto
3000, el servidor de medios en3456, MinIO en3902(API) y3903(consola). Consulte los logs si un servicio permanece enrestarting:docker compose logs cap-web --tail 50Configurar el proxy inverso HTTPS con Caddy
Caddy es la solución más directa: gestiona los certificados Let's Encrypt automáticamente. Cree un archivo
/etc/caddy/Caddyfileo añada un bloque a su configuración existente:cap.your-domain.com { reverse_proxy localhost:3000 }Recargue Caddy:
systemctl reload caddySi usa Nginx, cree un vhost con
proxy_pass http://127.0.0.1:3000;y obtenga un certificado concertbot --nginx -d cap.your-domain.com.Primer inicio de sesión y creación de cuenta de administrador
Abra
https://cap.your-domain.comen su navegador. Cap le pide crear una cuenta introduciendo su dirección de correo electrónico. Si no configuró SMTP, recupere el enlace de inicio de sesión de los logs:docker compose logs cap-web 2>&1 | grep -i 'signin\|magic\|link'Copie la URL mostrada y péguela en su navegador para iniciar sesión. La primera cuenta creada se convierte en administrador de la instancia.
Configurar almacenamiento S3 externo (recomendado para producción)
MinIO integrado es adecuado para pruebas, pero para producción prefiera un bucket S3 externo (AWS S3, Cloudflare R2 o Backblaze B2). En la configuración de la instancia Cap (sección Storage), rellene:
- Access Key y Secret Key de su proveedor
- Bucket name y Region
- Public URL del bucket (para los enlaces de compartición)Actualice las variables
CAP_AWS_*en su.envy reinicie el servicio:docker compose up -d cap-webInvitar al equipo y probar una grabación
Desde el panel de Cap, invite a sus colaboradores por correo electrónico. Cada miembro instala la aplicación de escritorio Cap (macOS, Windows) o usa la extensión del navegador, y apunta a la URL de su instancia en la configuración (campo "Custom server"). Haga una grabación de prueba y verifique que el vídeo aparece en el panel y que el enlace de compartición es accesible desde un navegador externo.
Hardening tras el despliegue
Antes de invitar a clientes a visualizar vídeos, verifique estos cuatro puntos:
1. Secretos por defecto reemplazados — NEXTAUTH_SECRET, DATABASE_ENCRYPTION_KEY y MEDIA_SERVER_WEBHOOK_SECRET no deben ser los del repositorio. openssl rand -hex 32 genera un valor sólido.
2. MinIO no expuesto públicamente — los puertos 3902 y 3903 solo deben ser accesibles desde el proxy inverso. Añada 127.0.0.1:3902:9000 en docker-compose.yml para vincular el puerto únicamente a localhost.
3. Actualizaciones automáticas desactivadas por defecto — Cap no se actualiza solo. Programe un docker compose pull && docker compose up -d mensual, precedido de un snapshot del volumen MySQL.
4. Copias de seguridad de la base MySQL — un mysqldump diario es suficiente para los metadatos (los vídeos están en MinIO o S3). Ejemplo con cron: 0 2 * * * docker exec ps-mysql mysqldump -u root -psu-contraseña planetscale > /backups/cap-$(date +%F).sql.
Configuración post-despliegue: dominio, almacenamiento y equipo
Una vez Cap operativo, tres ajustes hacen la instancia lista para uso de agencia:
Dominio personalizado: si usó un subdominio temporal durante el despliegue, actualice NEXTAUTH_URL y WEB_URL en .env, reinicie cap-web y actualice la entrada DNS. Los enlaces de compartición existentes siguen siendo válidos mientras redirija el subdominio antiguo.
Espacio de trabajo: Cap organiza las grabaciones en Spaces. Cree un espacio por cliente o proyecto para mantener los vídeos separados. Los invitados pueden ver sin cuenta si el enlace es público.
Cuota de almacenamiento: si almacena vídeos en MinIO local, monitorice el espacio en disco del VPS con df -h. Una grabación de Cap pesa entre 10 y 50 MB según la duración y la resolución. Considere un volumen adicional o la migración a S3 externo cuando el volumen supere varias decenas de GB.
Solución de problemas: errores frecuentes
Error: connect ECONNREFUSED 127.0.0.1:3306 — el contenedor MySQL no se ha iniciado aún o su contraseña en DATABASE_URL no coincide con la definida en el servicio ps-mysql. Verifique con docker compose logs ps-mysql y asegúrese de que MYSQL_ROOT_PASSWORD en docker-compose.yml y DATABASE_URL en .env son coherentes.
La URL de inicio de sesión no llega por correo — sin SMTP configurado, el enlace aparece solo en los logs del contenedor cap-web. Ejecute docker compose logs cap-web 2>&1 | grep http para encontrarlo.
El vídeo carga indefinidamente tras la grabación — el servidor de medios (cap-media-server) no es accesible desde cap-web. Verifique que MEDIA_SERVER_URL=http://cap-media-server:3456 está definido y que ambos servicios están en la misma red Docker (docker compose ps debe mostrar ambos como running).
El enlace de compartición devuelve un error 404 — S3_PUBLIC_ENDPOINT puede apuntar a una URL incorrecta o MinIO no es accesible externamente. Si usa MinIO local, expóngalo detrás del proxy inverso bajo una ruta dedicada (por ejemplo /s3/) o migre a un bucket S3 externo.
El cliente no puede apuntar la app de escritorio a su instancia — verifique que el campo "Custom server" en las preferencias de Cap Desktop acepta exactamente la URL pública sin barra final: https://cap.your-domain.com.
Cap en su stack de agencia self-hosted
Cap se integra de forma natural en una pila donde la captura async reemplaza las reuniones de revisión con clientes. Junto con Penpot para el diseño colaborativo y Chatwoot para el soporte al cliente, cubre los tres canales de comunicación asíncrona de una agencia sin una suscripción SaaS variable.
Si su infraestructura ya depende de herramientas de Atlassian migradas a alternativas self-hosted — Jira reemplazado por Plane, Confluence por Outline — la migración de Loom a Cap sigue la misma lógica: coste fijo, datos controlados, actualizaciones a su ritmo.
Cap sigue siendo un proyecto joven con una comunidad en rápido crecimiento. Para uso en producción hoy, la combinación Docker Compose + MinIO o S3 externo es estable. La aplicación de escritorio para macOS es la más completa; la versión para Windows es funcional.