Proxy Inversor-Let’s Encrypt

Alojamiento

Prologo: (En esta ocasión describiré la instalación de un sitio-web en un VPS y usando Docker-Compose; con dos instancias, la primera instancia en de un sitio-WordPress, y la segunda instancia con un Proxy-Reverso como intermediario de todas las solicitudes web de todos los clientes del sitio-Web).

 

Nginx Proxy- Let’s Encrypt

Que disponemos en el Server-VPS

-. ¡Requisitos del entorno! Sistema operativo Ubuntu-Server-20.04 y tener instalado Docker y Docker-Compose y comprobada su funcionalidad.

Red-Externa

. Necesitamos crear una Red-Externa fuera de Docker-Compose y conectar nuestro contenedor Nginx-Proxy a esta Red-Externa y necesitamos definir esta Red-Externa en docker-compose.yml de esta manera, Docker-Compose asigna los contenedores que crea a esta Red-Externa.

Creamos Red-Externa:

  • In: root@ubuntu:/# docker network create red-externa

Listar Network Docker:

  • In: root@ubuntu:/# docker network ls
  • 740106ef93f2 red-externa bridge local

Inspeccionar configuración de una red determinada:

  • In: root@ubuntu:/# docker network inspect red-externa

Creamos la arquitectura de carpetas, ficheros:

  • In: root@ubuntu:/# mkdir Moreluz-ia && cd Moreluz-ia
  • In: root@ubuntu:/Moreluz-ia# mkdir Proxy-Inverso && mkdir Sitios-Web
  • In: root@ubuntu:/Moreluz-ia# ls
  • Proxy-Inverso Sitios-Web

Nota: Antes de pasar a las creación de las instancias del proyecto un diagrama de este, y dejar algunos conceptos claros.

Que es ProxyInversor “reverse proxy”:

  • El servidor Proxy-inverso se situado entre el cliente y el Servidor-Web-VPS, la solicitudes van al Proxy-Inverso y este enviá esta al solicitud al Sitio-Web. El Proxy-Inverso se ubica dentro del VPS y al lado del los sitios-Web que tengamos, para que éste actúe como intermediario de todas las solicitudes web de los clientes.

Que es Let’s Encrypt:

  • Let’s Encrypt-ssl proporciona certificados gratuitos para el cifrado de Seguridad de Capa-Transporte, por medio de un proceso automatizado diseñado para eliminar el complejo proceso actual de creación manual, la validación, firma, instalación y renovación de los certificados de Sitios-Web seguros el objetivo es conseguir conexiones cifradas a World Wide Web, elimina el pago y tareas de renovación del certificado.

 

Proxy-Inverso

– . Esta instancia costa de dos servicios el primero de estosProxy-Inversoesta basado en la image: jwilder/nginx-proxy, exponemos los puertos 80 y 443 estos puertos se reenvían al host, los contenedores que crearemos en este proyecto el único que tendrá salida al exterior “Internet” sera el el contenedor nginx-proxy. ¡Como se realiza esto! Con el volumen: /var/run/docker.sock esto permite que el nginx-proxy sea sensible a los eventos de Docker en el servidor host y modifique automáticamente la configuración del proxy podemos agregar sitios-web al host sin tener que reconfigurar manualmente el nginx-proxy.

-. El segundo servicioLet’s Encryptque es el complemento de nginx-proxy, nos proporciona los certificado ssl lo creamos con la image:docker-letsencrypt-nginx-proxy-companion. Este servicio crea una solicitud ssl automáticamente cada nuevo sitio-Web, que conectemos al host, ¡como conseguirlo! Debemos escuchar los eventos de Docker en el host usaremos el volumen:/var/run/docker.sock:/var/run/docker.sock:ro como comparte volumen con nginx-proxy.necesitamos la variable de entorno NGINX_PROXY_CONTAINER.

Nota: En la carpeta “ Proxy-Inverso” nos situamos en ella crearemos el fichero docker-compose.yml con el editor nano.

  • In: root@ubuntu:/# cd /Moreluz-ia/Proxy-Inverso
  • In: root@ubuntu:/Moreluz-ia/Proxy-Inverso#nano docker-compose.yml
  • In: root@ubuntu:/Moreluz-ia/Proxy-Inverso# ls
  • Out: docker-compose.yml

Creamos el fichero nano docker-compose.yml:

  1. services:
  2.   nginx-proxy:
  3.      image: jwilder/nginx-proxy
  4.      container_name: nginx-proxy
  5.      ports:
  6.         – «80:80»
  7.         – «443:443»
  8.      volumes:
  9.        – letsencrypt-certs:/etc/nginx/certs
  10.        – letsencrypt-vhost-d:/etc/nginx/vhost.d
  11.        – letsencrypt-html:/usr/share/nginx/html
  12.        – /var/run/docker.sock:/tmp/docker.sock:ro
  13.   letsencrypt:
  14.      image: jrcs/letsencrypt-nginx-proxy-companion
  15.      container_name: letsencrypt
  16.      volumes:
  17.        – letsencrypt-certs:/etc/nginx/certs
  18.        – letsencrypt-vhost-d:/etc/nginx/vhost.d
  19.        – letsencrypt-html:/usr/share/nginx/html
  20.        – /var/run/docker.sock:/var/run/docker.sock:ro
  21.      environment:
  22.        – NGINX_PROXY_CONTAINER=nginx-proxy
  23. networks:
  24.    default:
  25.      name: red-externa
  26.      external: true
  27. volumes:
  28.    letsencrypt-certs:
  29.    letsencrypt-vhost-d:
  30.    letsencrypt-html:

