Technical Anshu Inicio › Tutoriales › Instalación de Nginx Proxy Manager
🐳 Proxy inverso de Docker

Instalación de Nginx Proxy Manager: guía de configuración de 2 minutos

Sus servicios actualmente se encuentran en direcciones desagradables como 192.168.1.50:8080. Nginx Proxy Manager los convierte en nombres limpios como app.yourdomain.com con HTTPS gratuito, instalado con un archivo Docker Compose y administrado desde un panel web simple en lugar de archivos de configuración escritos a mano.

✍️ Technical Anshu🐳 Docker Compose🎧 Multi-Language Audio
Instalación de Nginx Proxy Manager: guía de configuración de 2 minutos
🎧 Audio Multilingüe: En el reproductor de video, haz clic en [Configuración] (⚙️) ➔ [Pista de audio] para elegir tu idioma.

📑Capítulos

  1. Qué hace un proxy inverso: una puerta para todos sus servicios
  2. Lo que necesitas antes de comenzar: Docker, un dominio y puertos accesibles
  3. Apunte el DNS de su dominio al servidor antes de instalar nada
  4. Cree la carpeta y el archivo docker-compose.yml
  5. Inicie Nginx Proxy Manager con un comando
  6. Primer inicio de sesión: el paso de la cuenta de administrador todos se equivocan
  7. Cree su primer host proxy, campo por campo
  8. Obtenga el certificado HTTPS gratuito de Lets Encrypt y active Forzar SSL

📋 Descripción general y guía paso a paso

1

Lo que necesitas antes de comenzar

Deben existir tres cosas antes de que Nginx Proxy Manager (NPM) pueda funcionar. Primero, un servidor Linux o una PC con Docker y Docker Compose ya instalados y funcionando: NPM se ejecuta como un contenedor, no como un programa normal. En segundo lugar, un nombre de dominio cuyo DNS puedas editar, porque cada servicio tiene su propio subdominio. En tercer lugar, su enrutador o firewall en la nube debe poder reenviar los puertos 80 y 443 a esta máquina.

📌 Acerca de los "2 minutos" del título: el inicio del contenedor en sí es realmente rápido, pero solo una vez que Docker ya está instalado y se realiza la preparación descrita en esta guía. En una máquina nueva, deje el tiempo adecuado para los pasos de configuración, DNS y certificado; el total honesto es más de dos minutos.
⚠️ En una conexión doméstica detrás de CGNAT, el reenvío de puertos no puede funcionar en absoluto; ninguna configuración dentro de NPM soluciona eso. Las opciones honestas entonces son una IP pública/estática de su ISP, un pequeño VPS alquilado o una herramienta de túnel. No se salte esta verificación: la mitad de todas las historias de "NPM no funciona" son en realidad historias de "los puertos nunca llegaron al servidor".
2

Primero apunte el DNS de su dominio al servidor

NPM enruta el tráfico por nombre y Lets Encrypt emite certificados solo para nombres que probablemente apunten a su máquina, por lo que el nombre debe resolverse antes de crear algo en él. En su registrador o host DNS, agregue un registro A: el Nombre es solo la palabra del subdominio (por ejemplo, app) y el Valor es la dirección IP pública de su servidor. Cada servicio tiene su propio registro y todos pueden apuntar a la misma IP; NPM separa los servicios más tarde, por nombre. Establezca un TTL corto, como 300 segundos, durante la prueba, para que los errores desaparezcan en minutos en lugar de horas.

Pruébalo antes de continuar: comprueba que el nombre se resuelva en tu IP pública desde una red externa (por ejemplo, desde tu teléfono con el Wi-Fi apagado). Solicitar un certificado contra los desperdicios de DNS rotos desperdicia los intentos de Lets Encrypt y los fallos repetidos pueden limitar su velocidad durante horas. El orden importa: DNS primero, segundo host proxy, tercero certificado.

3

Crear la carpeta y el archivo de redacción

Cree una carpeta para NPM en el servidor y guarde el archivo siguiente dentro de ella como docker-compose.yml. Este único archivo es la instalación completa. El nombre de la imagen es la imagen oficial de la comunidad. Los puertos 80 y 443 son las puertas públicas, el puerto 81 es el panel de administración y los dos volúmenes son donde reside toda su configuración: ./data contiene la base de datos con todos sus hosts proxy y ./letsencrypt contiene sus certificados. Si pierde esas dos carpetas, perderá toda la configuración; haga una copia de seguridad de ellas una vez que todo se esté ejecutando.

docker-compose.yml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

La línea restart: less-stopped devuelve NPM automáticamente después de un reinicio.

4

Inicie el Administrador de proxy Nginx

Desde dentro de esa carpeta, ejecute el comando de inicio. Docker descarga la imagen e inicia el contenedor en segundo plano.

Terminal
docker compose up -d

Compruebe que esté funcionando:

Terminal
docker ps

Debería ver el contenedor listado con los puertos 80, 443 y 81. En un servidor pequeño, el primer inicio tarda uno o dos minutos mientras se crea la base de datos. Si el contenedor sigue reiniciándose, los registros muestran el motivo en lenguaje sencillo:

Terminal
docker compose logs

Nueve de cada diez veces, un bucle de reinicio es un puerto que ya está utilizado por otra cosa en el host, generalmente un servidor web antiguo que aún se está ejecutando.

