# gitbook-start-digitalocean-merquililycony

> Despiega un libro y crea un certificado SSL

Latest version **1.4.12** (published 2016-12-21) · ISC license · 0 weekly downloads

## Install

```sh
npm install gitbook-start-digitalocean-merquililycony
pnpm add gitbook-start-digitalocean-merquililycony
yarn add gitbook-start-digitalocean-merquililycony
bun add gitbook-start-digitalocean-merquililycony
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.4.12 |
| Published | 2016-12-21 |
| First published | 2016-12-12 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Node | ^4.1.1 |
| Dependencies | 16 |
| Known vulnerabilities | 0 (+8 in 1 direct dependencies) |
| Install scripts | no |
| Author | Merquis Cruz, Constanza León, E. Liliana Camacho |
| Maintainers | sytw1617-merquililycony |

## Links

- npm: https://www.npmjs.com/package/gitbook-start-digitalocean-merquililycony
- Repository: https://github.com/alu0100536690/%20
- Homepage: https://github.com/ULL-ESIT-SYTW-1617/proyecto-sytw-16-17-merquililycony#readme
- Issues: https://github.com/ULL-ESIT-SYTW-1617/proyecto-sytw-16-17-merquililycony/issues
- npm.io page: https://npm.io/package/gitbook-start-digitalocean-merquililycony

## Dependencies (16)

- [exec](https://npm.io/package/exec.md) ^0.2.1
- [gulp](https://npm.io/package/gulp.md) ^3.9.1
- [path](https://npm.io/package/path.md) ^0.12.7
- [deasync](https://npm.io/package/deasync.md) ^0.1.9
- [replace](https://npm.io/package/replace.md) ^0.3.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^0.30.0
- [gulp-cli](https://npm.io/package/gulp-cli.md) ^1.2.2
- [gulp-ssh](https://npm.io/package/gulp-ssh.md) ^0.6.0
- [minimist](https://npm.io/package/minimist.md) ^1.2.0
- [octonode](https://npm.io/package/octonode.md) ^0.7.6
- [asyncawait](https://npm.io/package/asyncawait.md) ^1.0.6
- [gulp-shell](https://npm.io/package/gulp-shell.md) ^0.5.2
- [simple-git](https://npm.io/package/simple-git.md) ^1.59.0
- [gulp-install](https://npm.io/package/gulp-install.md) ^0.6.0
- [node-libcurl](https://npm.io/package/node-libcurl.md) ^1.0.0
- [readline-sync](https://npm.io/package/readline-sync.md) ^1.4.5

## Recent versions

- 1.4.12 (latest) — 2016-12-21
- 1.4.11 — 2016-12-21
- 1.4.10 — 2016-12-21
- 1.4.7 — 2016-12-21
- 1.4.6 — 2016-12-21
- 1.4.5 — 2016-12-21
- 1.4.4 — 2016-12-21
- 1.4.3 — 2016-12-21
- 1.4.2 — 2016-12-21
- 1.4.0 — 2016-12-21
- 1.3.18 — 2016-12-20
- 1.3.16 — 2016-12-20
- 1.3.15 — 2016-12-20
- 1.3.14 — 2016-12-20
- 1.3.13 — 2016-12-20
- … 46 more at https://npm.io/package/gitbook-start-digitalocean-merquililycony/versions

## 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/](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](./images/ima1.jpg)

# 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:


```bash
ssh root@178.62.123.244
```

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:

```bash
exit
```

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

```bash
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 **root@178.62.123.244** es el usuario y la IP de la máquina remota.

```bash
cat ~/.ssh/*.pub | ssh root@178.62.123.244 '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

```bash
ssh root@178.62.123.244
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:

```bash
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](./images/ima10.jpg)

Para completar el despliegue, ejecutamos los siguientes comandos:

```bash
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](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:

```bash
gulp deploy
gulp push
gulp deploy-update
```

![imagen](./images/ima7.jpg)



**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](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](./images/ima2.jpg)

 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](./images/ima4.jpg)

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

![imagen](./images/ima5.jpg)


# 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.

```bash
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**

```bash
ssh root@178.62.123.244
```

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**.


```bash
cd /home/letsencrypt
sudo -H ./letsencrypt-auto certonly --standalone --email info@example.com -d example.com
```

![imagen](./images/ima8.jpg)


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.


```bash
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](http://178.62.123.244:8080)

[https://equivocateyaprende.es](https://equivocateyaprende.es)

## Enlaces :

 **Enlace al campus virtual**

 * [Enunciado](https://casianorodriguezleon.gitbooks.io/ull-esit-1617/content/proyectos/sytw/)

 **Repositorio GitHuB y NPM donde se realizó el proyecto**
 
 * [Repo paquete principal nuevo-libro](https://github.com/Alu0100673647/nuevo-libro)
 * [Paquete npm nuevo-libro](https://www.npmjs.com/package/nuevo-libro-merquililycony)
 * [Repo donde se realizó despliegue Digital Ocean](https://github.com/ULL-ESIT-SYTW-1617/proyecto-sytw-16-17-merquililycony)
 * [Paquete npm plugin Digital Ocean](https://www.npmjs.com/package/gitbook-start-digitalocean-merquililycony)

 **Página de los autores**

 * [Constanza](http://alu0100673647.github.io)
 * [Merquis](http://merquis.github.io)
 * [Liliana](https://alu0100762846.github.io)

---
_Source: https://npm.io/package/gitbook-start-digitalocean-merquililycony · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