-. Para lanzar docker-compose nos situamos en la carpeta del proyecto /Moreluz-ia/Proxy-Inverso ejecutamos docker-compose up -d.

Lazar el código del proyecto al sevidorhost:

  • In: root@ubuntu:/Moreluz-ia/Proxy-Inverso# docker-compose up -d

Contenedores en ejecución:

  • In: root@ubuntu:/Moreluz-ia/Proxy-Inverso# docker-compose ps

Inspeccionar configuración de una red determinada:

  • In:   root@ubuntu:/# docker network inspect red-externa

 

Operaciones que podemos necesitar en el trascurso de nuestro proyecto:

Detener la instancia :

  • In: root@ubuntu:/# docker-compose stop

Eliminar todos los contenedores imagenes parados:

  • In: root@ubuntu:/# docker system prune -a

Arrancar de nuevo la instancia :

  • In: root@ubuntu:/# docker-compose up -d

Elimina los contenedores y la red predeterminada, conserva su base de datos:

  • In: root@ubuntu:/# docker-compose down

Elimina los contenedores, la red predeterminada y la base de datos:

  • In: root@hp8100:/# docker-compose down –volumes

Sitio-Web-WerdPress

. Pasemos a la creación del sitio-Web este proyecto costa con dos servicios; un servidor-MySQL y otro servicio para la aplicación WordPress. Creamos con nano el fichero docker-compose.yml en la careta /Proxy-WordPress/Sitios-Web/Sitio-Web1.

Aclaremos algunos conceptos:

Que es MySQL:

  • Es un sistema de gestión de bases de datos Relacional de código abierto; “Modelo de datos basado en la lógica de predicados y teoría de conjuntos”, se basa en el modelo cliente-servidor. Esta herramienta MySQL permite gestionar de forma fácil y eficiente.

Que es WordPress:

  • WordPress es un sistema de gestión de contenidos CMS, va dirigido a la creación de cualquier tipo de sitio-web. Se a convertido en la principal herramienta para la creación de sitio-web comerciales. Es de código abierto que sirve para construir, modificar y mantener cualquier sitio-web.

Nos situamos en la carpeta:

  • In: root@ubuntu:/# cd /Moreluz-ia/Sitios-Web

Creamos el archivo:

  1. In: root@ubuntu:/Moreluz-ia/Sitios-Web# nano docker-compose.yml

Nota: El testo que introducimos en el editor-nano, concretamente en el fichero docker-compose.yml es el siguiente:

  1. services:
  2.   db:
  3.      image: mysql:5.7
  4.      volumes:
  5.         – db_data:/var/lib/mysql
  6.      restart: always
  7.      environment:
  8.        MYSQL_ROOT_PASSWORD: somewordpress
  9.        MYSQL_DATABASE: wordpress
  10.        MYSQL_USER: wordpress
  11.        MYSQL_PASSWORD: wordpress
  12.   wordpress:
  13.     depends_on:
  14.        – db
  15.     image: wordpress:latest
  16.     volumes:
  17.        – wordpress_data:/var/www/html
  18.     ports:
  19.        – 80
  20.      restart: always
  21.      environment:
  22.         VIRTUAL_HOST:moreluz-ia.com
  23.         LETSENCRYPT_HOST:moreluz-ia.com
  24.         WORDPRESS_DB_HOST: db:3306
  25.         WORDPRESS_DB_USER: wordpress
  26.         WORDPRESS_DB_PASSWORD: wordpress
  27.         WORDPRESS_DB_NAME: wordpress
  28.   volumes:
  29.     db_data: {}
  30.     wordpress_data: {}
  31.   networks:
  32.     defayft:
  33.       name: red-externa
  34.       external: true

Lazar el código del proyecto al sevidor-host:

  • In:    root@ubuntu:/Moreluz-ia/Sitios-Web# docker-compose up -d

Contenedores en ejecución:

  • In: root@ubuntu:/Moreluz-ia/Sitios-Web# docker-compose ps

Configuración de la red-externa:

  • In: root@ubuntu:/# docker network inspect red-externa

Nota: El nginx-proxy tiene expuesto al exterior el puerto 80 y 443 lo que necesitamos para apuntar el dominio y nginx-proxy realice su cometido que consiste en recibir las solicitudes de los clientes y las mande al sitio-web a trabes de la llamada Red-Externa (network-nginx-proxy) .

Algunas direcciones de interés:

  • https://dominio.com
  • https://dominio.com/wp-admin/install.php
  • https://dominio.com/wp-login.php
  • https://dominio.com/wp-admin/

-. Accedemos con http:// “dominio” configuramos WordPress de forma tradicional. Esta Url solo funciona para configuración inicial de WordPress luego sera la Url de acceso al sitio-Web por este motivo expongo “Algunas direcciones de interés:

Exploremos su funcionalidad ¡instalemos un Tema! News Portal

. A continuación Instalamos tres Plugins, Editor Clásico, Content Views y All in One WP Migración el cual es imprescindible la copia de seguridad.

Recopilando:

Hemos empezado por el entorno necesitamos para este proyecto. Pasamos a la creación de una red-Externa. Creamos la primera estancia que contiene dos “services:” el Proxy-Inverso y su complemento Let’s Encrypt, la segunda estancia la del sitio-Web con dos “services:” Mysql y WordPress y por ultimo hemos probado su funcionalidad.

 

  • Referencias: moreluz.entorno
  • Referencias: Docker-Docs

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *