Nginx Proxy Manager: dirigiendo nuestros servicios a donde necesitamos
NPM es un proxy inverso que nos permite redirigir las peticiones de nuestras direcciones web al servicio correspondiente.
Vamos a suponer que queremos montar un servidor de música en casa y poder acceder a él desde cualquier sitio. Lo primero es tener un dominio configurado que apunte a nuestro servidor, por ejemplo musica.nuestraweb.es. Después necesitaremos instalar el servicio en el servidor (Navidrome, por ejemplo). Y, por fin, instalar y configurar NPM para que, cuando llegue una petición desde musica.nuestraweb.es, la redirija a la web de nuestro Navidrome.
Instalación con Docker Compose
Vamos a instalarlo vía docker-compose:
services:
npm:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
# <host-port>:<container-port>
- 81:80 # HTTP público
- 444:443 # HTTPS público
- 82:81 # Panel de administración
environment:
# Descomenta si no tienes IPv6 en el host
DISABLE_IPV6: "true"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks: {}
A configurar:
- Puertos: en mi caso los he dejado en 81 (HTTP), 444 (HTTPS) y 82 (panel de administración).
- IPv6: en mi caso no lo necesito.
- Volúmenes: en mi caso va todo en subdirectorios desde la localización del
docker-compose.
Tras lanzarlo con docker compose up -d, entraremos vía IPservidor:82. El usuario por defecto es [email protected] y la contraseña changeme. Cámbialos en el primer login.
Añadir un proxy host
Desde el panel, ve a Hosts → Proxy Hosts → Add Proxy Host y rellena:
- Domain Names: el dominio que apunta a tu servidor (ej.
musica.nuestraweb.es). - Scheme:
http. - Forward Hostname / IP: la IP del servicio (ej. la IP del NAS).
- Forward Port: el puerto del servicio (ej.
4533para Navidrome). - Block Common Exploits: activado.
- Websockets Support: actívalo si el servicio lo necesita (Jellyfin, por ejemplo).
Guarda y prueba que musica.nuestraweb.es resuelve al servicio.
Certificado HTTPS con Let's Encrypt
En la pestaña SSL del mismo proxy host:
- SSL Certificate: Request a new SSL Certificate.
- Force SSL: activado.
- HTTP/2 Support: activado.
- Acepta los términos de Let's Encrypt.
NPM emitirá el certificado y lo renovará automáticamente. A partir de ahí, el servicio es accesible por HTTPS.