Instalación y configuración de nginx proxy manager

Instalación y configuración de nginx proxy manager

¿Porque usar NPM en un Synology si ya puedo gestionar los proxy’s inverso directamente desde DSM?

En Synology y con un DDNS del tipo synology.me (el cual la marca nos facilita con la comprobación del número de serie de nuestro NAS y con nuestra cuenta Synology) solo falta configurar un certificado wildcard para poder configurarlo.

NPM nos permite al estar en docker, que si cambiamos de plataforma, solo tengamos que coger una copia de seguridad que hayamos hecho con portainer por ejemplo y la levantemos en otra plataforma. Puedes verlo aquí

Podemos usar Authelia para ponerle una capa de autenticación a aquellos contenedores que no tienen Login. Puedes verlo aquí

Y sobre porque creamos en un solo paso la gestión del redireccionamiento del proxy y el certificado ssl.

Requisitos

Docker, dominio propio y no tener miedo a tocar el router

Gestionar proxy’s inversos desde un synology

Abrir puertos 80 y 443 en nuestro router apuntando a la IP de nuestro NAS

Seguir los pasos que ya vimos aquí

¿Por qué un proxy inverso?

Pues porque es más seguro que exponer un puerto abierto en el router hacia internet, ya que no es necesario abrir ningún puerto más allá del 80 y del 443.

Proceso de instalación en Synology

Entramos en Container Manager. Si no lo tenemos instalado, vamos al Centro de paquetes y lo instalamos desde allí.

Una vez dentro nos vamos a registro y en la ventana de búsqueda ponemos nginx-proxy-manager

En nuestro caso, vamos a instalar el de jc21 por tener más estrellas, aunque en la otra hay menos parámetros que configurar.

Búsqueda del contenedor de NPM

Hacemos doble clic en ella y se pondrá a descargarla. Una vez descargada, nos vamos a imagen y pulsamos sobre ella y la ejecutamos

Previo a la ejecución del contenedor

Se nos abre la parte de configuración del contenedor.

En esta primera ventana, cambiamos el nombre del contenedor y habilitamos el reincio automático. Si este contenedor nos para y no lo reiniciamos automáticamente, nos quedaremos sin proxy's inversos funcionales.

Paso 1 de la configuracion

Pulsamos en siguiente y en la siguiente ventana, vienen los pasos más importantes, elegir los puertos para redirigir el puerto 80 y 443 y el puerto de acceso a la UI del contenedor, además de la ruta para guardar la información persistente del docker.

En los ejemplos, os voy a mostrar como lo tengo yo, que he puesto el 9081:80 y el 3443:443 y como acceso el 82:81

También crearemos una carpeta de configuración en nuestra carpeta de docker para la configuración y la BBDD que guarda este contenedor, donde crearemos una carpeta data y otra para los certificados letsencrypt. Esta carpeta hay que crearla desde File Station en la carpeta de docker.

Nos debe quedar así

Paso 2 de la configuración

Pulsamos en siguiente, nos aseguramos que está marcado el check de ejecutar contenedor cuando finalicemos

Paso 3 de la configuración

Pulsamos en finalizado y se ejecutará

Si nos vamos a contenedor, veremos que está en verde y funcionando.

Para confirmar, tenemos que ir a un navegador e introducir http://IPdenuestroNAS:PuertoElegido, en mi caso particular, http://192.168.0.105:82

Debemos de ver la pantalla de Login

Pantalla de LOGIN de NPM

Los datos para el primer acceso son:

Email:    [email protected]
Password: changeme

Una vez introducidos pasamos a configurar los nuevos datos de acceso por seguridad.

Instalación a través de docker-compose

Os dejo por aqui el docker-compose para que lo terminéis de editar con vuestros puertos elegidos y así lo podáis instalar a través de Portainer o a través de Container Manager que también lo permite

Proceso de instalación en Unraid

Una vez que accedamos a nuestro unraid, vamos a apps y en el buscador ponemos nginx proxy manager oficial y nos dará el mismo contenedor que hemos instalado en synology

Búsqueda del contenedor en unraid

Pulsaremos sobre Install y procedemos a la configuración, los parámetros a configurar son los mismos que en Synology, es decir, los puertos para http, https, acceso a la UI y rutas para guardar los parámetros de configuración

Imagen del contenedor encontrado en unraid

Haremos los siguientes cambios:

en Network Type cambiamos br0 por bridge, así accederemos de igual forma que anteriormente, http://IPdenuestroNAS:PuertoElegido, en mi caso particular, http://192.168.0.225:82 ya que mi unraid tiene una IP distinta al Nas de Synology

  • En webUI pongo 82
  • En http port pongo 9081
  • En https port pongo 3443

Debe quedar asi

Paso 1 configuración en unraid

Cambiamos las rutas de los demás parámetros a donde queramos que nos guarde la configuración de este contenedor y pulsamos en DONE

Paso 2 configuración en unraid

Una vez creado, accedemos a él de la misma forma que anteriormente y debemos llegar a la misma página donde introduciremos por primera vez el correo y la contraseña

Los datos para el primer acceso son:

Email:    [email protected]
Password: changeme

Una vez introducidos pasamos a configurar los nuevos datos de acceso por seguridad.

¿Hemos acabado?

La respuesta es no porque ahora deberemos configurar los reenvíos a los puertos que hemos elegido.

Tenemos que tener claro la IP de nuestro equipo, cuáles son los puertos que hemos elegido para HTTP y HTTPS, y saber dónde tocar en nuestro router

