En este tutorial te enseñare a crear tu propio servicio PaaS usando Caprover, un software open source que ofrece caracteristicas similares a plataformas de la nube como Heroku, Railway o render.com en esencia.
Caprover puede funcionar con cualquier aplicacion de cualquier lenguaje, ya que al final este lo maneja en sus propios contendores de Docker
¿Qué es Caprover?
CapRover es software que te permite crear tu propio servicio PaaS en tus propios servidores de forma rapida, simple, y sobretodo totalmente administradas por ti.
Requerimientos
Para poder hacer este tutorial es necesario cumplir con los siguientes requerimientos.
- Servidor (VPS), en mi caso para el VPS voy a usar la nube de DigitalOcean, el cual a los VPS les llama Droplets. Aunque si usas otro proveedor tambien puedes seguir los mismso pasos.
- Un Dominio, y para el dominio usaré un domino comprado en Namecheap
Creación de VPS (Droplet)
Puedes crear un droplet de digitalocean desde cero o usar el marketplace para crear un droplet con software ya instalado. en este caso escogere este ultimo buscando el termino Docker, aunque tambien esta *Caprover sin embargo como esta opcion no esta disponible en todos los servicios de la nube ire simplemente por docker al ser algo más generico.
Ademas escogere un plan de 6$ minimo. Luego podras incremetar el plan si lo requieres.
Conectate con ssh a tu servidor. el comando para conectarte lucirá así:
ssh root@206.177.96.239
Luego ya que hemos seleccionar Docker en el proceso de creacion del Droplet, vamos a comprobar la version de Docker:
docker version
configurando firewall
ufw allow 80,443,3000,996,7946,4789,2377/tcp; ufw allow 7946,4789,2377/udp;
el comando anterior se selecciona y se copia todo, sin ningun problema
Ejecutar Contenedor
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
Puede que obtengas un error, asi que necesitaras aceptar los terminos de uso:
docker run -p 80:80 -p 443:443 -p 3000:3000 -e ACCEPTED_TERMS=true -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover
Añade un wildcard a tu dominio
Primero enlaza namecheap a digitalocean, colocando en Custom DNS en namechap:
ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com
luego en Digitalocean DN, añade esto en tu dominio, apuntando al droplet de caprover.
*.something
otros wildcards pueden ser demo, app, web, etc
Instalación del CLI
Ahora configuraremos nuestro servidor de caprover. Primero intalar el CLI de caprover.
npm i -g caprover
pnpm add -g caprover
Ejecuta lo siguiente:
caprover serversetup
- docker ejecutandose? Yes
- dominio del droplet: 206.188.80.239 root domain: something.fazt.site contraseña: repite contraseña: email: test@caprover.com caprover machine name: (Default)
Nota que el root domain no es
fazt.sitesinosomething.fazt.sitedebido a que en los DNS asignamos*.something
Haz click en el link generado, para que te lleve al panel de control de tu PaaS.
Subiendo una aplicación
Ahora vamos a subir una aplicación de ejemplo en Caprover:
git clone https://github.com/fazt/books-express
Luego instalaremos algunas dependencias:
npm start
crea una aplicación en caprover:
añade un archivo llamado captain-definition en el root de tu proyecto:
{
"schemaVersion": 2,
"templateId": "node/17.9.1"
}
ejecuta un commit.
para casos mas compljos puedes crear un contendor en cualquier lenguaje java, c#, nodje, etc.
ejecuta luego:
caprover deploy
selecciona la maquina de caprover por defecto, luego selecciona tu app.
Habilitar SSL
para habilitar SSL puedes usar, simplemente puedes ir a tu aplicacion y dar un click en Enable HTTPS
Tambien puedes forzar la redireccion a HTTPS desde la misma ventana.
One Click Apps
tambien es posible instalar programas simplemente buscandolos en su marketplace. Por ejemplo simplemente busca Wordpress y coloca las credenciales tipicas.
Monitorizacion
Finalmente veremos como añadir Monitorizacion a nuestras aplicaciones.