5

Primer inicio de sesión: proteja la cuenta de administrador inmediatamente

Abra el panel de administración en un navegador de su propia red:

Browser Address Bar
http://your-server-ip:81

Haz esto en el primer minuto. Dependiendo de la compilación, NPM le solicita que reemplace los conocidos detalles del administrador del primer inicio de sesión con su propio correo electrónico y una contraseña segura o, en compilaciones más nuevas sin una cuenta predeterminada, la primera persona que abre la página de administración crea el administrador. De cualquier manera, la regla es la misma: configure su propia cuenta de administrador en el momento en que se inicia el contenedor, antes de crear cualquier otra cosa, y use un buzón de correo real: correos electrónicos de NPM que abordan problemas de certificados.

⚠️ Nunca dejes el puerto 81 accesible públicamente mientras "lo terminas más tarde". Cualquier persona en Internet que encuentre el panel primero posee su proxy. Mantenga el panel de administración únicamente en su propia red.
6

Cree su primer servidor proxy

En NPM, abra Hosts → Hosts proxy → Agregar host proxy y complete el formulario con una oración: "este nombre va a ese servicio interno":

Nombres de dominio: app.yourdomain.com: el nombre público exacto del paso 2, que ya debe resolverse en su servidor.
Esquema: http para la mayoría de las aplicaciones domésticas y de oficina. El esquema describe la conexión entre NPM y el servicio interno, no lo que usan los visitantes: NPM maneja el cifrado público en la puerta. Elija https aquí solo cuando la aplicación interna proporcione HTTPS.
Reenviar nombre de host/IP: la dirección interna del servicio, por ejemplo 192.168.1.50.
Puerto de reenvío: el puerto en el que realmente escucha el servicio, por ejemplo 8080, no 80 ni 443; Esas son las puertas del MNP, no las del servicio.

Active Bloquear exploits comunes y luego guarde. Pruebe inmediatamente abriendo el nombre en un navegador, idealmente desde su teléfono con Wi-Fi apagado, para probar la ruta pública real.

✅ Un 502 Bad Gateway de NPM es una señal, no una falla: significa que el mundo exterior alcanzó NPM perfectamente y solo el último salto interno (nombre de host o puerto) es incorrecto. Arregle ese campo, no toda la configuración. Una trampa más: si el servicio se ejecuta en otro contenedor Docker, localhost es incorrecto (dentro del contenedor de NPM, localhost significa NPM mismo): use la IP LAN del servidor con el puerto publicado, o coloque ambos contenedores en la misma red Docker y use el nombre del contenedor.
7

Obtenga el certificado HTTPS gratuito de Lets Encrypt

Haga esto solo después de que el host simple del Paso 6 ya funcione: HTTPS en un host roto le brinda un host roto con un certificado y el doble de lugares para buscar la falla. Abra el mismo host proxy, vaya a la pestaña SSL, configure Certificado SSL en Solicitar un nuevo certificado SSL, habilite Forzar SSL y Soporte HTTP/2, acepte los Términos de servicio de Lets Encrypt y guarde. Vuelva a cargar el sitio: el navegador ahora debería mostrar el candado en https.

Cómo funciona: Lets Encrypt demuestra que usted controla el nombre al pedirle a su servidor, a través de Internet público en el puerto 80, que muestre un token único (el desafío HTTP-01). Es por eso que el DNS que apunta a usted y un puerto 80 accesible no son negociables: si falla cualquiera de ellos, la solicitud falla y el error está en la configuración, nunca en Lets Encrypt. Forzar SSL redirige a cada visitante http a https automáticamente; sin él, la puerta no cifrada permanece abierta junto a la cifrada.

📌 Los certificados tienen una duración de 90 días y NPM los renueva automáticamente, normalmente aproximadamente un mes antes de su vencimiento, utilizando el mismo puerto 80. Si alguna vez falla la renovación, verifique primero las causas aburridas: se cambió el DNS, se eliminó el reenvío del enrutador o se bloqueó el puerto 80. Habilite HSTS solo una vez que se haya liquidado un servicio y se hayan comprobado las renovaciones; es una promesa sólida que los navegadores recuerdan durante meses.

🏷️Variables y palabras clave de búsqueda de temas

🔍 Nginx Proxy Manager 🔍 Reverse Proxy 🔍 Docker Compose 🔍 Lets Encrypt 🔍 Free HTTPS 🔍 Proxy Host 🔍 TechnicalAnshu 🔍 Self Hosting 🔍 Subdomain Setup 🔍 Port 80 443 81 🔍 Force SSL 🔍 Home Server
🎙️ Transcripción completa: toque para ampliar

__TOK_34__

__TOK_35__

__TOK_36__

❓ Preguntas frecuentes

¿Este tutorial es 100% gratuito?

__TOK_37__

¿Pueden los principiantes seguir esta guía?

__TOK_38__

¿Dónde puedo hacer preguntas si me quedo atascado?

__TOK_39__

🚀 Mira el tutorial completo en YouTube

__TOK_40__

__TOK_41__

▶️ Ver vídeo completo
Este tutorial se basa en el vídeo de instalación de Nginx Proxy Manager de Technical Anshu • ¿Atascado en algún paso? Pregunte en los comentarios del video: allí recibirá ayuda 🙏