Despliegue de CapRover en un VPS: PaaS autoalojado para un despliegue sencillo de aplicaciones
TL;DR
En esta guía detallada, configuraremos paso a paso CapRover, una potente PaaS (Platform as a Service) autoalojada, en su VPS. CapRover permite automatizar el despliegue, escalado y gestión de aplicaciones web, bases de datos y microservicios, proporcionando una funcionalidad similar a Heroku o Netlify, pero bajo su control total. Aprenderá a preparar el servidor, instalar Docker y CapRover, configurar dominios, desplegar aplicaciones y configurar copias de seguridad, obteniendo total libertad y ahorro.
Desplegará una PaaS completa en su VPS, gestionada a través de una cómoda interfaz web o CLI.
Aprenderá a automatizar el despliegue de aplicaciones desde repositorios Git con soporte CI/CD.
Obtendrá certificados SSL gratuitos para todas sus aplicaciones gracias a la integración con Let's Encrypt.
Dominará los principios básicos del mantenimiento del servidor, las copias de seguridad y la resolución de problemas.
Ahorrará en servicios PaaS en la nube, manteniendo el control total sobre la infraestructura y los datos.
Qué configuramos y por qué
En el mundo moderno del desarrollo de aplicaciones, la velocidad y la simplicidad del despliegue juegan un papel clave. CapRover es una plataforma PaaS (Platform as a Service) gratuita y de código abierto que convierte su VPS o servidor dedicado en un potente entorno para el alojamiento de aplicaciones. Imagine Heroku o Netlify, pero completamente bajo su control y sin pagos mensuales por cada despliegue.
CapRover permite a los desarrolladores desplegar fácilmente cualquier aplicación web (Node.js, Python, Ruby, PHP, Go, Java y otras), sitios estáticos, bases de datos y servicios en contenedores. Proporciona todas las herramientas necesarias: SSL automático (a través de Let's Encrypt), CI/CD (integración y entrega continua), escalado, monitoreo y gestión de nombres de dominio. CapRover se basa en Docker y Nginx, lo que garantiza un alto rendimiento y flexibilidad.
En resumen, al finalizar esta guía, obtendrá una plataforma completamente configurada en la que podrá desplegar sus proyectos en cuestión de minutos. Ya no necesitará configurar manualmente Nginx, Docker Compose o Let's Encrypt para cada nueva aplicación – CapRover lo hará por usted.
Alternativas y ventajas del autoalojamiento
Existen muchas alternativas en el mercado: desde servicios PaaS en la nube totalmente gestionados (Heroku, Vercel, Render, DigitalOcean App Platform) hasta soluciones de nivel inferior, como la gestión manual de contenedores Docker o clústeres de Kubernetes. ¿Por qué elegir CapRover autoalojado en un VPS?
Control total y propiedad de los datos: Sus datos y aplicaciones residen en su propio servidor, no en el de un proveedor externo. Esto es crítico para proyectos con altos requisitos de seguridad o cumplimiento normativo.
Ahorro de costes: Los servicios PaaS en la nube pueden volverse costosos rápidamente a medida que el proyecto crece. Con CapRover, solo paga por el VPS, y el número de aplicaciones desplegadas es prácticamente ilimitado. Esto es especialmente beneficioso para desarrolladores que lanzan muchos proyectos pequeños o prototipos.
Flexibilidad: Posibilidad de instalar cualquier imagen Docker, configurar variables de entorno arbitrarias, usar sus propios archivos captain-definition para un control preciso sobre la construcción y el despliegue.
Aprendizaje y experiencia: Configurar su propia PaaS le brinda una valiosa experiencia trabajando con Docker, Linux, configuraciones de red y administración de sistemas, lo que aumenta su experiencia técnica.
Independencia del proveedor: No está atado al ecosistema de un único proveedor de la nube, lo que le da libertad de elección y migración.
Por supuesto, una solución autoalojada requiere más esfuerzo inicial y conocimientos mínimos de administración. Sin embargo, CapRover reduce significativamente esta barrera de entrada al automatizar la mayor parte de las tareas complejas.
Qué configuración de VPS se necesita para esta tarea
La elección de un VPS adecuado es crucial para el funcionamiento estable y productivo de CapRover y sus aplicaciones. Los requisitos dependen de la cantidad y complejidad de los servicios a desplegar. A continuación se presentan las recomendaciones para 2026.
Requisitos mínimos
Para una instalación básica de CapRover y la ejecución de varias aplicaciones poco exigentes (por ejemplo, un sitio estático, una pequeña API, una base de datos de prueba):
CPU: 2 vCPU. Esto es suficiente para el funcionamiento de Docker, CapRover y para manejar un tráfico bajo.
RAM: 4 GB. Docker y CapRover por sí mismos consumen una parte significativa de la memoria. 4 GB serán suficientes para varias aplicaciones ligeras de Node.js o Python.
Disco: 80 GB SSD (NVMe preferible). SSD es obligatorio para el rendimiento de Docker. 80 GB permitirán almacenar varias imágenes Docker, registros y datos de aplicaciones. Los discos NVMe aceleran significativamente las operaciones de entrada/salida.
Red: Puerto de 1 Gbit/s con tráfico ilimitado o un gran límite mensual (a partir de 1 TB). Una conexión de red estable y rápida es importante para el despliegue y la disponibilidad de las aplicaciones.
Plan de VPS recomendado para desarrollo activo y múltiples aplicaciones
Si planea usar activamente CapRover para varias aplicaciones medianas, incluyendo bases de datos, o para proyectos con tráfico moderado, considere la siguiente configuración:
CPU: 4 vCPU. Proporcionará un rendimiento suficiente durante las cargas pico y para varios procesos paralelos.
RAM: 8 GB. Permitirá alojar cómodamente varias aplicaciones, bases de datos y tener un margen para las necesidades del sistema.
Disco: 160-250 GB NVMe SSD. Espacio suficiente para una gran cantidad de imágenes Docker, registros voluminosos y datos de aplicaciones escalables. NVMe mejorará significativamente la capacidad de respuesta general del sistema.
Red: Puerto de 1 Gbit/s con tráfico ilimitado.
Para alquilar un VPS con las características indicadas, puede considerar un VPS con estas características de un proveedor fiable.
Cuándo se necesita un servidor dedicado y no un VPS
Un servidor dedicado (dedicated server) se vuelve necesario cuando:
Alto rendimiento: Sus aplicaciones requieren el máximo rendimiento de CPU, RAM o I/O, que un VPS no puede garantizar debido a la virtualización y los "vecinos ruidosos".
Gran número de aplicaciones/usuarios: Planea alojar decenas de aplicaciones, atender a miles de usuarios simultáneos o trabajar con volúmenes de datos muy grandes.
Requisitos de hardware específicos: Necesita componentes de hardware especializados (por ejemplo, GPU para aprendizaje automático, controladores RAID para una mayor fiabilidad del subsistema de disco).
Requisitos estrictos de seguridad/cumplimiento: Para algunas industrias o tipos de datos, se requiere un control físico total sobre el hardware.
En la mayoría de los casos, para empezar a trabajar con CapRover e incluso para muchos proyectos de producción, un VPS potente será más que suficiente y económicamente ventajoso. Si ha alcanzado los límites de su VPS, siempre puede migrar a un servidor dedicado adecuado.
Ubicación del VPS: qué factores influye
La elección de la ubicación geográfica del VPS influye en varios factores clave:
Latencia (Latency): Cuanto más cerca esté el servidor de su audiencia objetivo, menor será la latencia y más rápido se cargarán las páginas para los usuarios.
Legislación y privacidad: Las leyes de almacenamiento de datos y privacidad pueden variar mucho entre países. Elija una ubicación que cumpla con sus requisitos y los de su proyecto.
Ancho de banda y peering: Algunas ubicaciones tienen una mejor conexión de red con ciertas regiones del mundo. Consulte al proveedor para obtener información sobre el peering.
Costo: Los precios de los VPS pueden variar según la ubicación debido a las diferencias en los costos de electricidad, infraestructura e impuestos.
Generalmente se recomienda elegir una ubicación lo más cercana posible a la mayoría de sus usuarios.
Preparación del servidor
Después de obtener acceso a su nuevo VPS (asumiendo que es Ubuntu Server 24.04 LTS), es necesario realizar una serie de configuraciones básicas para mejorar la seguridad y la comodidad de uso.
1. Conexión al servidor
Primero, conéctese al servidor por SSH, utilizando las credenciales proporcionadas por su proveedor de VPS (normalmente el usuario root y una contraseña).
ssh root@ВАШ_IP_АДРЕС_VPS
Si es la primera conexión, es posible que se le pida que confirme la huella digital de la clave RSA.
2. Actualización del sistema
Siempre comience actualizando la lista de paquetes e instalando todas las actualizaciones disponibles. Esto garantiza que tendrá las versiones más recientes de las utilidades del sistema y los parches de seguridad.
sudo apt update && sudo apt upgrade -y
Este comando actualizará la caché de paquetes e instalará todas las actualizaciones disponibles sin solicitar confirmación.
3. Creación de un nuevo usuario con permisos sudo
Trabajar como usuario root no es seguro. Cree un nuevo usuario para el trabajo diario y otórguele permisos sudo.
# Reemplace 'deployuser' con el nombre de usuario deseado
adduser deployuser
Siga las instrucciones para establecer una contraseña y completar la información del usuario (puede dejarla en blanco). Luego, agregue el nuevo usuario al grupo sudo:
usermod -aG sudo deployuser
Ahora puede cambiar al nuevo usuario y continuar trabajando:
su - deployuser
O, mejor aún, abra una nueva conexión SSH con el nuevo usuario para asegurarse de que todo funciona:
exit
ssh deployuser@ВАШ_IP_АДРЕС_VPS
4. Configuración de la autenticación por claves SSH (recomendado)
La autenticación por claves SSH es mucho más segura que por contraseña. Si aún no tiene una clave SSH, genérela en su máquina local:
# En su máquina local
ssh-keygen -t ed25519 -C "ваш[email protected]"
Luego, copie la clave pública al servidor:
# En su máquina local
ssh-copy-id deployuser@ВАШ_IP_АДРЕС_VPS
Si ssh-copy-id no está disponible, puede hacerlo manualmente:
# En su máquina local
cat ~/.ssh/id_ed25519.pub
# Copie la salida, luego en el servidor:
ssh deployuser@ВАШ_IP_АДРЕС_VPS
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# Pegue la clave copiada y guarde el archivo (Ctrl+X, Y, Enter)
chmod 600 ~/.ssh/authorized_keys
exit
Después de configurar las claves con éxito, desactive la autenticación por contraseña para root y para deployuser (si desea excluir completamente el acceso por contraseña). Edite el archivo /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Encuentre y modifique las siguientes líneas (o agréguelas si no existen):
# Deshabilitar el inicio de sesión para root por contraseña
PermitRootLogin prohibit-password
# Deshabilitar el inicio de sesión por contraseña para todos los usuarios
PasswordAuthentication no
Reinicie el servicio SSH:
sudo systemctl restart sshd
IMPORTANTE: Asegúrese de poder iniciar sesión con la clave SSH antes de deshabilitar la autenticación por contraseña. De lo contrario, corre el riesgo de perder el acceso al servidor.
5. Configuración del firewall (UFW)
El firewall UFW (Uncomplicated Firewall) es fácil de configurar y mejora significativamente la seguridad. Permita solo los puertos necesarios.
sudo apt install ufw -y # Instalación de UFW
sudo ufw allow OpenSSH # Permitir SSH (puerto 22)
sudo ufw allow http # Permitir HTTP (puerto 80)
sudo ufw allow https # Permitir HTTPS (puerto 443)
sudo ufw enable # Habilitar el firewall
sudo ufw status # Verificar el estado
CapRover utilizará los puertos 80 y 443 para servir aplicaciones, por lo que es necesario abrirlos. El puerto 3000 se utilizará temporalmente para la configuración inicial de la interfaz de usuario de CapRover, pero CapRover reconfigurará Nginx a 80/443 automáticamente después de configurar el dominio.
6. Instalación de Fail2ban
Fail2ban protege el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se producen demasiados intentos fallidos de inicio de sesión.
La configuración básica de Fail2ban ya funciona "de fábrica" para SSH. Para una configuración más detallada, puede copiar y editar el archivo /etc/fail2ban/jail.conf en /etc/fail2ban/jail.local.
Puede cambiar bantime (tiempo de bloqueo) o maxretry (número de intentos fallidos) en la sección [DEFAULT].
Después de estos pasos, su servidor estará listo para la instalación de CapRover.
Instalación de software — paso a paso
CapRover está completamente basado en Docker, por lo que el primer paso será instalar Docker Engine. También necesitaremos Node.js y npm para instalar CapRover CLI.
1. Instalación de Docker Engine
Para instalar la versión actual de Docker Engine (presumiblemente Docker Engine 25.x o 26.x en 2026), utilizaremos el script de instalación oficial de Docker. Esto garantiza la obtención de la última versión estable.
# Actualizar la lista de paquetes
sudo apt update
# Instalar los paquetes necesarios para usar HTTPS en apt
sudo apt install ca-certificates curl gnupg -y
# Añadir la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Añadir el repositorio de Docker a sources.list
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Actualizar la lista de paquetes teniendo en cuenta el nuevo repositorio de Docker
sudo apt update
# Instalar Docker Engine, containerd y Docker Compose
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Después de la instalación, agregue su usuario al grupo docker para ejecutar comandos de Docker sin sudo:
# Reemplace 'deployuser' con su nombre de usuario
sudo usermod -aG docker deployuser
# Para que los cambios surtan efecto, salga y vuelva a iniciar sesión, o reinicie la sesión
# Por ejemplo, simplemente puede salir de SSH y volver a conectarse
exit
ssh deployuser@ВАШ_IP_АДРЕС_VPS
Verifique que Docker esté instalado correctamente:
docker run hello-world
Debería ver el mensaje "Hello from Docker!".
2. Instalación de Node.js y npm
CapRover CLI (captain) está escrito en Node.js, por lo que necesitaremos Node.js y el gestor de paquetes npm. Utilizaremos la versión LTS actual de Node.js (presumiblemente Node.js 20.x o 22.x en 2026).
# Instalar Node.js LTS (por ejemplo, 20.x, o una LTS más reciente, actual para 2026)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
Verifique la instalación de Node.js y npm:
node -v # Debería mostrar v20.x.x o v22.x.x
npm -v # Debería mostrar la versión de npm
3. Instalación de CapRover CLI (captain)
Ahora que Node.js y npm están instalados, puede instalar la herramienta CLI global de CapRover.
sudo npm install -g caprover
Verifique la instalación de la CLI:
captain --version
Debería ver el número de versión de CapRover CLI.
4. Despliegue del servidor CapRover
El componente principal de CapRover es un contenedor Docker que gestiona toda la infraestructura PaaS. Vamos a iniciarlo.
# Inicio del contenedor CapRover
# -p 80:80, -p 443:443: Abrimos los puertos HTTP/HTTPS para las aplicaciones
# -p 3000:80: Abrimos temporalmente el puerto 3000 para acceder a la UI de CapRover (dentro del contenedor en el puerto 80)
# -v /var/run/docker.sock:/var/run/docker.sock: Permitimos que CapRover gestione Docker en el host
# -v /var/caprover:/var/caprover: Guardamos los datos de CapRover en el host para persistencia
# caprover/caprover: Usamos la imagen oficial de Docker de CapRover
sudo docker run -p 80:80 -p 443:443 -p 3000:80 -v /var/run/docker.sock:/var/run/docker.sock -v /var/caprover:/var/caprover caprover/caprover
Este comando iniciará CapRover en segundo plano. Si desea que el contenedor se reinicie automáticamente al reiniciar el servidor, agregue el flag --restart always:
# Primero, detenga el contenedor anterior si se inició sin --restart always
# sudo docker ps -a
# sudo docker stop
# sudo docker rm
# Luego, inicie con --restart always
sudo docker run -p 80:80 -p 443:443 -p 3000:80 -v /var/run/docker.sock:/var/run/docker.sock -v /var/caprover:/var/caprover --restart always --name caprover-main caprover/caprover
Asegúrese de que el contenedor CapRover esté en ejecución:
docker ps
Debería ver el contenedor caprover/caprover en la lista de contenedores en ejecución.
5. Configuración de DNS
Para que CapRover funcione, necesitará un nombre de dominio (por ejemplo, mydomain.com) y un subdominio para CapRover mismo (por ejemplo, captain.mydomain.com), así como un subdominio wildcard para sus aplicaciones (.mydomain.com). Vaya al panel de control de su registrador de dominios o proveedor de DNS y cree los siguientes registros:
Registro A:
Host: @ (o mydomain.com)
Valor: ВАШ_IP_АДРЕС_VPS
Registro A:
Host: captain
Valor: ВАШ_IP_АДРЕС_VPS
Registro A:
Host:
Valor: ВАШ_IP_АДРЕС_VPS
La propagación de los registros DNS puede tardar desde unos minutos hasta varias horas. Puede verificar el estado de la propagación utilizando herramientas en línea como dnschecker.org.
En este punto, los componentes principales están instalados. Ahora pasemos a la configuración de CapRover a través de su interfaz web.
Configuración
Después de instalar CapRover Server y configurar el DNS, puede proceder con su configuración inicial a través de la interfaz web y luego desplegar aplicaciones.
1. Configuración inicial de la UI de CapRover
Abra un navegador web y vaya a http://SU_DIRECCIÓN_IP_VPS:3000. Verá la página de bienvenida de CapRover.
Establezca la contraseña de administrador: Al iniciar sesión por primera vez, se le pedirá que establezca una contraseña para la cuenta de administrador de CapRover. Elija una contraseña segura.
Configure el dominio de CapRover: Después de iniciar sesión en el panel de control, vaya a la sección "Cluster" (o "Configuración del clúster"). En el campo "Root Domain", introduzca su dominio principal (por ejemplo, mydomain.com). CapRover configurará automáticamente captain.mydomain.com para su panel de control.
Habilite SSL: CapRover solicitará e instalará automáticamente certificados SSL gratuitos de Let's Encrypt para su dominio raíz y todas las aplicaciones desplegadas. Asegúrese de que los registros DNS se hayan propagado completamente, de lo contrario, la obtención del certificado podría fallar.
Después de configurar correctamente el dominio y SSL, el acceso al panel de CapRover se realizará a través de https://captain.mydomain.com, y el puerto 3000 ya no se utilizará directamente (se redirigirá a 80/443).
2. Despliegue de la primera aplicación (Hello World Node.js)
Desplegaremos una aplicación simple de Node.js para demostrar el proceso.
Ejemplo de aplicación (app.js):
const http = require('http');
const hostname = '0.0.0.0'; // Escucha en todas las interfaces
const port = process.env.PORT || 3000; // Usa el puerto de la variable de entorno o 3000
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello from CapRover on ' + process.env.CAPROVER_APP_NAME + '!\n');
});
server.listen(port, hostname, () => {
console.log(Server running at http://${hostname}:${port}/);
});
Para aplicaciones Node.js simples, CapRover puede detectar automáticamente el tipo de proyecto. Si tiene un proyecto más complejo o un lenguaje diferente, puede especificar su propio Dockerfile o usar otros templateId.
Despliegue a través de la CLI:
En su máquina local, en el directorio raíz de la aplicación:
# Autorización en CapRover (requerirá la URL de CapRover y la contraseña)
captain login
# Creación de una nueva aplicación en CapRover
# Reemplace 'myapp' con el nombre de aplicación deseado
captain app create myapp
# Despliegue de la aplicación desde el directorio actual
# CapRover detectará automáticamente la configuración basándose en .captain-definition y package.json
captain deploy --appName myapp
Después de un despliegue exitoso, CapRover le proporcionará una URL para su aplicación (por ejemplo, https://myapp.mydomain.com). Se emitirá automáticamente un certificado SSL.
Despliegue a través de la UI:
Inicie sesión en el panel de CapRover en https://captain.mydomain.com.
Vaya a la sección "Apps" y haga clic en "Create New App". Introduzca el nombre de la aplicación (por ejemplo, myapp).
Vaya a la configuración de la aplicación creada. En la sección "Deployment", seleccione "Tar File" o "Upload Git Repository". Para una carpeta local, puede comprimirla en .tar o .zip y subirla. O conéctese a un repositorio Git.
Después de la carga, CapRover comenzará la construcción y el despliegue. Puede seguir el proceso en los registros de la aplicación.
3. Gestión de variables de entorno
Para configurar aplicaciones y almacenar secretos, utilice variables de entorno. Esto es más seguro que almacenar datos confidenciales en el código o en archivos de configuración.
En el panel de CapRover, en la configuración de su aplicación, vaya a la sección "Environment Variables". Aquí puede añadir pares clave-valor. Por ejemplo, para conectarse a una base de datos:
DB_HOST=my-database-service
DB_USER=admin
DB_PASSWORD=your_secret_password
Después de guardar los cambios, CapRover reiniciará su aplicación y las nuevas variables estarán disponibles. En Node.js, están disponibles a través de process.env.DB_HOST.
4. Configuración de almacenamiento persistente (Persistent Storage)
Si su aplicación necesita almacenar datos (por ejemplo, archivos subidos, datos de usuario) que no deben desaparecer al reiniciar o actualizar el contenedor, utilice los volúmenes persistentes de CapRover.
En la configuración de la aplicación, vaya a la sección "Persistent Apps". Aquí puede especificar la ruta dentro del contenedor que se montará en el almacenamiento persistente del servidor.
# Ejemplo: montaje de /app/data desde el contenedor al almacenamiento persistente
Container Path: /app/data
CapRover creará y gestionará este volumen. Los datos escritos en /app/data dentro del contenedor se conservarán incluso después de actualizar la aplicación.
5. Integración con bases de datos (One-Click Apps)
CapRover ofrece "One-Click Apps" para el despliegue rápido de servicios populares como PostgreSQL, MongoDB, Redis, MySQL. Esto simplifica significativamente la configuración de la base de datos para su aplicación.
En el panel de CapRover, vaya a la sección "One-Click Apps".
Seleccione la base de datos deseada (por ejemplo, "PostgreSQL").
Introduzca el nombre del servicio (por ejemplo, my-pg-app) y haga clic en "Deploy".
CapRover desplegará la base de datos como una aplicación separada y proporcionará variables de entorno para la conexión (por ejemplo, PG_HOST, PG_USER, PG_PASSWORD). Puede copiar estas variables y añadirlas a la configuración de su aplicación principal.
6. Verificación de la operatividad
Después de desplegar la aplicación y configurar el dominio, asegúrese de que todo funciona correctamente:
Abra la URL de su aplicación (por ejemplo, https://myapp.mydomain.com) en un navegador.
Utilice curl en el servidor para verificar la disponibilidad:
curl https://myapp.mydomain.com
Debería recibir una respuesta de su aplicación.
Verifique los registros de la aplicación a través del panel de CapRover o la CLI:
captain logs myapp
Esto ayudará a asegurar que la aplicación se inicia sin errores y procesa las solicitudes.
Verifique el estado de los contenedores Docker:
docker ps
Asegúrese de que el contenedor de su aplicación y los contenedores de CapRover estén en ejecución.
Ahora tiene un CapRover completamente funcional, capaz de alojar sus aplicaciones.
Copias de seguridad y mantenimiento
La copia de seguridad fiable y el mantenimiento regular son aspectos clave para cualquier servidor de producción. CapRover simplifica el despliegue, pero la responsabilidad de las copias de seguridad de los datos recae en usted.
Qué respaldar
Configuración de CapRover: Todas las configuraciones de CapRover, certificados SSL, información de las aplicaciones y sus variables de entorno se almacenan en el directorio /var/caprover. Este es un directorio críticamente importante para restaurar toda su PaaS.
Datos de las aplicaciones: Cualquier dato que sus aplicaciones guarden en volúmenes persistentes de CapRover (configurados en la sección "Persistent Apps"). Estos datos suelen encontrarse en subdirectorios de /var/caprover/apps o en otras ubicaciones donde se montan los volúmenes.
Bases de datos: Si utiliza One-Click Apps para bases de datos (PostgreSQL, MongoDB, etc.), sus datos también deben ser respaldados. Esto se suele hacer con utilidades específicas para cada BD (pg_dump para PostgreSQL, mongodump para MongoDB).
Archivos de configuración del servidor: Si ha realizado algún cambio crítico en los archivos del sistema (por ejemplo, /etc/ssh/sshd_config, la configuración de Nginx si lo usa directamente), también debería hacer una copia de seguridad de ellos.
Estrategia de copia de seguridad y herramientas
Para automatizar las copias de seguridad, se recomienda usar cron para programar tareas y herramientas especializadas para un almacenamiento y gestión de versiones eficientes.
Herramientas populares para copias de seguridad:
Restic: Una excelente herramienta para copias de seguridad deduplicadas y cifradas en almacenamiento en la nube (S3, Backblaze B2, SFTP).
BorgBackup: Similar a Restic, soporta deduplicación y cifrado, funciona bien con almacenamiento SSH local y remoto.
rsync: Simple y eficiente para la sincronización de archivos, pero no proporciona deduplicación o versionado "de fábrica".
Consideremos un ejemplo de script para restic, que realiza una copia de seguridad del directorio de CapRover y los datos de PostgreSQL en un almacenamiento compatible con S3. Suponemos que restic ya está instalado (sudo apt install restic -y).
#!/bin/bash
# --- Настройки бэкапа ---
# URL репозитория Restic (например, S3-совместимое хранилище)
# Замените на ваши данные
REPO="s3:s3.eu-central-1.amazonaws.com/your-caprover-backup-bucket"
# Путь к файлу с паролем Restic (создайте его с правами 600)
PASSWORD_FILE="/etc/restic/backup_password"
# Переменные окружения для S3 (если используется)
export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY"
# Имя приложения PostgreSQL (если используется One-Click App)
POSTGRES_APP_NAME="my-pg-app"
# Путь для временного дампа БД
DUMP_FILE="/tmp/caprover_pg_dump.sql"
# --- Инициализация репозитория (выполнить один раз вручную) ---
# restic init --repo $REPO --password-file $PASSWORD_FILE
# --- Бэкап конфигурации CapRover ---
echo "--- Starting CapRover config backup ($(date)) ---"
restic backup /var/caprover \
--repo $REPO \
--password-file $PASSWORD_FILE \
--tag caprover_config \
--exclude-file /etc/restic/exclude-caprover.txt \
--verbose
echo "--- CapRover config backup finished ---"
# --- Бэкап базы данных PostgreSQL (если приложение существует) ---
# Проверяем, запущен ли контейнер базы данных
if docker ps --format '{{.Names}}' | grep -q "${POSTGRES_APP_NAME}_db"; then
echo "--- Starting PostgreSQL database backup ($(date)) ---"
# Создаем дамп базы данных
docker exec "${POSTGRES_APP_NAME}_db" pg_dumpall -U postgres > "$DUMP_FILE"
# Бэкапим дамп
restic backup "$DUMP_FILE" \
--repo $REPO \
--password-file $PASSWORD_FILE \
--tag ${POSTGRES_APP_NAME}_db \
--verbose
# Удаляем временный файл дампа
rm "$DUMP_FILE"
echo "--- PostgreSQL database backup finished ---"
else
echo "PostgreSQL app ${POSTGRES_APP_NAME} not found or not running. Skipping DB backup."
fi
# --- Очистка старых снимков (политика хранения) ---
echo "--- Starting cleanup of old snapshots ($(date)) ---"
restic forget \
--repo $REPO \
--password-file $PASSWORD_FILE \
--prune \
--keep-hourly 24 \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \
--keep-yearly 1
echo "--- Cleanup finished ---"
echo "--- Backup process completed ($(date)) ---"
Cree el archivo /etc/restic/backup_password con su contraseña para Restic y establezca los permisos sudo chmod 600 /etc/restic/backup_password.
Cree el archivo /etc/restic/exclude-caprover.txt para excluir archivos innecesarios de la copia de seguridad de /var/caprover, por ejemplo, las cachés de Docker:
/var/caprover/docker-cache
Guarde este script como /usr/local/bin/caprover_backup.sh y hágalo ejecutable:
Almacenamiento en la nube: Servicios compatibles con S3 (AWS S3, DigitalOcean Spaces, Backblaze B2, MinIO) son la opción más fiable y escalable. Almacene las copias de seguridad geográficamente separadas de su VPS.
VPS separado: Puede usar un segundo VPS, menos potente, exclusivamente para almacenar copias de seguridad.
Disco local: Si no hay otras opciones, puede guardar las copias de seguridad en una partición de disco separada del VPS, pero esto no protegerá contra un fallo de todo el servidor.
Actualizaciones: rolling vs ventana de mantenimiento
Las actualizaciones regulares son importantes para la seguridad y para obtener nuevas funciones. Para CapRover y Docker se aplican diferentes enfoques:
Actualizaciones de CapRover: CapRover se puede actualizar a la última versión a través de la CLI con el comando captain update o a través de la interfaz web en la sección "Cluster" -> "Update CapRover". Esto generalmente no requiere tiempo de inactividad y es una "actualización continua" (rolling update).
Actualizaciones de Docker: Las actualizaciones de Docker Engine y Docker Compose se realizan a través del gestor de paquetes (sudo apt update && sudo apt upgrade -y). Estas actualizaciones pueden requerir el reinicio del servicio Docker, lo que provocará un breve tiempo de inactividad para todas sus aplicaciones. Planifique esto en una "ventana de mantenimiento" cuando el tráfico sea mínimo.
Actualizaciones del SO: Las actualizaciones del sistema operativo (Ubuntu) también se realizan a través de apt. Las actualizaciones importantes del kernel o de los componentes del sistema casi siempre requieren un reinicio del servidor, lo que también provoca tiempo de inactividad. Planifíquelas en una ventana de mantenimiento.
Siempre pruebe las actualizaciones en un entorno de staging, si es posible, antes de aplicarlas en un servidor de producción.
Solución de problemas + Preguntas frecuentes
Incluso con la configuración más cuidadosa, pueden surgir problemas. Esta sección le ayudará a diagnosticar y resolver los problemas más comunes, así como a responder a las preguntas frecuentes.
La interfaz de usuario de CapRover no está disponible en http://SU_DIRECCIÓN_IP_VPS:3000
Qué verificar:
Estado del contenedor de CapRover: Asegúrese de que el contenedor de CapRover esté en ejecución.
sudo docker ps -a | grep caprover/caprover
Si el contenedor no está en ejecución o está en estado "Exited", revise los registros:
sudo docker logs caprover-main # Или ID контейнера
Cortafuegos (UFW): Asegúrese de que el puerto 3000 esté abierto.
sudo ufw status verbose
Si el puerto 3000 no está permitido, agregue una regla:
sudo ufw allow 3000/tcp
Conexión de red: Verifique que su VPS sea accesible desde internet (por ejemplo, intente hacerle ping).
El despliegue de la aplicación falla
Qué verificar:
Registros de despliegue: CapRover proporciona registros detallados del proceso de construcción y despliegue. Están disponibles a través de la interfaz de usuario en la sección de la aplicación ("Logs" -> "Deployment Logs") o a través de la CLI:
captain deploy --appName myapp --log
Registros de la aplicación: Después del despliegue, si la aplicación no se inicia, revise sus registros de tiempo de ejecución.
captain logs myapp
Archivo .captain-definition: Asegúrese de que el archivo .captain-definition sea correcto y cumpla con los requisitos de su aplicación (por ejemplo, que especifique el templateId o dockerfileLines correctos).
Variables de entorno: Verifique que todas las variables de entorno necesarias estén configuradas y disponibles para la aplicación.
Recursos del servidor: Asegúrese de que el servidor tenga suficiente RAM y CPU. La falta de memoria a menudo provoca fallos al construir imágenes Docker.
El certificado SSL de Let's Encrypt no se emite o caduca
Qué verificar:
Registros DNS: La causa más común. Asegúrese de que los registros A para su dominio principal, captain.yourdomain.com y *.yourdomain.com apunten a la IP de su VPS y se hayan propagado completamente. Use dnschecker.org.
Cortafuegos: Los puertos 80 y 443 deben estar abiertos para las conexiones entrantes, ya que Let's Encrypt los utiliza para verificar la propiedad del dominio (ACME-challenge).
sudo ufw status verbose
Límites de Let's Encrypt: Si ha intentado obtener certificados con frecuencia, es posible que haya alcanzado los límites de Let's Encrypt. Espere un tiempo.
Registros de CapRover: Revise los registros del sistema de CapRover en busca de errores relacionados con ACME o Nginx.
sudo docker logs caprover-main
La aplicación funciona lentamente o falla
Qué verificar:
Recursos del VPS: Verifique la carga de la CPU, el uso de la RAM y el I/O del disco en su VPS.
htop # Для интерактивного мониторинга
df -h # Для использования диска
Registros de la aplicación: Busque errores, fugas de memoria u operaciones largas en los registros de su aplicación.
Escalado: Si la aplicación está muy cargada, intente aumentar el número de instancias de la aplicación en la configuración de CapRover.
Optimización del código: Es posible que el problema esté en el propio código de la aplicación, y no en la infraestructura.
¿Cómo conectar mi propia base de datos (no una One-Click App)?
Si su base de datos está desplegada fuera de CapRover (por ejemplo, en un servidor separado o en un servicio de nube gestionado), puede conectarse a ella utilizando variables de entorno.
En la configuración de su aplicación CapRover, en la sección "Environment Variables", agregue las variables que contengan los datos para conectarse a su BD externa (host, puerto, nombre de usuario, contraseña, nombre de la base de datos). Por ejemplo:
Luego, use estas variables en el código de su aplicación para establecer la conexión.
¿Qué configuración mínima de VPS es adecuada?
Para una instalación básica de CapRover y algunas aplicaciones poco exigentes (por ejemplo, sitios estáticos, APIs simples), un VPS con 2 vCPU, 4 GB de RAM y 80 GB de disco SSD será mínimamente adecuado. Esto será suficiente para familiarizarse con la plataforma y ejecutar proyectos pequeños. Sin embargo, para tareas más serias o varias aplicaciones activas, se recomienda aumentar los recursos.
¿Qué elegir: VPS o dedicado para esta tarea?
Para la mayoría de los usuarios, incluidos desarrolladores, fundadores individuales y equipos pequeños, un VPS será la opción óptima. Ofrece un excelente equilibrio entre costo, flexibilidad y rendimiento. Un servidor dedicado solo debe considerarse en casos de carga extremadamente alta, requisitos específicos de hardware, estrictas normas regulatorias o cuando haya alcanzado los límites de escalabilidad en el VPS más potente.
¿Cómo escalar una aplicación en CapRover?
El escalado de aplicaciones en CapRover es muy sencillo. En el panel de control de CapRover, en la configuración de su aplicación, busque la sección "Instances". Aquí puede especificar el número deseado de instancias (contenedores) de su aplicación. CapRover desplegará y gestionará automáticamente estas instancias, distribuyendo la carga entre ellas. Esto le permite aumentar fácilmente el rendimiento de su aplicación a medida que crece el tráfico.
Conclusiones y próximos pasos
Ha desplegado CapRover con éxito en su VPS, creando una PaaS autoalojada potente y flexible. Ahora tiene control total sobre su infraestructura, la capacidad de desplegar rápidamente aplicaciones, bases de datos y servicios, así como beneficiarse de las ventajas del SSL automático y CI/CD. Esto simplifica significativamente la gestión del ciclo de vida de sus proyectos, reduce los costos operativos y proporciona una valiosa experiencia en el ámbito de DevOps.
Aquí hay algunos pasos para continuar:
Explore las características adicionales de CapRover: Familiarícese con funciones como los webhooks para despliegues automáticos al hacer push a Git, la configuración de dominios personalizados para cada aplicación, la monitorización de recursos y otras One-Click Apps.
Despliegue proyectos más complejos: Intente desplegar una aplicación full-stack completa, que incluya frontend, backend y base de datos, utilizando diferentes lenguajes de programación y frameworks.
Optimización y seguridad: Considere medidas de seguridad adicionales para sus aplicaciones y servidor. Optimice la configuración de CapRover y de sus aplicaciones para mejorar el rendimiento y ahorrar recursos.
Escalado del clúster: Si un solo VPS no es suficiente, explore las capacidades de CapRover para añadir nuevos nodos (servidores) a su clúster para el escalado horizontal.
CapRover es una excelente herramienta que le permite ser independiente y eficiente en la gestión de sus proyectos web. ¡Continúe experimentando, aprendiendo y desarrollando sus habilidades!
¿Te fue útil esta guía?
Tus comentarios nos ayudan a mejorar nuestras guías.
Compartir esta publicación:
Envía esta guía a alguien a quien pueda resultarle útil.