[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"seo-verification":3,"blog-desplegar-con-nginx-proxy-manager-ma-es":6,"promo-bar-likely":204},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-desplegar-con-nginx-proxy-manager-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":147,"ctaBody":148,"ctaButton":149,"ctaUrl":150,"relatedPosts":151},37,"desplegar-con-nginx-proxy-manager",{"fr":12,"en":13,"ar":14,"es":10},"deployer-avec-nginx-proxy-manager","deploy-your-applications-with-nginx-proxy-manager-on-a-vps","انشر-تطبيقاتك-باستخدام-nginx-proxy-manager-على-خادم-vps","Desplegar sus aplicaciones con Nginx Proxy Manager en un VPS","Gestione dominios, SSL y reverse proxy de varios servicios en un VPS con Nginx Proxy Manager: instalación, redes Docker, errores 502 y ajustes avanzados.",10,7,false,"2026-05-14T00:00:00+00:00","2026-11-08T01:13:14+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-nginx-proxy-manager-poster.svg","Nginx Proxy Manager (NPM) coloca una interfaz web clara por encima de Nginx para gestionar reverse proxies, dominios y certificados SSL sin editar un solo archivo de configuración. En cuanto aloja más de una aplicación en un VPS —una API, un Gitea, un Portainer, un n8n— necesita una capa de enrutamiento HTTP fiable. Esta guía le lleva desde la instalación con Docker hasta los ajustes avanzados: redes aisladas, listas de acceso, wildcard SSL y resolución de los errores más frecuentes.",[34,38,49,52,86,89,93,96,104,144],{"type":35,"title":36,"body":37},"h2","Por qué un reverse proxy en su VPS","Un VPS expone una sola dirección IP pública. Detrás de esa IP puede ejecutar cinco, diez o veinte servicios en puertos internos distintos. Sin reverse proxy, exponer cada servicio en un puerto público implica abrir esos puertos en el firewall, gestionar manualmente los certificados TLS de cada uno e informar de ello a cada usuario. Un reverse proxy resuelve estos tres problemas de una sola vez: recibe todo el tráfico en los puertos 80 y 443, identifica el dominio solicitado y redirige la petición al contenedor interno correcto. Nginx Proxy Manager añade una capa de interfaz gráfica a esta mecánica: ningún archivo de configuración que escribir, ningún reload manual, y los certificados Let's Encrypt se gestionan con unos pocos clics. Resulta especialmente adecuado para las agencias que alojan varias aplicaciones de clientes en el mismo servidor, o para los desarrolladores independientes que ejecutan varios proyectos en paralelo.",{"type":39,"title":40,"items":41},"ul","NPM frente a la configuración manual de Nginx: 7 ventajas concretas",[42,43,44,45,46,47,48],"Ningún archivo de configuración: cada proxy host se crea desde la interfaz web, sin sintaxis Nginx que memorizar.","Certificados Let's Encrypt automáticos: NPM solicita, instala y renueva los certificados sin intervención. Wildcard posible mediante DNS challenge.","Gestión centralizada: todos sus dominios, subdominios y redirecciones en una sola pantalla, en lugar de una decena de archivos en `\u002Fetc\u002Fnginx\u002Fsites-enabled\u002F`.","Listas de acceso (Access Lists) integradas: proteger un servicio por IP o por contraseña sin tocar la configuración de cada aplicación.","Logs por host consultables en la interfaz: identificar un error 502 o un abuso sin entrar por ssh en el contenedor.","Redirecciones HTTP→HTTPS y páginas 404 personalizadas configurables de forma visual.","Descubrimiento por nombre de contenedor Docker: apuntar a `portainer:9000` en lugar de a una IP interna inestable que cambia al reiniciar.",{"type":35,"title":50,"body":51},"Requisitos previos con cifras antes de instalar NPM","NPM solo enruta tráfico, por lo que es ligero. Un VPS con 1 GB de RAM y 1 vCPU basta si NPM es el único servicio destacable. Si además aloja detrás de él las aplicaciones, dimensione según la suma de sus necesidades. Prevea 15 GB de disco SSD (certificados, base SQLite, logs). Software necesario: Docker Engine 28 o posterior (antes de la 28.0, un puerto publicado en `127.0.0.1` seguía siendo accesible desde la red local) y el plugin Compose v2 (`docker compose`, no el antiguo comando `docker-compose`). Red: los puertos 80 y 443 deben estar libres en el VPS, ya que NPM es su único ocupante. El puerto 81 queda reservado a la interfaz de administración; nunca debe exponerse directamente a Internet. DNS: apunte sus registros A a la IP del VPS antes de solicitar los certificados. Para un wildcard `*.votre-domaine.com`, hace falta una clave API de su proveedor DNS (Cloudflare, OVH, etc.).",{"type":53,"title":54,"steps":55},"steps","Instalación y primera configuración de Nginx Proxy Manager",[56,59,62,65,68,71,74,77,80,83],{"title":57,"body":58},"Instalar Docker en el VPS","En un servidor Debian\u002FUbuntu: `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Compruebe después: `docker --version` y `docker compose version`. Si el plugin Compose no está presente, instale el paquete `docker-compose-plugin` con apt.",{"title":60,"body":61},"Crear la carpeta de trabajo y el archivo Compose","Cree `\u002Fopt\u002Fnpm` en el VPS. Dentro de esa carpeta, cree un archivo `docker-compose.yml`. Declare en él el servicio NPM con la imagen `jc21\u002Fnginx-proxy-manager:latest`, mapee los puertos `80:80` y `443:443`, publique la administración solo en la dirección de bucle local (`127.0.0.1:81:81`), añada `restart: unless-stopped` y defina dos volúmenes: `.\u002Fdata:\u002Fdata` y `.\u002Fletsencrypt:\u002Fetc\u002Fletsencrypt`.",{"title":63,"body":64},"Arrancar el contenedor","Desde `\u002Fopt\u002Fnpm`, ejecute `docker compose up -d`. Compruebe que el contenedor está en marcha: `docker compose ps`. El primer arranque puede tardar uno o dos minutos. Como el puerto 81 solo escucha en `127.0.0.1`, abra un túnel SSH desde su equipo (`ssh -L 8181:127.0.0.1:81 usuario@IP_DU_VPS`) y luego la interfaz en `http:\u002F\u002Flocalhost:8181`.",{"title":66,"body":67},"Primera conexión y protección de la cuenta admin","Desde la versión 2.13.0 (noviembre de 2025), NPM ya no crea una cuenta por defecto: en el primer acceso, una pantalla de instalación le pide crear la cuenta de administrador, con una contraseña larga y única. Hágalo antes de cualquier otra acción: esta cuenta da acceso total a su infraestructura de enrutamiento. Para un despliegue automatizado, las variables `INITIAL_ADMIN_EMAIL` e `INITIAL_ADMIN_PASSWORD` crean esa cuenta al arrancar; colóquelas en un archivo `.env` (contraseña generada con `openssl rand -base64 32`), nunca en claro en el Compose. En una versión anterior existe la cuenta `admin@example.com` \u002F `changeme`: cámbiela de inmediato.",{"title":69,"body":70},"Crear una red Docker compartida","Para que NPM pueda alcanzar sus contenedores de aplicación por su nombre, deben compartir la misma red Docker. Cree una red externa: `docker network create proxy`. En el `docker-compose.yml` de NPM, declare esa red como externa. Haga lo mismo en el Compose de cada aplicación que quiera proxificar.",{"title":72,"body":73},"Añadir un primer Proxy Host","En la interfaz: Proxy Hosts → Add Proxy Host. Indique el dominio (p. ej. `app.votre-domaine.com`), el `Forward Hostname` (nombre del contenedor o IP interna) y el puerto de la aplicación. Marque «Block Common Exploits». Si la aplicación usa WebSockets, active «Websockets Support».",{"title":75,"body":76},"Activar el SSL de Let's Encrypt","En la pestaña SSL del Proxy Host, elija «Request a new SSL Certificate», acepte las condiciones de Let's Encrypt y marque «Force SSL». NPM contacta con los servidores ACME, valida el dominio mediante HTTP-01 e instala el certificado. Su servicio queda en HTTPS en unos segundos. La renovación es automática.",{"title":78,"body":79},"Proteger la interfaz de administración (puerto 81)","No confíe en `ufw deny 81`: Docker encamina los puertos publicados antes de las reglas de ufw, que por tanto no los filtran. Lo que mantiene el puerto fuera de Internet es la publicación en `127.0.0.1:81` (paso 2). Para un acceso sin túnel, cree después un Proxy Host dedicado —por ejemplo `npm.votre-domaine.com` → `localhost:81`— con SSL y una Access List restringida a su IP de gestión. Así accede a la interfaz por HTTPS sin exponer el puerto 81 al resto del mundo.",{"title":81,"body":82},"Certificado wildcard mediante DNS challenge","Para cubrir todos sus subdominios con un solo certificado, use el DNS challenge. En la pestaña SSL, seleccione «Use a DNS Challenge», elija su proveedor (Cloudflare, OVH…) e indique la clave API. NPM crea un registro TXT en su zona DNS, valida la propiedad del dominio y obtiene el certificado `*.votre-domaine.com`.",{"title":84,"body":85},"Probar la cadena completa","Desde un terminal: `curl -I https:\u002F\u002Fapp.votre-domaine.com`. Espere un código `200` o el código de su aplicación. Compruebe también la redirección HTTP: `curl -I http:\u002F\u002Fapp.votre-domaine.com` debe devolver un `301` hacia la versión HTTPS.",{"type":35,"title":87,"body":88},"Configuración avanzada","NPM expone en su interfaz varias funcionalidades que van más allá del simple reverse proxy. Las **Access Lists** permiten restringir el acceso a un host por rango de IP, por credenciales HTTP Basic Auth, o por una combinación de ambos, algo útil para proteger un backoffice sin añadir autenticación en la propia aplicación. Los **Streams** gestionan el proxy TCP\u002FUDP para los protocolos que no son HTTP (MySQL remoto, servidor de juegos, MQTT…). La sección **Redirecciones** crea reglas permanentes (301) o temporales (302) de un dominio o de una ruta hacia otra URL, sin que haga falta un servicio detrás. Las **pestañas Avanzado** de cada proxy host permiten inyectar configuración Nginx en bruto cuando la interfaz no cubre un caso particular (cabeceras de seguridad personalizadas, `proxy_read_timeout` ampliado para las peticiones largas de subida, etc.).",{"type":90,"title":91,"body":92},"tip","Endurecimiento: rate limiting en la pestaña Avanzado","NPM no expone ningún control de rate limiting en su interfaz básica, pero puede aplicarlo desde la pestaña «Advanced» del proxy host correspondiente. La zona compartida no puede declararse allí (`limit_req_zone` solo se admite en el bloque `http`, y la pestaña Advanced escribe en el bloque `server`): coloque `limit_req_zone $binary_remote_addr zone=api:10m rate=30r\u002Fm;` en `.\u002Fdata\u002Fnginx\u002Fcustom\u002Fhttp_top.conf`, que NPM incluye al principio del bloque `http`. Después aplíquela en la pestaña Advanced: `limit_req zone=api burst=10 nodelay;`. Esto limita cada IP a 30 peticiones por minuto con un burst de 10, lo que basta para recortar el scraping o los intentos de fuerza bruta en un formulario de inicio de sesión sin bloquear a los usuarios legítimos.",{"type":35,"title":94,"body":95},"Resolución de los errores más frecuentes","Estos son los cinco problemas más frecuentes que aparecen tras una instalación de NPM, con su diagnóstico directo.",{"type":39,"title":97,"items":98},"Errores frecuentes y sus causas",[99,100,101,102,103],"**502 Bad Gateway**: NPM no alcanza su contenedor. Compruebe primero que el contenedor de la aplicación está en marcha (`docker ps`) y que está en la misma red Docker que NPM (`docker network inspect proxy`). Compruebe después que el `Forward Hostname` corresponde exactamente al nombre del servicio declarado en el Compose de la aplicación.","**Certificado SSL pendiente o error ACME**: Let's Encrypt debe poder alcanzar su servidor en el puerto 80 a través del dominio declarado. Compruebe que el registro DNS A apunta a la IP correcta, que el puerto 80 no está bloqueado por el firewall del VPS ni por un filtro de red aguas arriba, y que el dominio se resuelve desde el exterior (`dig app.votre-domaine.com`).","**Contenedor inaccesible mediante el nombre DNS de Docker**: si apunta a `monapp:3000` y obtiene un error de resolución, el contenedor `monapp` no está en la misma red que NPM. Añada la red `proxy` en el Compose de la aplicación y vuelva a crear los contenedores (`docker compose up -d --force-recreate`).","**Redirección infinita HTTP→HTTPS**: ocurre cuando la propia aplicación efectúa su propia redirección HTTPS además de la de NPM. NPM ya envía la cabecera `X-Forwarded-Proto`: configure la aplicación para que confíe en el proxy (ajuste «trusted proxies» o equivalente) y conozca así el protocolo real. Detrás de Cloudflare, compruebe también que el modo SSL\u002FTLS es Full (strict): en Flexible, la redirección HTTPS del origen entra en bucle.","**Interfaz de administración inaccesible tras un reinicio**: asegúrese de que el servicio NPM tiene la directiva `restart: unless-stopped` en su Compose. Sin ella, Docker no volverá a arrancar el contenedor tras un reboot del VPS.",{"type":105,"title":106,"headers":107,"rows":111},"comparison","Nginx Proxy Manager frente a Traefik",[108,109,110],"Criterio","Nginx Proxy Manager","Traefik",[112,116,120,124,128,132,136,140],[113,114,115],"Configuración","Interfaz web visual, ningún archivo que editar","Archivos YAML y labels de Docker",[117,118,119],"Curva de aprendizaje","Baja, accesible sin experiencia en Nginx","Más pronunciada, orientada a DevOps",[121,122,123],"SSL Let's Encrypt","Automático desde la interfaz, wildcard posible","Automático mediante configuración",[125,126,127],"Descubrimiento de servicios","Manual (nombre de contenedor o IP:puerto)","Automático mediante labels de Docker",[129,130,131],"Ideal para","Unos pocos servicios gestionados manualmente, setup claro","Entornos dinámicos y numerosos contenedores",[133,134,135],"Consumo de RAM","Muy bajo","Bajo",[137,138,139],"Logs por host","Consultables en la interfaz","Mediante un stack de logs externo",[141,142,143],"Gestión de accesos","Access Lists integradas (IP, contraseña)","Middlewares que hay que configurar",{"type":35,"title":145,"body":146},"Cuándo plantearse Traefik o Caddy","NPM encaja perfectamente para un parque de servicios estable cuyo número se mantiene bajo control. En cuanto gestiona despliegues dinámicos —contenedores que aparecen y desaparecen de forma automática, como en un entorno Kubernetes o con pipelines CI\u002FCD que crean previews sobre la marcha—, Traefik resulta más adecuado: su descubrimiento de servicios mediante los labels de Docker evita volver a la interfaz por cada nuevo contenedor. Caddy es una buena alternativa si busca la sencillez de la configuración por archivo con certificados automáticos, sin interfaz web. En todos los casos, NPM puede convivir con Traefik o Caddy en el mismo VPS, gestionando cada uno una parte del tráfico, siempre que no ponga dos proxies en los mismos puertos 80 y 443. Si su infraestructura crece hasta el punto de gestionar varias decenas de servicios con equipos distintos, una malla de servicios (Consul Connect, Linkerd) sustituye con ventaja al apilamiento de proxies.","Centralice sus dominios con Nginx Proxy Manager","Un VPS Cloud ServOrbit listo con Docker le permite instalar Nginx Proxy Manager como punto de entrada HTTPS único y enrutar todos sus servicios con un SSL automático.","Elegir mi VPS Cloud","\u002Fvps-cloud",[152,171,188],{"id":153,"slug":154,"slugs":155,"title":159,"excerpt":160,"readTime":17,"views":161,"isPinned":19,"noindex":19,"publishedAt":162,"updatedAt":163,"category":164,"categories":165,"featuredImage":29,"bgImage":30,"posterImage":167,"relatedSolution":168},33,"desplegar-aplicaciones-con-caprover-en-un-vps",{"fr":156,"en":157,"ar":158,"es":154},"deployer-avec-caprover","deploy-your-applications-with-caprover-on-a-vps","انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps","Desplegar sus aplicaciones con CapRover en un VPS","Guía completa de CapRover: instalación, captain-definition, CI\u002FCD con GitHub Actions, clúster multinodo, copias de seguridad y resolución de problemas.",2,"2026-05-18T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[166],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":169,"appSlug":170},"despliegue-de-aplicaciones-devops","caprover",{"id":172,"slug":173,"slugs":174,"title":178,"excerpt":179,"readTime":180,"views":181,"isPinned":19,"noindex":19,"publishedAt":182,"updatedAt":183,"category":184,"categories":185,"featuredImage":29,"bgImage":30,"posterImage":187,"relatedSolution":29},34,"desplegar-aplicaciones-con-dokku-en-un-vps",{"fr":175,"en":176,"ar":177,"es":173},"deployer-avec-dokku","deploy-your-applications-with-dokku-on-a-vps","انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps","Desplegar sus aplicaciones con Dokku en un VPS","Guía completa de Dokku v0.35: instalación, buildpacks, variables de entorno, rollback, plugins postgres\u002Fredis\u002Fletsencrypt y resolución de errores frecuentes.",11,1,"2026-05-17T00:00:00+00:00","2026-10-18T21:57:59+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[186],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"id":189,"slug":190,"slugs":191,"title":195,"excerpt":196,"readTime":17,"views":181,"isPinned":19,"noindex":19,"publishedAt":197,"updatedAt":163,"category":198,"categories":199,"featuredImage":29,"bgImage":30,"posterImage":201,"relatedSolution":202},35,"desplegar-aplicaciones-con-portainer-en-un-vps",{"fr":192,"en":193,"ar":194,"es":190},"deployer-avec-portainer","deploy-your-applications-with-portainer-on-a-vps","انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps","Desplegar sus aplicaciones con Portainer en un VPS","Pilote Docker visualmente con Portainer en su VPS: contenedores, stacks, volúmenes y redes gestionados desde una interfaz web clara.","2026-05-16T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[200],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":169,"appSlug":203},"portainer",true,1794270589828]