Skip to main content

Nginx Proxy Manager (NPM)

image.png

Nginx Proxy Manager (NPM) es una interfaz de administración de Nginx que permite exponer servicios de una manera sencilla y segura usando certificados de Let's Encrypt.

Enlaces

Nginx Proxy Manager

Requisitos

Imagen

Repositorio de Docker Hub: jc21/nginx-proxy-manager - Docker Image | Docker Hub

Directorio de datos

mkdir -pv $HOME/CONTAINERDIR/nginx-proxy-manager/{data,letsencrypt}

Portainer- Nueva «Red»

Desde el menú Networks click "Add network": Name "proxy" Driver "bridge"

newred.gif

Después de crear la red para el proxy, añade al fichero docker-compose.yml para NPM y para cualquier otro servicio que corra en este Docker host:

networks:
  default:
    external: true
    name: proxy

Portainer- Nuevo «stack»

Add a new stack | 2.20 | Portainer Documentation

Web editor

En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables2.15-docker_add_stack_web_editor.gif

Fichero de variables «.env»

TZ=$TZ
PUID=1000
PGID=1000
X_FRAME_OPTIONS=sameorigin

Fichero docker-compose.yml

services:
  npm:
    image: docker.io/jc21/nginx-proxy-manager
    container_name: npm
    restart: unless-stopped
    env_file: stack.env
    ports:
      - 80:80
      - 81:81
      - 443:443
    volumes:
      - $HOME/CONTAINERDIR/nginx-proxy-manager/data:/data
      - $HOME/CONTAINERDIR/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
networks:
  default:
    external: true
    name: proxy

Inicie sesión en la interfaz de administrador. Cuando su contenedor Docker se esté ejecutando, conéctese a él en el puerto 81 para la interfaz de administración.

Usuario Admin por defecto:

Email:    admin@example.com
Password: changeme

Inmediatamente después de iniciar sesión con este usuario predeterminado se le pedirá que modifique sus datos y cambie su contraseña

Publicar un servicio/host

Crear registro DNS

En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"

Crear un nuevo "proxy host"

Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:

image.png

image.png

Añadir analizador de Logs


GoAccess es un analizador de registros web en tiempo real y un visor interactivo de código abierto que se ejecuta en una terminal en sistemas *nix o a través de su navegador.

GoAccess para Nginx Proxy Manager

xavierh/goaccess-for-nginxproxymanager - Docker Image | Docker Hub

Añade al fichero docker-compose.yml el servicio:

  goaccess:
    image: xavierh/goaccess-for-nginxproxymanager
    container_name: goaccess
    restart: unless-stopped
    env_file: stack.env
    ports:
      - 7880:7880
    volumes:
      - $HOME/nginx-proxy-manager/data/logs:/opt/log   

Adicionalmente las variables:

LANG=es
BASIC_AUTH=True
BASIC_AUTH_USERNAME=admin
BASIC_AUTH_PASSWORD=contraseña_segura
EXCLUDE_IPS=127.0.0.1, 192.168.x.x

Conéctese al contenedor en el puerto 7880 para acceder al visor estadísticas, o puede publicarse con el propio proxy:

image.png