Guía de despliegue

Desplegar sus aplicaciones con CapRover en un VPS

Desplegar en un VPS Cloud →

Tutorial

Desplegar sus aplicaciones con CapRover en un VPS

Despliegue10 min de lectura6 pasos

CapRover es un PaaS de código abierto que convierte un VPS Ubuntu en una plataforma de despliegue autónoma: despliegues mediante `git push` o desde la CLI, SSL Let's Encrypt automático y catálogo de aplicaciones en un clic. Esta guía va más allá de la instalación básica — cubre el formato `captain-definition` v2, la integración con GitHub Actions, el paso a un clúster multinodo y la resolución de los errores más habituales reportados en las issues de CapRover.

Contenido· Por qué elegir CapRover en lugar de un PaaS en la nube1/11
  1. 01Por qué elegir CapRover en lugar de un PaaS en la nube
  2. 02Las ventajas concretas de CapRover
  3. 03Requisitos de hardware y de red
  4. 04Instalar CapRover y desplegar su primera aplicación
  5. 05Integrar CapRover en un pipeline CI/CD de GitHub Actions
  6. 06Pasar a un clúster multinodo con Docker Swarm
  7. 07Hacer copias de seguridad de su instancia CapRover
  8. 08Resolución de problemas: los errores más habituales
  9. 09Errores frecuentes y sus correcciones
  10. 10CapRover frente a las alternativas PaaS de código abierto
  11. 11Desplegar CapRover en un clic desde el Marketplace de ServOrbit

Por qué elegir CapRover en lugar de un PaaS en la nube

Desplegar en un VPS sin preparar obliga a configurar manualmente Nginx, los certificados TLS, Docker y los reinicios en cada release. CapRover elimina esa fricción: se apoya en Docker Swarm para orquestar sus contenedores, genera los certificados Let's Encrypt y ofrece un despliegue mediante git push o con una imagen Docker precompilada. Su catálogo «One-Click Apps» cubre WordPress, PostgreSQL, Redis, MongoDB, Ghost y más de un centenar de servicios adicionales, cada uno en su propio contenedor. Donde Heroku o Render facturan por dyno o por hora de cómputo, CapRover funciona en su VPS al precio fijo mensual de su servidor — es la opción natural para los desarrolladores y las agencias que quieren la productividad de un PaaS sin sufrir su factura variable.

Las ventajas concretas de CapRover

  • Despliegue mediante git push o caprover deploy sin reconfigurar el servidor en cada release.
  • SSL Let's Encrypt automático y renovado para cada dominio y subdominio de aplicación.
  • Catálogo One-Click: más de 100 servicios (bases de datos, CMS, herramientas DevOps) en unos pocos clics.
  • Escalado horizontal nativo mediante Docker Swarm: añada nodos worker sobre la marcha sin modificar sus aplicaciones.
  • Interfaz web con logs en directo, variables de entorno, persistencia de datos y monitorización con Netdata.
  • Webhooks de compilación integrables con GitHub Actions, GitLab CI o Bitbucket para un CI/CD completo.
  • Actualización de CapRover desde el panel en un clic, sin tocar el servidor.

Requisitos de hardware y de red

CapRover reserva RAM para Docker Swarm y para su motor de compilación. Un VPS de 2 GB de RAM y 1 vCPU basta para proyectos personales y algunas aplicaciones pequeñas; suba a 4 GB de RAM y 2 vCPU en cuanto aloje varias aplicaciones con sus bases de datos. Prevea 30 GB de SSD como mínimo, porque cada compilación Docker consume espacio temporal. Se recomienda encarecidamente un dominio wildcard — por ejemplo *.apps.votredomaine.com — para que CapRover genere subdominios sobre la marcha para cada aplicación. Los puertos 80, 443 y 3000 (panel de administración) deben estar abiertos. Desde la versión 1.14, CapRover requiere Docker con una versión de API 1.43 como mínimo; la versión 1.14.1 corrige un problema de compatibilidad introducido por Docker v29, que había elevado ese mínimo a 1.44. Compruebe su versión con docker version | grep API antes de cualquier actualización.

