El cuaderno de notas de elSultan

Nginx Proxy Manager: dirigiendo nuestros servicios a donde necesitamos

Publicado el: por elSultan

1 min de lectura

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. 4533 para 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.