Certificados SSL (let’s encrypt) en Docker usando Nginx Proxy Manager

Tiempo de lectura: 3 minutos

Hoy os voy a enseñar cómo añadir certificados SSL para HTTPS con let’s encrypt (dovecot) en Docker o Docker Compose usando Nginx Proxy Manager.

Es un proceso muy sencillo con el que podrás añadir el certificado en cuestión de minutos, además se autorrenueva automáticamente sin necesidad de estar pendiente.

Lo primero que hay que hacer es añadir la imagen de Nginx Proxy Manager a nuestro docker compose:

  nginxproxymanager:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
  
    #usuario defecto:
    #Email:    admin@example.com
    #Password: changeme

    volumes:
      - ./config/proxymanager/data:/data
      - ./config/letsencrypt:/etc/letsencrypt

Tenemos que exponer el puerto por defecto http 80, ya que el proxy va a estar escuchando todas las conexiones recibidas y redirigiendo a donde corresponde. Para ello, si tenemos también una imagen apache o nginx tendremos que cambiar su puerto a otro por ejemplo el 8082.

Para acceder al servicio Nginx Proxy Manager tendremos que invocar nuestra url por el puerto 81 (ejemplo: localhost:81)

También creamos dos volúmenes, uno para los datos de proxymanager y otro para los certificados letsencrypt.

Ahora podemos acceder a nuestro Nginx Proxy Manager (ejemplo http://localhost:81 o la dirección dónde hemos desplegado) (recuerda abrir el puerto: https://devcodelight.com/como-abrir-un-puerto-en-ubuntu-linux-por-defecto-utilizando-ip-tables/)

Una vez dentro nos va a pedir hacer login, como es por primera vez, tendremos que poner los datos iniciales:

    #Email:    admin@example.com
    #Password: changeme

Una vez iniciada la sesión, nos pedirá cambiarlos.

Ahora ya podemos añadir nuestros dominios y certificados, para ello vamos al apartado de Proxy Hosts

Y añadimos uno:

Simplemente, rellenamos los datos solicitados:

Tendremos que añadir:

  • Domain Names: en este caso el nombre del dominio/subdominio que queremos para abrir nuestra web o servicio.
  • IP: añadimos la IP dónde está desplegado (puede ser la pública o privada, pero si es la privada el servicio Nginx Proxy Manager tiene que ejecutarse en la misma red que tu web o servicio que quieres redirigir)
  • Forward Port, indicas el puerto por el que se está ejecutando el servicio (recueda que hemos cambiado el apache o nginx al puerto 8082 o al que elijamos).

Una vez relleno, podemos marcar la opción de Block Common Exploits para más seguridad.

Y si queremos optimizar la velocidad del sitio, podemos marcar Cache Assets.

Una vez relleno, vamos al apartado de SSL:

Y aquí es dónde se va a generar nuestro certificado.

Indicamos Request a new SSL Certificate

Marcamos Force SSL si queremos redirecionar todas las conexiones por SSL. Indicamos un correo que nos avisará de la caducidad de los certificados y marcamos que aceptamos los términos de Let’s Encrypt.

Pulsamos en Save y en cuestión de segundos tendremos nuestro certificado.

Para verificarlo, vamos al apartado SSL certificates:

Vemos que aparece la fecha y el certificado:

Tendremos que visitar el dominio indicado para ver si funciona:

Como veis es una herramienta muy útil y fácil de usar.

4 comentarios en «Certificados SSL (let’s encrypt) en Docker usando Nginx Proxy Manager»

Deja un comentario