Instalar CapRover y desplegar su primera aplicación

  1. Lanzar la instalación con un solo comando

    En un Ubuntu limpio y sin Docker preinstalado, ejecute docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover. CapRover inicializa Docker Swarm y arranca su panel de administración en el puerto 3000. La imagen Docker lo instala todo automáticamente — no hay ninguna dependencia que preinstalar.

  2. Configurar el dominio wildcard

    Cree un registro DNS de tipo A wildcard que apunte *.apps.votredomaine.com a la IP de su VPS. En el panel de administración (http://VOTRE_IP:3000), indique ese dominio raíz. CapRover lo utiliza como sufijo para todas sus aplicaciones y activa HTTPS mediante Let's Encrypt en un clic.

  3. Instalar la CLI e iniciar sesión

    En su equipo de desarrollo: npm install -g caprover y después caprover login. Indique la URL https://captain.apps.votredomaine.com y la contraseña definida en el paso anterior. La CLI memoriza la conexión para los despliegues siguientes. Si ha activado la autenticación de dos factores, utilice un token de aplicación en lugar de la contraseña.

  4. Preparar el archivo captain-definition

    Añada un archivo captain-definition en la raíz de su proyecto. El formato v2 (recomendado) se reduce a dos líneas: { "schemaVersion": 2, "dockerfilePath": "./Dockerfile" }. Para desplegar una imagen Docker precompilada en lugar de compilar desde el código fuente, sustituya dockerfilePath por "imageName": "votre-image:tag". El formato v1 con dockerfileLines sigue soportado, pero se considera legacy.

  5. Crear la aplicación y desplegar

    En el panel, cree una aplicación llamada mon-api. Después, desde su repositorio Git: caprover deploy. CapRover construye la imagen según su captain-definition, la envía a Docker Swarm y expone la aplicación en https://mon-api.apps.votredomaine.com. Para un despliegue sin cortes, CapRover conmuta el tráfico solo después de que el nuevo contenedor responda a los health checks.

  6. Añadir una base de datos y persistir los datos

    Desde la pestaña One-Click Apps, instale PostgreSQL. CapRover crea la base de datos en un contenedor dedicado y genera las variables de entorno (POSTGRES_PASSWORD, POSTGRES_HOST…). Vincule su aplicación mediante esas variables en la pestaña «App Configs» y active después un Persistent Directory en la pestaña homónima para que los datos sobrevivan a los redespliegues. Los volúmenes se almacenan en /var/lib/docker/volumes/captain--NOM_DU_VOLUME/_data en el host.

Integrar CapRover en un pipeline CI/CD de GitHub Actions

CapRover expone un webhook de compilación por aplicación, accesible en la pestaña «Deployment» de cada app. Ese webhook desencadena un despliegue completo en cada llamada HTTP POST. Para integrarlo con GitHub Actions, guarde tres secretos en su repositorio: CAPROVER_SERVER (la URL de su instancia), APP_NAME (el nombre de la aplicación en CapRover) y APP_TOKEN (el token de despliegue que se muestra en la pestaña Deployment). Hay una acción oficial disponible en el GitHub Marketplace (caprover/deploy-from-github): se encarga de construir el tar de despliegue y de enviarlo a CapRover en un solo paso. Ejemplo de job mínimo: después de un npm run build que produce una carpeta dist/, cree un archivo comprimido que contenga dist/ y su captain-definition, y a continuación invoque la acción con sus tres secretos. La combinación de webhook y GitHub Actions sustituye con ventaja a la CLI local en los equipos: un push a main desencadena un despliegue automático y ninguna clave de acceso al servidor circula entre los desarrolladores.

Pasar a un clúster multinodo con Docker Swarm

CapRover se apoya de forma nativa en Docker Swarm: añadir capacidad se hace desde el panel sin reconfigurar sus aplicaciones. En el menú «Cluster», introduzca la IP del nuevo nodo, la clave SSH root asociada y la IP de su nodo maestro tal como se ve desde ese nuevo nodo. CapRover instala Docker en el destino y lo integra en el Swarm. Una restricción importante: el clúster necesita un registro Docker privado configurado por defecto, porque el nodo maestro debe poder enviar las imágenes construidas a los nodos worker. CapRover propone desplegar uno automáticamente. Otra restricción que conviene conocer: las aplicaciones con un Persistent Directory activado solo pueden ejecutarse en un único nodo (Docker Swarm no comparte los volúmenes de archivos entre hosts). Para escalar una aplicación con estado, opte por una base de datos externa o por un servicio de almacenamiento de objetos.

Hacer copias de seguridad de su instancia CapRover

CapRover ofrece una copia de seguridad nativa desde el panel: «Settings → Export Backup». El archivo generado contiene la configuración de todas sus aplicaciones, las variables de entorno y los parámetros de Nginx. No contiene los datos de los volúmenes persistentes. Para respaldar una base de datos PostgreSQL alojada mediante One-Click, el método recomendado es un pg_dump planificado con cron, con archivado hacia un almacenamiento externo. Los volúmenes Docker están accesibles en /var/lib/docker/volumes/; una copia de esas carpetas, con la base de datos detenida, constituye una copia de seguridad de bajo nivel. Pruebe siempre la restauración en un VPS de staging antes de confiar en una copia de seguridad en producción.

Resolución de problemas: los errores más habituales

Estos son los mensajes de error realmente encontrados en las issues de GitHub y en los foros de CapRover, con sus causas y sus correcciones.

Errores frecuentes y sus correcciones

  • 502 Bad Gateway en el panel o en una aplicación después del despliegue. Causa más frecuente: la aplicación no se enlaza al puerto correcto. Compruebe el campo containerHttpPort en App Configs (debe corresponder al puerto en el que escucha su aplicación). En las aplicaciones que arrancan despacio, CapRover puede activar el contenedor antes de que esté listo: aumente el plazo del health check o añada un archivo CHECKS en la raíz del proyecto. Si el 502 afecta al panel en sí después de reiniciar el VPS, espere 60 segundos — el servicio captain-captain se reinicializa al arrancar.
  • App build failed / Build took too long. El builder de Docker fue eliminado por el OOM killer (memoria insuficiente). Añada 2 GB de swap: fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile. Para que el swap sea persistente, añada /swapfile swap swap defaults 0 0 en /etc/fstab. En una compilación Node.js, pase NODE_OPTIONS=--max-old-space-size=512 en las variables de entorno para limitar la huella de memoria.
  • Error: minimum supported Docker API is 1.43 (o 1.44). Docker v29 elevó el mínimo requerido y rompió las instancias de CapRover anteriores a la 1.14.1. Actualice CapRover desde el panel (Settings → Check for Updates) antes de actualizar Docker o, a la inversa, actualice CapRover primero si Docker ya está en v29.
  • Verification Failed durante la configuración del SSL. Los registros DNS aún no se han propagado, o el puerto 80 está bloqueado por un cortafuegos. Compruebe la apertura de los puertos con ufw status y espere la propagación DNS con dig +short *.apps.votredomaine.com. Cloudflare en modo proxy naranja bloquea Let's Encrypt en HTTP-01: ponga el DNS en gris (DNS-only) durante la generación del certificado, o utilice un certificado wildcard en DNS-01.
  • caprover login falla con ECONNREFUSED. El puerto 3000 no es accesible desde su equipo. Compruebe ufw allow 3000 en el servidor. Si todavía no tiene un dominio captain configurado, apunte directamente a la IP: http://VOTRE_IP:3000. Una vez configurado el dominio raíz en el panel, la URL de la CLI pasa a ser https://captain.apps.votredomaine.com.
  • Despliegue desde GitHub en bucle infinito (restart loop). Causado por un captain-definition ausente o mal formado, o por un Dockerfile que no termina correctamente. Compruebe los logs de la compilación desde el panel o con docker service logs captain--mon-app. Un CMD ausente en el Dockerfile hace que el contenedor salga de inmediato, algo que CapRover interpreta como un fallo.

Asegure el puerto 3000 limitándolo a su IP fija: ufw allow from VOTRE_IP to any port 3000 && ufw deny 3000. Active la autenticación de dos factores en el panel (Settings → Two-Factor Auth) y genere un token de aplicación por proyecto para el CI/CD — nunca la contraseña de administrador en una variable de GitHub. Para las compilaciones que consumen mucha RAM, dimensione primero el swap en lugar de subir de plan: 2 GB de swap en un VPS de 2 GB de RAM bastan para la mayoría de los stacks Node/Python. Active Netdata (disponible en One-Click Apps) para vigilar CPU, RAM y red desde el panel de CapRover sin herramienta externa.

CapRover frente a las alternativas PaaS de código abierto

Desplace la tabla

CriterioCapRoverDokkuCoolify
Interfaz webSí, completaNo (solo CLI)Sí, completa
DespliegueCLI, webhook, imagen`git push`Git, Docker, imagen
OrquestaciónDocker SwarmDocker (standalone)Docker (standalone)
Clúster multinodoSí (Swarm nativo)NoParcial (experimental)
Catálogo One-Click100+ appsPlugins CLI50+ plantillas
RAM mínima del VPS2 GB1 GB2 GB
Actualizaciones desde el panelMediante CLI/script

Desplegar CapRover en un clic desde el Marketplace de ServOrbit

ServOrbit ofrece CapRover directamente en su Marketplace: un VPS Ubuntu 24.04 con Docker preinstalado, Docker Swarm inicializado y el contenedor caprover/caprover arrancado en menos de 60 segundos. Desde tu panel, abre Marketplace → Despliegue → CapRover, haz clic en Desplegar, y el panel de administración responde en el puerto 3000 en cuanto finaliza el aprovisionamiento.

La contraseña de inicio de sesión por defecto es captain42 — cámbiala inmediatamente en Ajustes → Captain Settings. La configuración del dominio comodín (necesario para las apps desplegadas mediante CapRover) se hace desde el mismo panel, en pocos clics.

Lance su PaaS CapRover hoy mismo

Con un VPS Cloud de ServOrbit dispone de un Ubuntu limpio, de un dominio wildcard configurable y de los recursos necesarios para ejecutar CapRover y todas sus aplicaciones.

¿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