Este era el paso que más me frenaba en este aspecto, pero gracias a mis amigos Frank, Jesús y Joan, puedo mostraros como se hace en los routers de principales marcas o de uso más común.

Configuración en distintas marcas de router

En SRM , el sitema que llevan los routers de Synology vamos a Centro de Redes -> Reenvio de puertos

Configuración de puertos en router Synology

En Asus vamos a WAN -> Servidor Virtual

Configuración de puertos en Asus

En mikrotik, vamos a IP -> Firewall -> NAT y pulsamos en +. Crearemos los tres parámetros necesarios para tener hairpin nat o nat loopback y luego las reglas de reeenvio de tráfico http y https

En un hgu de Movistar, iremos al menú-> puertos. Configuramos el reenvío de puertos asi

Y en Ubiquiti, nos iremos a Firewall de aplicaciones -> reenvio de puertos

No he pedido configuración de router Vodafone porque esta compañía bloquea el puerto 443 para su uso exclusivo y tampoco de Orange ya que los Livebox no soportan nat loopback

Y tras toda esta configuración, ¿ya puedo hacer funcionar un proxy inverso?

La respuesta es "cuando terminemos con la creacion".

Un proxy inverso es la traducción de una iplocal:puertoDeServicio a una dirección web.

O sea que tenemos que tener un contenedor docker por ejemplo y una dirección web para asociárselo

¿Cómo obtengo esta dirección web?

A través de un dominio propio.

¿Os acordais del último post? Visteis que yo tengo un dominio en namecheap y tengo otro en piensasolutions. Ambos los tengo bajo los DNS para que en lugar de mostrar mi IP Pública haciendo un simple ping al servicio, muestren la IP que les asigne cloudflare.

Terminal con ping hacia nuestro dominio

Una vez cambiado los DNS a los de cloudflare (debes esperar como máximo 24 horas), pierdes la configuración dentro del panel del suministrador del servicio y pasan al servicio de cloudflared a través de https://dash.cloudflare.com y aquí es donde vamos a crear esas direcciones web que se llaman subdominios o cname.

Si accedo a mi panel de cloudflare, y mi dominio del blog como en el último vídeo, para crear un subdominio o CNAME tengo que entrar en el menú lateral en DNS, entrar en registros y pulsar sobre el botón azul de Agregar Registro

Paso 1 creacionista CNAME

Una vez pulsado en agregar registro, en tipo seleccionamos CNAME, en nombre ponemos lo que queramos que ponga antes de nuestro dominio, por ejempo npm y en destino, nuestro dominio en mi caso bilito.eu y pulsamos en guardar

Paso 2 creación CNAME

Una vez guardado, ya tenemos el subdominio creado.

Ahora solo nos queda configurarlo en Nginx Proxy Manager. Si os fijáis lo que vamos a crear es un proxy inverso para entrar a nginx proxy manager en lugar de hacerlo por http://192.168.0.105:82 , hacerlo por https://npm.bilito.eu con su correspondiente certificado SSL.

Nos vamos a Nginx Proxy Manager a través de la IP:puerto y ponemos nuestros datos de acceso, que ya deberían estar cambiados.

Login de NPM accediendo por IP

Una vez entramos nos encontramos con el siguiente panel

Pantalla resumen NPM

Pulsaremos en proxy host y en la pantalla que nos muestra en ADD PROXY HOST

Paso 1 creación de proxy host en NPM

Y nos abrirá una pequeña ventana donde debemos rellenar los siguientes datos:

  • En Domain Name nuestro subdominio creado (npm.bilito.eu)
  • en Scheme http
  • En Forward Hostname/IP la ip de nuestro servidor (192.168.0.105)
  • en Forward Port el puerto del contenedor (82)
  • yo recomiendo marcar las tres opciones disponibles

Nos quedará así

Paso 2 creación de proxy host en NPM

Antes de pulsar en SAVE, pulsamos en SSL y configuramos:

  • Pulsamos en NONE y se nos abre un desplegable y seleccionamos solicitar un nuevo certificado
  • No marcamos nada más salvo la casilla de estoy de acuerdo y pulsamos en SAVE.

Si hemos configurado bien nuestro reenvío de puertos en nuestro router, nos debe de funcionar. Si no esta configurado la app nos mostrará un INTERNAL ERROR muy desagradable y no nos creará el certificado.

Cuando nos devuelva a la pagina del listado de Proxy host, ahora veremos esto. Vamos a los tres botones de la derecha y pulsamos en edit.

Paso 4 creación de proxy host en NPM

Vamos a la pestaña de SSL de nuevo y ahora si marcamos todas las opciones y pulsamos en SAVE de nuevo. Esto lo hacemos por Nginx Proxy Manager no lo guarda en el primer guardado que hacemos.

Paso 5 creación de proxy host en NPM

Y aquí ya hemos acabado. Ahora solo nos quedará entrar a nuestra dirección web creada y hacer LOGIN con nuestros datos de usuarios.

Y así por cada servicio que queramos crear.

Espero que os haya sido de ayuda.

Mi nombre es David Rodríguez, apasionado por un millón de cosas que lleven placas y chips dentro. Puedes encontrarme como @_Bilito en twitter y en grupo de Telegram de Synology NAS https://t.me/synologyNAS Tengo un canal de youtube que complementa al blog https://www.youtube.com/@_Bilito y que me harías un gran favor si te subscribes. También colaboro en podcast como Bateria 2x100 https://pod.link/1115144939 y además hemos comenzado otra aventura en otro podcast Detras del Mostrador https://pod.link/1657695301