NGINX Proxy Manager (NPM) en contenedor LXC con Proxmox

Esquema de funcionamiento de un Reverse Proxy
Vamos a ver como crear un contenedor LXC de Proxmox para que corra el Reverse Proxy Manager de Nginx ('enginex).

¿Por qué un contenedor LXC y no usarlo con Docker?

Pues largo tiempo, en la misma máquina virtual que corrían todos mis Docker, tenía el NPM.
Lo bueno de tenerlo todo en la misma máquina es la facilidad. Lo malo, es que si haces un mantenimiento o la máquina sufre algún problema, dejas de tener el direccionamiento que proporciona NPM.
Debido a esto decidí separar NPM de la máquina virtual donde corrían mis Docker. Para ello podía haber hecho otra máquina virtual (MV), instalar docker y correr solo NPM pero esto es un gasto innecesario de recursos. Para estos casos es mucho más óptimo usar un contenedor LXC, una especie de mini MV, para entendernos.
Como solo va a correr NPM no hace falta instalar docker y con un simple script lo tendremos todo.

Crear contenedor LXC

No voy a entrar mucho en detalle en este punto ya que lo hicimos en el siguiente post.
Si tienes un servidor modesto, con 512MB de ram, 1 núcleo de procesador y 2 GB de disco duro debería bastar.
Además configuramos una IP fija y sin Firewall.
Usaremos una imagen de LXC Debian (11+).
Una vez creado, entramos en modo consola y actualizamos el sistema.
apt update && apt upgrade -y
Una vez actualizado ejecutamos el script que aparece en la web de NPM
sh -c "$(wget --no-cache -qO- https://raw.githubusercontent.com/ej52/proxmox/main/install.sh)" -s --app nginx-proxy-manager
Una vez instalado ya podremos entrar en la web que nos dice y empezar la configuración.
Metemos el Default Administration User y cambiamos los datos por unos más seguros.
Email:    admin@example.com
Password: changeme
Una vez dentro ya podremos crear direccionamientos internos a nuestras IPs y puertos.

¿Es necesario todo esto solo por no escribir las IPs?

No, categoricamente no PERO...
Lo más interesante de NPM es poder generar con Let's Encrypt nuestros certificados SSL y poder navegar entre nuestras aplicaciones internas con mayor seguridad y privacidad.
Para poder generar estos certificados nos apoyaremos en Duckdns.org.
En Duckdns.org generamos un dominio y la IP pondremos la interna que corresponda a nuestro NPM.
Una vez hecho esto, nos vamos al apartado de certificados SSL de NPM y le damos a añadir uno con Let's Encrypt.
Lo rellenamos como en la siguiente imagen pero sustituyendo el dominio, correo y token de Duckdns.
Configuración SSL en NPM con Duckdns
Una vez tenemos el certificado SSL ya podemos añadir un Host. Os pongo un ejemplo. Con esto ya puedes apuntar a todas tus aplicaciones y acceder con HTTPS en vez de HTTP. Aplicaciones como Vaultwarden es obligatorio este uso.
Con esto ya podriamos entrar por el dominio que hemos dicho a nuestras apps sin tener que teclear la ip:puerto y además con https.