npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gitbook-start-digitalocean-merquililycony

v1.4.12

Published

Despiega un libro y crea un certificado SSL

Downloads

98

Readme

Práctica proyecto final: Nueva funcionalidad para el paquete npm

Paquete: gitbook-start-digitalocean-merquililycony

Objetivo:

El objetivo de esta práctica es extender el package NodeJS publicado en npm en una práctica anterior con una nueva *funcionalidad que permita que los usuarios realizar un despliegue automático en el servidor de Digital Ocean utilizando un dominio con certificado SSL Let's Encrypt

Paso 1: Creando una cuenta en Digital Ocean

Accedemos a https://www.digitalocean.com/ y nos creamos una cuenta. Una vez dentro hacemos click en DROPLETS para crear la configuración de la máquina. Elegimos una distribución de linux, en este caso se ha utilizado UBUNTU, a continuación elegimos la ubicación de nuestro servidor (entre más cerca de donde se encuentre nuestro público objetivo mejor) y hacemos clic en crear nuestra máquina.

imagen

Paso 2: Acceso SSH a Digital Ocean

Al crear la configuración de nuestra máquina recibiremos un email con los datos de acceso. Abrimos una consola y ejecutamos shh root@IP , en nuestro caso sería:

ssh [email protected]

Introducimos la contraseña que nos ha llegado al email, la confirmamos y luego nos pedirá nuestra nueva contraseña. El siguiente paso es configurar una clave ssh para poder acceder automáticamente a nuestro servidor sin loguearnos. Así que volvemos a nuestra máquina local con el siguiente comando:

exit

Vamos al directorio ~/.ssh de nuestra máquina local y en caso de no tener ninguna clave ejecutamos el siguiente comando:

ssh-keygen -t rsa

Por último copiamos la información de nuestra clave pública de la máquina local a nuestro servidor remoto, en este ejemplo copiaremos la información de id_dsa.pub que se encuentra en la máquina local al fichero ~/.ssh/authorized_keys de la máquina remota. Con el comando que aparece a continuación. Te en cuenta que [email protected] es el usuario y la IP de la máquina remota.

cat ~/.ssh/*.pub | ssh [email protected] 'umask 077; mkdir -p .ssh; cat >> .ssh/authorized_keys'

Paso 3: Preparando la máquina remota para correr un servidor Express

Instalamos NODEJS, NPM y GULP en nuestro servidor remoto

ssh [email protected]
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
sudo npm install --global gulp-cli

Paso 4: Crear y desplegar el libro.

Nos colocamos en nuestra máquina local con exit y ejecutamos los siguientes comandos:

exit
sudo npm install -g nuevo-libro-merquililycony
gitbook-start -d <directorio>
cd <directorio>
npm install
npm install --save gitbook-start-digitalocean-merquililycony

Entramos en el libro que hemos creado, abrimos el fichero package.json y editamos los campos de la imagen de ejemplo que se muestra a continuación con los de nuestro servidor.

  • privateKey_local: Clave privada de nuestra máquina local, la encontramos dentro del directorio ~/.ssh.
  • usuario_remoto: Nombre del usuario de la máquina remota.
  • password_remoto: Contraseña del usuario de la máquina remota.
  • ip_remoto: IP: de la máquina remota.
  • dominio_web: OPCIONAL Nombre de dominio para tu libro.
  • ruta_remoto: Ruta donde se desplegará tu libro en el servidor remoto.

imagen

Para completar el despliegue, ejecutamos los siguientes comandos:

gulp paquete-ocean
gulp deploy
gulp push
gulp deploy-digitalocean

Con esto ya podemos acceder a nuestro libro escribiendo la dirección IP de nuestra máquina en Digital Ocean. El servidor está corriendo en el puerto 8080 con http.

http://178.62.123.244:8080

NOTA: Una vez publicado el libro, si desea realizar alguna modificación sobre el mismo, debe acceder al directorio txt, actualizar sus archivos de markdown y ejecutar los siguientes comandos:

gulp deploy
gulp push
gulp deploy-update

imagen

NOTA: El paso 5 y el paso 6 es opcional. A la finalización de los mismos tendremos un nombre de dominio apuntando a nuestra máquina remota y un certificado SSL de Let's Encrypt gratis como se muestra en el siguiente enlance:

https://equivocateyaprende.es

Paso 5: Vinculando un nombre de dominio a nuestra máquina de Digital Ocean

Se vinculará un nombre de dominio a la IP de la máquina que acabamos de crear en Digital Ocean, de esta forma podemos acceder al libro tecleando el nombre del dominio, pero si deseas puedes acceder con tu dirección IP pública.

Para esto, dentro de nuestra cuenta de Digital Ocean vamos a Droplets, More, add a domain y escribimos el nombre del dominio que deseamos vincular.

imagen

Una vez añadido copiamos los NS, vamos al sitio web donde tenemos registrado nuestro dominio y lo pegamos en la zona de DNS, en mi caso he utilizado dondominio.com. Debes tener en cuenta que este proceso puede tardar hasta 24 horas ya que las DNS deben propagarse por los diversos servidores en todo el mundo.

imagen

Existen diversos portales en Internet como https://www.whatsmydns.net/ donde puedes verificar el estado de las DNS.

imagen

Paso 6: Generar un certificado SSL con Let's Encrypt.

1- Dentro de la máquina local ejecutamos el comando gulp clone-letsencrypt para clonar el directorio de Let's Encrypt en el servidor remoto.

gulp clone-letsencrypt

2- El siguiente paso será conectarnos al servidor remoto mediante SSH para generar los ciertificados, desde la terminal escribimos ssh user@ip

ssh [email protected]

Nos colocamos dentro del directorio letsencryp que clonamos en el paso anterior. Este se encuentra en la ruta donde hemos elegido realizar el despliegue, en mi caso sería /home y ejecutamos sudo -H ./letsencrypt... donde example.com será el nombre del dominio al que le vamos a generar el certificado SSL. Nos saldrá una ventana azul para que aceptemos las condiciones y si todo ha salido correcto, ya hemos generado nuestro certificado SSL.

cd /home/letsencrypt
sudo -H ./letsencrypt-auto certonly --standalone --email [email protected] -d example.com

imagen

3- Por último volvemos a la máquina local con exit y escribimos gulp start-ssl,esto creará unos enlaces simbólicos de los certificados y reiniciará el servidor.

exit
gulp start-ssl

Para acceder al libro podemos escribir tanto la dirección IP de nuestra máquina en Digital Ocean cómo el nombre de dominio. El servidor está corriendo en el puerto 8080 con http y en el puerto 443 con https.

http://178.62.123.244:8080

https://equivocateyaprende.es

Enlaces :

Enlace al campus virtual

Repositorio GitHuB y NPM donde se realizó el proyecto

Página de los autores