[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"seo-verification":3,"blog-desplegar-aplicaciones-con-caprover-en-un-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-desplegar-aplicaciones-con-caprover-en-un-vps-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":143,"ctaBody":144,"ctaButton":145,"ctaUrl":146,"relatedPosts":147},33,"desplegar-aplicaciones-con-caprover-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"deployer-avec-caprover","deploy-your-applications-with-caprover-on-a-vps","انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps","Desplegar sus aplicaciones con CapRover en un VPS","Guía completa de CapRover: instalación, captain-definition, CI\u002FCD con GitHub Actions, clúster multinodo, copias de seguridad y resolución de problemas.",10,1,false,"2026-05-18T00:00:00+00:00","2026-09-09T21:41:06+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":33,"appSlug":34},"despliegue-de-aplicaciones-devops","caprover","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.",[37,41,52,55,77,80,83,86,89,98,101,140],{"type":38,"title":39,"body":40},"h2","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.",{"type":42,"title":43,"items":44},"ul","Las ventajas concretas de CapRover",[45,46,47,48,49,50,51],"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\u002FCD completo.","Actualización de CapRover desde el panel en un clic, sin tocar el servidor.",{"type":38,"title":53,"body":54},"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.",{"type":56,"title":57,"steps":58},"steps","Instalar CapRover y desplegar su primera aplicación",[59,62,65,68,71,74],{"title":60,"body":61},"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 \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock -v \u002Fcaptain:\u002Fcaptain caprover\u002Fcaprover`. 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.",{"title":63,"body":64},"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:\u002F\u002FVOTRE_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.",{"title":66,"body":67},"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:\u002F\u002Fcaptain.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.",{"title":69,"body":70},"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\": \".\u002FDockerfile\" }`. 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.",{"title":72,"body":73},"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:\u002F\u002Fmon-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.",{"title":75,"body":76},"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 `\u002Fvar\u002Flib\u002Fdocker\u002Fvolumes\u002Fcaptain--NOM_DU_VOLUME\u002F_data` en el host.",{"type":38,"title":78,"body":79},"Integrar CapRover en un pipeline CI\u002FCD 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\u002Fdeploy-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\u002F`, cree un archivo comprimido que contenga `dist\u002F` 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.",{"type":38,"title":81,"body":82},"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.",{"type":38,"title":84,"body":85},"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 `\u002Fvar\u002Flib\u002Fdocker\u002Fvolumes\u002F`; 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.",{"type":38,"title":87,"body":88},"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.",{"type":42,"title":90,"items":91},"Errores frecuentes y sus correcciones",[92,93,94,95,96,97],"**`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` \u002F `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 \u002Fswapfile && chmod 600 \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`. Para que el swap sea persistente, añada `\u002Fswapfile swap swap defaults 0 0` en `\u002Fetc\u002Ffstab`. 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:\u002F\u002FVOTRE_IP:3000`. Una vez configurado el dominio raíz en el panel, la URL de la CLI pasa a ser `https:\u002F\u002Fcaptain.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.",{"type":99,"body":100},"tip","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\u002FCD — 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\u002FPython. Active Netdata (disponible en One-Click Apps) para vigilar CPU, RAM y red desde el panel de CapRover sin herramienta externa.",{"type":102,"title":103,"headers":104,"rows":109},"comparison","CapRover frente a las alternativas PaaS de código abierto",[105,106,107,108],"Criterio","CapRover","Dokku","Coolify",[110,114,118,122,127,132,136],[111,112,113,112],"Interfaz web","Sí, completa","No (solo CLI)",[24,115,116,117],"CLI, webhook, imagen","`git push`","Git, Docker, imagen",[119,120,121,121],"Orquestación","Docker Swarm","Docker (standalone)",[123,124,125,126],"Clúster multinodo","Sí (Swarm nativo)","No","Parcial (experimental)",[128,129,130,131],"Catálogo One-Click","100+ apps","Plugins CLI","50+ plantillas",[133,134,135,134],"RAM mínima del VPS","2 GB","1 GB",[137,138,139,138],"Actualizaciones desde el panel","Sí","Mediante CLI\u002Fscript",{"type":38,"title":141,"body":142},"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\u002Fcaprover` 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.\n\nLa 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.","Elegir mi VPS Cloud","\u002Fmarketplace\u002Fdespliegue-de-aplicaciones-devops\u002Fcaprover",[148,169,183,200],{"id":149,"slug":150,"slugs":151,"title":155,"excerpt":156,"readTime":157,"views":158,"isPinned":19,"publishedAt":159,"updatedAt":160,"category":161,"categories":166,"featuredImage":29,"bgImage":30,"posterImage":168,"relatedSolution":29},234,"coolify-vs-dokploy-vs-caprover-que-paas-self-hosted-elegir",{"fr":152,"en":153,"ar":154,"es":150},"coolify-vs-dokploy-vs-caprover","coolify-vs-dokploy-vs-caprover-which-self-hosted-paas-to-choose","coolify-وdokploy-وcaprover-أي-paas-ذاتي-الاستضافة-تختار","Coolify vs Dokploy vs CapRover: comparativa PaaS","Coolify, Dokploy o CapRover: comparativa PaaS en VPS — RAM en reposo, interfaz, multiservidor, rollback y recomendación por perfil.",7,0,"2026-08-07T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},5,"Comparativas","comparatif","bg-info\u002F10 text-info",[167],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fcoolify-vs-dokploy-vs-caprover-poster.svg",{"id":170,"slug":171,"slugs":172,"title":176,"excerpt":177,"readTime":23,"views":158,"isPinned":19,"publishedAt":178,"updatedAt":160,"category":179,"categories":180,"featuredImage":29,"bgImage":30,"posterImage":182,"relatedSolution":29},34,"desplegar-aplicaciones-con-dokku-en-un-vps",{"fr":173,"en":174,"ar":175,"es":171},"deployer-avec-dokku","deploy-your-applications-with-dokku-on-a-vps","انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps","Desplegar sus aplicaciones con Dokku en un VPS","Despliegue sus apps con Dokku, el PaaS más pequeño del mercado: git push, buildpacks de Heroku y SSL automático en un VPS ligero.","2026-05-17T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[181],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"id":184,"slug":185,"slugs":186,"title":190,"excerpt":191,"readTime":192,"views":158,"isPinned":19,"publishedAt":193,"updatedAt":160,"category":194,"categories":195,"featuredImage":29,"bgImage":30,"posterImage":197,"relatedSolution":198},35,"desplegar-aplicaciones-con-portainer-en-un-vps",{"fr":187,"en":188,"ar":189,"es":185},"deployer-avec-portainer","deploy-your-applications-with-portainer-on-a-vps","انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps","Desplegar sus aplicaciones con Portainer en un VPS","Pilote Docker visualmente con Portainer en su VPS: contenedores, stacks, volúmenes y redes gestionados desde una interfaz web clara.",4,"2026-05-16T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[196],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":33,"appSlug":199},"portainer",{"id":201,"slug":202,"slugs":203,"title":207,"excerpt":208,"readTime":209,"views":158,"isPinned":19,"publishedAt":210,"updatedAt":211,"category":212,"categories":213,"featuredImage":29,"bgImage":30,"posterImage":215,"relatedSolution":29},36,"desplegar-con-easypanel",{"fr":204,"en":205,"ar":206,"es":202},"deployer-avec-easypanel","deploy-your-applications-with-easypanel-on-a-vps","انشر-تطبيقاتك-باستخدام-easypanel-على-خادم-vps","Desplegar sus aplicaciones con Easypanel en un VPS","Guía completa de Easypanel: requisitos, instalación, Traefik, TLS, bases de datos, copias de seguridad, resolución de errores y comparativa Coolify \u002F Dokploy.",9,"2026-05-15T00:00:00+00:00","2026-09-17T14:09:38+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[214],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-easypanel-poster.svg",1789665015250]