Instalación y configuración de Nginx Proxy Manager en Debian 13

¿Qué es Nginx Proxy Manager?
Nginx Proxy Manager (NPM) es una interfaz web que se apoya en Nginx para actuar como proxy inverso. Nos permite publicar los distintos servicios de nuestra red bajo un único punto de entrada (los puertos 80 y 443), asignando a cada uno un nombre de dominio, sin necesidad de editar los ficheros de configuración de Nginx a mano. Además integra la emisión y renovación automática de certificados SSL de Let’s Encrypt, redirecciones, listas de acceso y cabeceras personalizadas, todo desde un panel gráfico.
En este tutorial vamos a instalar Nginx Proxy Manager sobre Debian 13 utilizando Docker, que es la forma recomendada por el proyecto.
Requisitos
- Debian 13 instalado y actualizado.
- Los puertos 80 y 443 libres en el host (los usará el proxy) y el 81 para el panel de administración.
- Privilegios de sudo o root.
- Acceso a internet para descargar la imagen y emitir certificados.
Instalar Docker
Añadimos el repositorio oficial de Docker e instalamos el motor junto al plugin de Compose:
root@npm:~# apt update
root@npm:~# apt install -y ca-certificates curl
root@npm:~# install -m 0755 -d /etc/apt/keyrings
root@npm:~# curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
root@npm:~# chmod a+r /etc/apt/keyrings/docker.asc
root@npm:~# echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian trixie stable" > /etc/apt/sources.list.d/docker.list
root@npm:~# apt update
root@npm:~# apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Comprobamos que el servicio está activo:
root@npm:~# systemctl enable --now docker
root@npm:~# docker --version
Desplegar Nginx Proxy Manager
Creamos un directorio para el despliegue y dentro un fichero docker-compose.yml:
root@npm:~# mkdir -p /opt/npm && cd /opt/npm
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # tráfico HTTP de los servicios publicados
- '443:443' # tráfico HTTPS de los servicios publicados
- '81:81' # panel de administración
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Los dos volúmenes son importantes: en data se guardan la base de datos interna y la configuración de Nginx, y en letsencrypt los certificados emitidos. Con ellos podremos recrear el contenedor sin perder nada.
Levantamos el servicio (la primera vez tarda unos segundos en inicializar su base de datos interna):
root@npm:/opt/npm# docker compose up -d
root@npm:/opt/npm# docker compose ps
Primer acceso: crear la cuenta de administrador
Abrimos en el navegador http://10.10.10.11:81 (la IP de nuestro servidor y el puerto 81). Como es la primera vez, Nginx Proxy Manager nos da la bienvenida y nos pide crear la cuenta de administrador: nombre completo, correo electrónico y contraseña.

Tras pulsar en Save accedemos al panel principal, donde vemos de un vistazo los Proxy Hosts, Redirection Hosts, Streams y 404 Hosts configurados (de momento, ninguno).

Cambiar la contraseña del administrador
Podemos cambiar la contraseña cuando queramos desde el menú de usuario, arriba a la derecha, en la opción Change Password.

Introducimos la contraseña actual y la nueva, y guardamos.

Publicar un servicio con proxy inverso
Vamos a publicar un servicio interno de ejemplo. Entramos en Hosts → Proxy Hosts; al principio la lista está vacía.

Pulsamos en Add Proxy Host y en la pestaña Details rellenamos:
- Domain Names:
tools.ejemplo.lan - Scheme:
http - Forward Hostname / IP:
10.10.10.13 - Forward Port:
8080 - Podemos activar Block Common Exploits y, si el servicio usa websockets, Websockets Support.

Al guardar, el host aparece en la lista con estado Online. Ya tenemos el servicio publicado a través del proxy.

Certificados SSL con Let’s Encrypt
Para servir el host por HTTPS emitimos un certificado. En la sección Certificates → Add Certificate tenemos tres opciones: Let’s Encrypt via HTTP, Let’s Encrypt via DNS o subir un certificado propio.

- Let’s Encrypt via HTTP (reto HTTP-01): el dominio debe resolver a la IP pública del proxy y el puerto 80 tiene que ser accesible desde internet.
- Let’s Encrypt via DNS (reto DNS-01): valida creando un registro TXT con nuestro proveedor DNS; es la opción ideal para dominios internos que no están expuestos.
Una vez emitido, lo asignamos al host desde su pestaña SSL, donde además podemos marcar Force SSL y HTTP/2 Support. A partir de ese momento el servicio queda accesible por HTTPS a través del proxy.
Mantenimiento
Para actualizar Nginx Proxy Manager a la última versión basta con descargar la nueva imagen y recrear el contenedor:
root@npm:/opt/npm# docker compose pull
root@npm:/opt/npm# docker compose up -d
Y con esto ya hemos terminado la instalación y configuración de Nginx Proxy Manager en Debian 13, listo para publicar todos los servicios de nuestra red bajo un único proxy con certificados gestionados automáticamente.
Categories
Base de datos Implantación de aplicaciones Monitorización Redes Seguridad Servicios Sistemas Virtualización y contenedoresRecent Posts