Comparativa

Cap, alternativa self-hosted a Loom: guía de despliegue en VPS

Comparativas9 min de lectura7 pasos

En febrero de 2026, Loom eliminó el rol Creator Lite: los equipos de 2 a 5 personas que grababan videos async cortos sin pagar el precio completo se encuentran ahora con planes a 18 $ por asiento al mes. Cap (CapSoftware/Cap, AGPL-3.0, más de 23.000 estrellas en GitHub) es una alternativa de código abierto que se auto-aloja en un VPS con Docker Compose. Esta guía explica por qué este cambio obliga a las agencias a actuar, cómo evaluar Cap y cómo desplegarlo correctamente.

Contenido· Por qué el cambio de precios de Loom obliga a las agencias a actuar1/8
  1. 01Por qué el cambio de precios de Loom obliga a las agencias a actuar
  2. 02Por qué Cap se adapta a una agencia
  3. 03Requisitos de VPS para desplegar Cap
  4. 04Desplegar Cap en su VPS
  5. 05Hardening tras el despliegue
  6. 06Configuración post-despliegue: dominio, almacenamiento y equipo
  7. 07Solución de problemas: errores frecuentes
  8. 08Cap en su stack de agencia self-hosted

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 -d desde 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

  1. 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 Cap

    El repositorio incluye un archivo docker-compose.template.yml. Cópielo como docker-compose.yml para no sobreescribir sus cambios en un futuro git pull:

    cp docker-compose.template.yml docker-compose.yml
  2. Configurar las variables de entorno

    Cree un archivo .env en la raíz a partir de la plantilla proporcionada y edite los valores críticos:

    cp .env.example .env

    Variables 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.

  3. Iniciar la pila

    Inicie los cuatro servicios en segundo plano:

    docker compose up -d

    Verifique que todos los contenedores estén en estado running:

    docker compose ps

    La aplicación web escucha en el puerto 3000, el servidor de medios en 3456, MinIO en 3902 (API) y 3903 (consola). Consulte los logs si un servicio permanece en restarting:

    docker compose logs cap-web --tail 50
  4. Configurar 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/Caddyfile o añada un bloque a su configuración existente:

    cap.your-domain.com {
        reverse_proxy localhost:3000
    }

    Recargue Caddy:

    systemctl reload caddy

    Si usa Nginx, cree un vhost con proxy_pass http://127.0.0.1:3000; y obtenga un certificado con certbot --nginx -d cap.your-domain.com.

  5. Primer inicio de sesión y creación de cuenta de administrador

    Abra https://cap.your-domain.com en 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.

  6. 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 .env y reinicie el servicio:

    docker compose up -d cap-web
  7. Invitar 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.

Su equipo auto-aloja sus herramientas de producción

Cap se despliega en minutos en un VPS de ServOrbit. Acceso root, IPv4 dedicada, Docker preconfigurado y almacenamiento NVMe para sus videos async.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva