--- title: "Cómo instalar CapRover en Ubuntu 24.04 con HTTPS" description: "Instala CapRover sobre Docker en Ubuntu 24.04, configura un dominio wildcard con HTTPS de Let's Encrypt y despliega tu primera aplicación desde un Dockerfile." category: "Aplicaciones Web Extendidas" language: es source: https://cubepath.com/es/docs/aplicaciones-web-extendidas/instalacion-y-configuracion-de-caprover-paas updated: 2026-09-25 --- # Cómo instalar CapRover en Ubuntu 24.04 con HTTPS CapRover es una plataforma PaaS de código abierto que funciona sobre Docker Swarm: te da un panel web y una CLI para desplegar aplicaciones desde un Dockerfile o una imagen, y se encarga del proxy inverso con Nginx y de los certificados de Let's Encrypt. En este tutorial instalarás CapRover en Ubuntu 24.04, le asignarás un dominio wildcard con HTTPS y desplegarás una aplicación de prueba desde tu equipo con la CLI. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor limpio con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 1 vCPU, 2 GB de RAM y 20 GB de disco. CapRover arranca con 1 GB, pero las compilaciones de imágenes se quedan cortas de memoria. - Un usuario no root con privilegios `sudo`. - Ningún servicio escuchando en los puertos 80 y 443 (ni Nginx ni Apache instalados en el sistema). - Un dominio en el que puedas crear registros DNS. En esta guía se usa `apps.tudominio.com`; sustituye `tudominio.com` por tu dominio y `IP_DEL_SERVIDOR` por la IP pública del servidor. - En tu equipo local, Node.js 18 o superior y Git, para usar la CLI de CapRover. ## Paso 1: Crear los registros DNS CapRover asigna a cada aplicación un subdominio de un dominio raíz, por lo que necesita un registro wildcard. Crea este registro en tu proveedor DNS: | Tipo | Nombre | Valor | |------|--------|-------| | A | `*.apps.tudominio.com` | `IP_DEL_SERVIDOR` | El panel quedará en `captain.apps.tudominio.com` y cada aplicación en `nombre-app.apps.tudominio.com`. Comprueba que cualquier subdominio resuelve a tu servidor: ```bash dig +short prueba123.apps.tudominio.com ``` ```output 203.0.113.10 ``` Si no obtienes la IP, espera a que se propague el registro antes de seguir: sin DNS correcto, Let's Encrypt no podrá emitir los certificados en el paso 5. ## Paso 2: Configurar el firewall CapRover necesita los puertos 80 y 443 para las aplicaciones, el 3000 para el primer acceso al panel y el 996 para su registro interno de imágenes. Permite también SSH antes de activar UFW para no perder el acceso: ```bash sudo ufw allow OpenSSH sudo ufw allow 80,443,3000,996/tcp sudo ufw enable ``` Comprueba las reglas: ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80,443,3000,996/tcp ALLOW Anywhere ... ``` Si más adelante añades nodos al clúster, abre también `2377/tcp`, `7946/tcp`, `7946/udp` y `4789/udp` entre los servidores. ## Paso 3: Instalar Docker Engine CapRover requiere Docker Engine desde el repositorio oficial de Docker (no la versión snap). Añade la clave y el repositorio: ```bash sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc ``` ```bash sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null < Importante: tras activar Force HTTPS, el puerto 3000 sigue publicado por Docker. Docker gestiona sus propias reglas de iptables, así que UFW no lo bloquea aunque borres la regla. Protege el panel con una contraseña larga y, si tu proveedor lo permite, filtra el puerto 3000 en un firewall externo. ## Paso 6: Crear una aplicación En el panel, ve a **Apps**, escribe `hola` como nombre de aplicación y pulsa **Create New App**. No marques **Has Persistent Data** para esta prueba: solo hace falta en aplicaciones que guardan datos en volúmenes, como bases de datos. Abre la aplicación `hola`, pestaña **HTTP Settings**, y pulsa **Enable HTTPS**. Como el wildcard ya apunta al servidor, CapRover obtiene el certificado para `hola.apps.tudominio.com` sin más configuración. Activa también **Force HTTPS** y guarda con **Save & Update**. ## Paso 7: Desplegar desde tu equipo con la CLI La CLI de CapRover empaqueta tu proyecto, lo sube al servidor y CapRover construye la imagen a partir del Dockerfile. En tu equipo local, instálala con npm: ```bash npm install -g caprover caprover --version ``` Crea un proyecto mínimo con Git: ```bash mkdir hola && cd hola git init ``` Crea `index.html`: ```html Hola

Hola desde CapRover

``` Crea un `Dockerfile` que sirva la página con Nginx: ```dockerfile FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html ``` Crea el archivo `captain-definition`, que le dice a CapRover cómo construir la aplicación: ```json { "schemaVersion": 2, "dockerfilePath": "./Dockerfile" } ``` La CLI despliega el contenido de la rama de Git, no los archivos sin confirmar, así que haz un commit: ```bash git add . git commit -m "Primera versión" ``` Inicia sesión en tu servidor. La CLI te pedirá la URL (`https://captain.apps.tudominio.com`), la contraseña del panel y un nombre para guardar esta conexión: ```bash caprover login ``` Despliega la aplicación. Elige el servidor, la aplicación `hola` y la rama actual cuando te lo pregunte: ```bash caprover deploy ``` Al terminar, la CLI muestra `Deployed successfully` y la URL de la aplicación. Compruébalo: ```bash curl -s https://hola.apps.tudominio.com ``` ```output Hola

Hola desde CapRover

``` La aplicación escucha en el puerto 80 del contenedor, que es el valor por defecto de **Container HTTP Port** en **HTTP Settings**. Si tu aplicación usa otro puerto (por ejemplo 3000 en Node.js), cámbialo ahí. ## Paso 8: Variables de entorno, dominio propio y despliegue continuo Las variables de entorno se definen en la pestaña **App Configs** de cada aplicación, en **Environmental Variables**. Tras guardar con **Save & Update**, CapRover reinicia el contenedor con los nuevos valores. Para servir la aplicación en un dominio propio, por ejemplo `www.tuempresa.com`: 1. Crea un registro A `www.tuempresa.com` apuntando a `IP_DEL_SERVIDOR`. 2. En **HTTP Settings** de la aplicación, añádelo en **Connect New Domain**. 3. Pulsa **Enable HTTPS** junto al dominio recién añadido. Para desplegar automáticamente con cada push a GitHub, activa **Enable App Token** en la pestaña **Deployment** de la aplicación y guarda el token como secreto `CAPROVER_APP_TOKEN` en el repositorio. Después añade este flujo de trabajo en `.github/workflows/deploy.yml`: ```yaml name: Deploy to CapRover on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Deploy uses: caprover/deploy-from-github@v1.1.2 with: server: "https://captain.apps.tudominio.com" app: hola token: "${{ secrets.CAPROVER_APP_TOKEN }}" ``` ## Solución de problemas **El despliegue falla durante la compilación.** Revisa **Deployment > View Build Logs** en el panel. Los errores más habituales son un `dockerfilePath` que no coincide con la ruta real o falta de memoria al compilar; en ese caso añade swap o usa un servidor con más RAM. **La aplicación devuelve 502 Bad Gateway.** El contenedor no escucha en el **Container HTTP Port** configurado o se está reiniciando. Consulta los logs en la pestaña **Deployment** o desde el servidor (los servicios de las aplicaciones se llaman `srv-captain--nombre-app`): ```bash sudo docker service logs srv-captain--hola --tail 50 ``` **Let's Encrypt no emite el certificado.** Comprueba que el subdominio resuelve a la IP del servidor con `dig +short hola.apps.tudominio.com` y que el puerto 80 es accesible desde Internet. Let's Encrypt limita los intentos fallidos, así que corrige el DNS antes de reintentar. ## Conclusión Tienes CapRover funcionando en Ubuntu 24.04 con un dominio wildcard, HTTPS automático y una aplicación desplegada desde tu equipo con la CLI. A partir de aquí puedes instalar bases de datos o aplicaciones completas desde **One-Click Apps**, programar copias de seguridad del directorio `/captain` y, si necesitas más capacidad, añadir nodos worker desde la sección **Cluster** del panel.