La gestión eficiente de proxies y certificados SSL es fundamental para mantener seguros y accesibles tus servicios web. Nginx Proxy Manager (NPM) es una herramienta poderosa que simplifica la administración de proxies reversos y la gestión de certificados SSL. Ya sea que estés gestionando múltiples aplicaciones en una PC con Linux, una máquina virtual (VM), una Raspberry Pi o incluso un contenedor LXC en Proxmox VE, NPM te ofrece una interfaz intuitiva para centralizar y optimizar tus configuraciones de red.
¿Por Qué Instalar Nginx Proxy Manager?
Antes de sumergirnos en los pasos de instalación, exploremos algunos casos de uso prácticos que demuestran por qué NPM puede ser una adición invaluable a tu infraestructura:
1. Acceso Centralizado a Múltiples Aplicaciones
Imagina que tienes varias aplicaciones web corriendo en diferentes contenedores o máquinas, cada una escuchando en distintos puertos o incluso en diferentes direcciones IP internas. Sin NPM, tendrías que acceder a cada aplicación especificando la IP y el puerto en el navegador, por ejemplo:
http://192.168.1.100:8080
para tu aplicación de gestión.http://192.168.1.100:9090
para tu panel de administración.
Con NPM, puedes simplificar este proceso utilizando nombres de dominio (FQDN). Configura redirecciones basadas en el dominio, de modo que solo necesites teclear el nombre de dominio en tu navegador:
https://gestion.tudominio.com
redirige ahttp://192.168.1.100:8080
.https://admin.tudominio.com
redirige ahttp://192.168.1.100:9090
.
2. Reducción de la Complejidad en el Firewall
Sin NPM, para acceder a múltiples aplicaciones externas, tendrías que abrir múltiples puertos en tu firewall y configurar reglas de redirección para cada uno. Esto puede complicar la administración y aumentar las superficies de ataque.
Con NPM, solo necesitas abrir los puertos estándar (80
y 443
) en tu firewall. NPM se encargará de redirigir el tráfico interno a las aplicaciones correspondientes según el dominio solicitado. Esto simplifica la configuración del firewall y reduce los riesgos de seguridad asociados con la apertura de múltiples puertos.
3. Gestión Simplificada de Certificados SSL
NPM facilita la obtención y renovación automática de certificados SSL de Let’s Encrypt para cada dominio configurado. Esto elimina la necesidad de gestionar manualmente certificados individuales, asegurando que todas tus aplicaciones estén siempre protegidas con conexiones seguras.
1. ¿Qué es Nginx Proxy Manager?
Nginx Proxy Manager (NPM) es una interfaz web fácil de usar para gestionar proxies reversos con Nginx. Permite configurar y administrar proxies, certificados SSL y reglas de redirección sin necesidad de conocimientos profundos en Nginx. Entre sus características destacan:
- Gestión sencilla de proxies reversos: Redirige el tráfico a diferentes servicios internos.
- Integración con Let’s Encrypt: Obtén y renueva automáticamente certificados SSL gratuitos.
- Interfaz intuitiva: Administra todas las configuraciones a través de una interfaz web amigable.
- Soporte para múltiples usuarios y permisos: Controla quién puede acceder y modificar las configuraciones.
2. Requisitos Previos
Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:
- Sistema Operativo: Una distribución Linux compatible (por ejemplo, Ubuntu 22.04, Debian 11, etc.).
- Docker Instalado: Necesitarás Docker para ejecutar NPM.
- Docker Compose Instalado: Facilita la gestión de múltiples contenedores Docker.
- Acceso a la Terminal: Para ejecutar comandos necesarios durante la instalación.
- Conexión a Internet: Para descargar imágenes y paquetes necesarios.
Nota: En mi caso, estaré instalando NPM en un Contenedor LXC (CT) de Proxmox VE, pero los pasos son aplicables a cualquier entorno que soporte Docker, como una PC con Linux, una VM, o una Raspberry Pi.
3. Instalar Docker y Docker Compose
Si aún no tienes Docker instalado en tu sistema, sigue estos pasos para instalarlo:
Actualizar el sistema:
sudo apt update && sudo apt upgrade -y
Instalar curl:
sudo apt install curl -y
Ejecutar el script de instalación de Docker:
curl -sSL https://get.docker.com/ | sh
Verificar la instalación de Docker:
docker --version
Deberías ver una salida similar a:
Docker version 27.3.1, build ce12230
Verificar la instalación de Docker Compose:
docker-compose --version
Deberías ver algo como:
Docker Compose version v2.29.7
5. Configurar Nginx Proxy Manager con Docker Compose
Ahora que Docker y Docker Compose están instalados, procederemos a configurar NPM.
Paso 1: Crear un Directorio para NPM
Es recomendable mantener los archivos de configuración organizados en un directorio específico.
mkdir npm
cd npm
Paso 2: Crear el Archivo docker-compose.yml
Este archivo define los servicios necesarios para NPM y su base de datos.
sudo nano docker-compose.yml
Copia y pega el siguiente contenido en el archivo:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
# Uncomment the next line if you uncomment anything in the section
# environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Paso 3: Iniciar los Servicios de Docker Compose
docker compose up -d
Este comando descargará las imágenes necesarias y levantará los contenedores en segundo plano.
Deberías ver algo como:
Paso 4: Verificar que los Contenedores Estén Corriendo
docker ps
Deberías ver el contenedor activo:
6. Acceder y Configurar Nginx Proxy Manager
Ahora que NPM está instalado, procedemos a configurarlo.
Paso 1: Abrir la Interfaz Web de NPM
Desde tu navegador visita:
http://[Dirección_IP_del_Servidor]:81
Si no sabes cual es tu IP usa:
ip a
En nuestro caso:
Así que desde el navegador visitamos http://192.168.101.201:81
Paso 2: Configuración Inicial
Al acceder por primera vez, verás la pantalla de configuración inicial:
- Correo Electrónico:
[email protected]
(puedes cambiarlo). - Contraseña:
changeme
(se recomienda cambiarla inmediatamente).
Paso 3: Edita el usuario de Administración
Una vez que inicies sesión, serás redirigido a esta página. Deberías modificar el nombre, el alias y el correo electrónico para personalizar tu cuenta y mejorar la seguridad.
A continuación, se te pedirá que cambies la contraseña por una nueva. Asegúrate de usar una contraseña segura.
Con estos cambios realizados, ya tendrás lista tu cuenta para continuar con la configuración de los proxies.
Paso 4: Agregar un Proxy Host
Ir al Dashboard, luego haz clic en «Proxy Hosts»
Presiona el botón «Add Proxy Host».
Completa la información en la pestaña «Details»:
Domain Names: Especifica el dominio o subdominio que será redirigido a tu aplicación. En este caso, usaremos plex.itrafa.com
.
Scheme: Selecciona http
o https
, dependiendo de cómo tu servidor está configurado para escuchar. Para este ejemplo, seleccionaremos http
s. Más adelante puedes configurar un certificado SSL para asegurar la comunicación.
Forward Hostname / IP: Introduce la IP del servidor donde está alojada tu aplicación. Para este ejemplo, usamos 192.168.101.222
.
Forward Port: Especifica el puerto al que Nginx Proxy Manager redirigirá las solicitudes. En este caso, Plex usa el puerto 32400
.
Block Common Exploits: Habilita esta opción para bloquear exploits comunes.
Websockets Support: Actívalo si tu aplicación utiliza websockets.
Ahora haz clic en la pestaña «SSL» y solicita un nuevo certificado SSL:
Force SSL: Habilita la opción Force SSL para asegurarte de que todo el tráfico hacia este Proxy Host use HTTPS en lugar de HTTP. Esto redirigirá automáticamente las solicitudes que lleguen por HTTP a HTTPS, garantizando una conexión segura.
Acepta los Términos de Servicio: Marca la casilla I Agree to the Let’s Encrypt Terms of Service para continuar con la generación del certificado.
Guardar los cambios: Haz clic en Save para completar la configuración. Nginx Proxy Manager generará automáticamente el certificado SSL y lo aplicará al Proxy Host configurado.
Ahora, al acceder a https://plex.itrafa.com
, NPM redirigirá el tráfico al servicio interno correspondiente (ubicado en este caso en 192.168.101.222:32400), manejando automáticamente los certificados SSL.
Aclaraciones importantes
Para que este subdominio funcione correctamente en una red privada, debes considerar lo siguiente (lo explicaré en detalle en futuros posts, pero aquí dejo una visión general):
- Redirección de puertos en el firewall: Necesitarás redirigir el tráfico http y https (puertos 80 y 443) desde tu IP pública a la IP privada donde tienes el servidor Nginx Proxy Manager.
- Configuración de registros DNS:
- Tu dominio principal debe tener un registro A que apunte a tu IP pública (por ejemplo npm.itrafa.com).
- Los subdominios (como
plex.itrafa.com
) deben tener un registro CNAME apuntando al subdominio principal que ya apunta a tu IP pública (ejemplo npm.itrafa.com).
Estos pasos permiten que el tráfico de los subdominios sea redirigido a los servicios internos configurados a través de Nginx Proxy Manager.
De momento, este post se enfoca en la instalación y configuración básica de Nginx Proxy Manager. Los temas de redirecciones de puertos y configuración avanzada de DNS serán tratados en detalle en un futuro post.
7. Casos de Uso Prácticos
Nginx Proxy Manager facilita la gestión de múltiples aplicaciones y servicios en tu red, permitiéndote centralizar el acceso y mejorar la seguridad. A continuación, se presentan algunos casos de uso prácticos que demuestran cómo NPM puede optimizar tu infraestructura:
7.1. Acceso Centralizado a Múltiples Aplicaciones
Puedes tener tus propias aplicaciones corriendo en distintas IPs o incluso en diferentes puertos y hacer redirecciones usando NPM para que solo tengas que teclear el FQDN (Fully Qualified Domain Name) en tu navegador para dirigirte a esas apps. Por ejemplo:
https://app1.tudominio.com
redirige ahttp://192.168.1.101:8080
.https://app2.tudominio.com
redirige ahttp://192.168.1.102:9090
.
7.2. Simplificación de la Configuración del Firewall
Al utilizar NPM, solo necesitas abrir los puertos estándar (80
y 443
) en tu firewall. NPM se encargará de redirigir el tráfico interno a las aplicaciones correspondientes según el dominio solicitado. Esto elimina la necesidad de abrir múltiples puertos, reduciendo la complejidad y mejorando la seguridad de tu red.
7.3. Gestión Automatizada de Certificados SSL
NPM facilita la obtención y renovación automática de certificados SSL de Let’s Encrypt para cada dominio configurado. Esto garantiza que todas tus aplicaciones estén siempre protegidas con conexiones seguras sin necesidad de intervención manual.
7.4. Integración con Contenedores y Máquinas Virtuales
NPM se integra perfectamente con entornos que utilizan contenedores Docker o máquinas virtuales, proporcionando una capa adicional de gestión y seguridad. Esto es especialmente útil en infraestructuras de desarrollo y pruebas, donde la flexibilidad y la seguridad son prioritarias.
7.5. Implementación de Acceso Basado en Roles
Puedes configurar múltiples usuarios con distintos niveles de acceso y permisos en NPM. Esto es ideal para entornos colaborativos donde diferentes equipos necesitan gestionar distintas aplicaciones sin interferir entre sí.
8. Consideraciones Adicionales
Compatibilidad con Diferentes Entornos
Aunque en este tutorial hemos instalado NPM en un Contenedor LXC de Proxmox VE, los pasos son prácticamente iguales si decides instalarlo en:
- Una PC con Linux: Sigue los mismos pasos de instalación de Docker y Docker Compose.
- Una Máquina Virtual (VM): Crea una VM con una distribución Linux compatible y procede con la instalación.
- Una Raspberry Pi: Asegúrate de utilizar imágenes de Docker compatibles con ARM y adapta el archivo
docker-compose.yml
si es necesario.
Seguridad
- Actualiza regularmente los contenedores y aplicaciones para mantener la seguridad.
- Configura firewalls adecuados para restringir el acceso a los puertos necesarios.
- Utiliza certificados SSL válidos para asegurar las conexiones.
- Configura Access Control Lists (ACLs) en NPM para gestionar quién puede acceder a qué servicios.
9. Conclusión
Instalar Nginx Proxy Manager en un contenedor Docker es una manera eficiente y flexible de gestionar proxies reversos y certificados SSL en tu infraestructura. Ya sea que lo instales en un Contenedor LXC de Proxmox VE, una VM, una PC con Linux o una Raspberry Pi, los pasos son prácticamente iguales, ofreciendo versatilidad según tus necesidades específicas.
Con NPM, puedes centralizar la gestión de múltiples aplicaciones, simplificar la configuración del firewall, y asegurar todas tus conexiones con certificados SSL automáticos. Además, su interfaz intuitiva facilita la administración incluso para usuarios con conocimientos técnicos limitados.
Si buscas una solución que te permita gestionar tus servicios web de manera centralizada y segura, Nginx Proxy Manager es la elección ideal. Aprovecha las ventajas de Docker para optimizar tu infraestructura y mantener tus servicios siempre disponibles y protegidos.
¿Te ha sido útil este tutorial? Compártelo y apóyanos para seguir creando contenido de calidad.
¡Gracias por tu apoyo!