<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nginx &#8211; Mindeka</title>
	<atom:link href="https://mindeka.es/category/sistemas/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>https://mindeka.es</link>
	<description>Biblioteca de pensamientos e ideas.</description>
	<lastBuildDate>Sun, 01 Jun 2025 22:40:51 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://mindeka.es/wp-content/uploads/2025/06/mindeka-1-150x150.png</url>
	<title>Nginx &#8211; Mindeka</title>
	<link>https://mindeka.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Proyecto Selfhosting &#124; 3 Instalación de Nginx Proxy Manager (NPM)</title>
		<link>https://mindeka.es/2024/05/29/proyecto-selfhosting-3-instalacion-de-nginx-proxy-manager-npm/</link>
					<comments>https://mindeka.es/2024/05/29/proyecto-selfhosting-3-instalacion-de-nginx-proxy-manager-npm/#respond</comments>
		
		<dc:creator><![CDATA[jmdlr]]></dc:creator>
		<pubDate>Wed, 29 May 2024 16:00:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Selfhosting]]></category>
		<category><![CDATA[Sistemas]]></category>
		<guid isPermaLink="false">https://mindeka.duckdns.org/?p=117</guid>

					<description><![CDATA[Una vez configurada la IP estática en nuestro servidor Debian 12 que vimos en la primera entrada, la instalación de Docker posteriormente en el segundo artículo, seguimos adelante y ahora tocará instalar el proxy inverso que hará la función de protección de nuestro servidor web frente a ataques y que nos ayudará a conseguir un [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Una vez configurada la <strong>IP estática</strong> en nuestro servidor Debian 12 que vimos en la primera entrada, la instalación de <strong>Docker</strong> posteriormente en el segundo artículo, seguimos adelante y ahora tocará instalar el <strong>proxy inverso</strong> que hará la función de protección de nuestro servidor web frente a ataques y que nos ayudará a conseguir un mayor rendimiento.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="900" height="450" src="https://mindeka.duckdns.org/wp-content/uploads/2025/06/98879880-6796-11ea-8a07-a3f907697ec6-1.jpg" alt="" class="wp-image-118" srcset="https://mindeka.es/wp-content/uploads/2025/06/98879880-6796-11ea-8a07-a3f907697ec6-1.jpg 900w, https://mindeka.es/wp-content/uploads/2025/06/98879880-6796-11ea-8a07-a3f907697ec6-1-300x150.jpg 300w, https://mindeka.es/wp-content/uploads/2025/06/98879880-6796-11ea-8a07-a3f907697ec6-1-768x384.jpg 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>El servidor proxy inverso siempre se sitúa por delante de los servidores/servicios web que tengamos en el servidor y es el que se encargará de reenviar las solicitudes que reciba hacía los servicios alojados. Es por ello, que es el servicio que tenemos que configurar primeramente es este.</p>



<p>Para instalar este proxy necesitaremos de la última versión LTS de <strong>NodeJS</strong>, la cual descargaremos desde un repositorio. Por defecto, en Debian 12 viene la versión <em>18</em> que serviría, pero siempre me gusta tener actualizada la aplicación a la última versión LTS (<em>Long Term Support</em>) que exista, en este caso la versión <em>20</em>.</p>



<p>Antes de nada y como práctica habitual, primero haremos un <em>update</em> y <em>upgrade</em> para dejar el sistema actualizado hasta ese mismo momento. Lanzamos los comandos pertinentes:</p>



<pre class="wp-block-code"><code>sudo apt update &amp;&amp; sudo apt upgrade -y</code></pre>



<p>Después ya podemos ir a la página del repositorio llamado <strong>NodeSource</strong> de NodeJS (<a target="_blank" rel="noreferrer noopener" href="https://deb.nodesource.com">https://deb.nodesource.com</a>) desde donde podremos descargar e instalar la última versión LTS de esta herramienta. En su página veremos lo sencillo que es, básicamente tendremos que copiar/pegar dos líneas.</p>



<p>Pero antes de lanzar estas dos líneas, habrá que instalar el comando <strong>curl</strong> ya que por defecto no viene instalado por Debian.<br>Lanzamos la instalación:</p>



<pre class="wp-block-code"><code>sudo apt install curl</code></pre>



<pre class="wp-block-code"><code>curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs</code></pre>



<p>Si todo ha ido bien, podemos ver que ya lo tenemos instalado:</p>



<pre class="wp-block-code"><code>jmdlr@debian:~$ curl --version
curl 7.88.1 (x86_64-pc-linux-gnu) libcurl/7.88.1 OpenSSL/3.0.11 zlib/1.2.13 brotli/1.0.9 zstd/1.5.4 libidn2/2.3.3 libpsl/0.21.2 (+libidn2/2.3.3) libssh2/1.10.0 nghttp2/1.52.0 librtmp/2.3 OpenLDAP/2.5.13
Release-Date: 2023-02-20, security patched: 7.88.1-10+deb12u5
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd</code></pre>



<p>Con esto ya estaríamos listos y podemos lanzar las dos líneas que ponían en la página del repositorio:</p>



<pre class="wp-block-code"><code>curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs</code></pre>



<p>Terminada la instalación, toca comprobar que la versión instalada de <strong>NodeJS</strong> es la que queremos, en este caso la <em>20 LTS.</em><br>Ejecutamos el siguiente comando para visualizar la versión:</p>



<pre class="wp-block-code"><code>jmdlr@debian:~$ node -v
v20.13.1</code></pre>



<p>¡Bien hecho! Ahora ya solo toca instalar el proxy, para ello vamos a la página oficial de <strong>GitHub</strong> de <strong>NPM</strong> para ver la última versión disponible he instalarla.</p>



<ul class="wp-block-list">
<li><a href="https://github.com/NginxProxyManager/nginx-proxy-manager" target="_blank" rel="noreferrer noopener">https://github.com/NginxProxyManager/nginx-proxy-manager</a></li>
</ul>



<p>Vamos a seguir exactamente los pasos que se indican ahí, que de manera resumida son las siguientes.</p>



<p>Creamos un fichero <em>docker-compose.yml</em>:</p>



<pre class="wp-block-code"><code>vi docker-compose.yml</code></pre>



<p>Añadimos el siguiente contenido:</p>



<pre class="wp-block-code"><code>version: '3.8'
services:
  app:
    image: 'docker.io/jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt</code></pre>



<p>Estamos indicando en el fichero qué:</p>



<ul class="wp-block-list">
<li>Usaremos la última imagen disponible que exista del NPM,</li>



<li>Abriremos los puertos 80, 443 y 81 para el dashboard de administración de la app, y</li>



<li>Se crearán las siguientes carpetas de «data» y «letsencrypt».</li>
</ul>



<p>Salvamos el fichero (:wq!) y lo ejecutamos:</p>



<pre class="wp-block-code"><code>docker compose up -d</code></pre>



<p>Esto tardará un ratillo entre que descargar la imagen, configura, etc. Al final tendrá que indicarnos con checks de color verde, que todo ha ido bien.<br>Para confirmarlo podemos ver en qué estado está la aplicación dentro de docker, para ello ejecutamos lo siguiente:</p>



<pre class="wp-block-code"><code>docker ps</code></pre>



<p>Y tendría que devolvernos que el contenedor de la aplicación está corriendo como podremos ver en la columna de «Status», que dirá el tiempo que lleva levantado:</p>



<pre class="wp-block-code"><code>jmdlr@debian:~$ docker ps
CONTAINER ID   IMAGE                             COMMAND   CREATED          STATUS          PORTS                                                                                  NAMES
016fdef7c34a   jc21/nginx-proxy-manager:latest   "/init"   57 seconds ago   Up 55 seconds   0.0.0.0:80-81-&gt;80-81/tcp, :::80-81-&gt;80-81/tcp, 0.0.0.0:443-&gt;443/tcp, :::443-&gt;443/tcp   jmdlr-app-1</code></pre>



<p>Si esto es así, el servicio estará levantado, probemos directamente lo que nos dice el puerto <strong>80</strong>.<br>Abrimos un navegador en nuestro equipo y atacamos a la <strong>IP de nuestro servidor</strong> en mi caso será la IP 192.168.1.12:</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="1024" height="366" src="https://mindeka.duckdns.org/wp-content/uploads/2025/06/image-3-1024x366-1.png" alt="" class="wp-image-119" style="border-width:1px" srcset="https://mindeka.es/wp-content/uploads/2025/06/image-3-1024x366-1.png 1024w, https://mindeka.es/wp-content/uploads/2025/06/image-3-1024x366-1-300x107.png 300w, https://mindeka.es/wp-content/uploads/2025/06/image-3-1024x366-1-768x275.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ahora vamos a ir a la página de administración de NPM que por defecto se configura en el puerto <strong>81</strong> y nos devolverá esta ventana de «login»:</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="732" height="316" src="https://mindeka.duckdns.org/wp-content/uploads/2025/06/image-4.png" alt="" class="wp-image-120" style="border-width:1px" srcset="https://mindeka.es/wp-content/uploads/2025/06/image-4.png 732w, https://mindeka.es/wp-content/uploads/2025/06/image-4-300x130.png 300w" sizes="(max-width: 732px) 100vw, 732px" /></figure>



<p>Para acceder, como se indica en la página oficial tendremos que utilizar estas credenciales de abajo, que posteriormente nos obligarán a cambiar la primera vez que accedamos, al igual que el nombre, usuario y dirección de correo electrónico.</p>



<ul class="wp-block-list">
<li>Usuario: <a href="mailto:admin@example.com" target="_blank" rel="noreferrer noopener"><em>admin@example.com</em></a></li>



<li>Contraseña: <em>changeme</em></li>
</ul>



<figure class="wp-block-image size-full has-custom-border"><img loading="lazy" decoding="async" width="1024" height="300" src="https://mindeka.duckdns.org/wp-content/uploads/2025/06/image-5-1024x300-1.png" alt="" class="wp-image-121" style="border-width:1px" srcset="https://mindeka.es/wp-content/uploads/2025/06/image-5-1024x300-1.png 1024w, https://mindeka.es/wp-content/uploads/2025/06/image-5-1024x300-1-300x88.png 300w, https://mindeka.es/wp-content/uploads/2025/06/image-5-1024x300-1-768x225.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full has-custom-border"><img loading="lazy" decoding="async" width="1024" height="371" src="https://mindeka.duckdns.org/wp-content/uploads/2025/06/image-6-1024x371-1.png" alt="" class="wp-image-122" style="border-width:1px" srcset="https://mindeka.es/wp-content/uploads/2025/06/image-6-1024x371-1.png 1024w, https://mindeka.es/wp-content/uploads/2025/06/image-6-1024x371-1-300x109.png 300w, https://mindeka.es/wp-content/uploads/2025/06/image-6-1024x371-1-768x278.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Añadimos la información que queramos poner y daremos al botón de «Save». Y ya estaremos en la página principal desde la que gestionaremos los diferentes apartados de nuestro proxy.</p>



<figure class="wp-block-image size-full has-custom-border"><img loading="lazy" decoding="async" width="1024" height="270" src="https://mindeka.duckdns.org/wp-content/uploads/2025/06/image-7-1024x270-1.png" alt="" class="wp-image-123" style="border-width:1px" srcset="https://mindeka.es/wp-content/uploads/2025/06/image-7-1024x270-1.png 1024w, https://mindeka.es/wp-content/uploads/2025/06/image-7-1024x270-1-300x79.png 300w, https://mindeka.es/wp-content/uploads/2025/06/image-7-1024x270-1-768x203.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Y hasta aquí toda la instalación de nuestro proxy, seguiremos en próximos artículos con la instalación de los diferentes servicios que queramos tener disponibles en nuestro servidor y veremos como debemos configurar NPM para que las peticiones sean redireccionadas según al servicio que se quiera acceder.</p>



<p>¡Nos vemos por el Fediverso!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mindeka.es/2024/05/29/proyecto-selfhosting-3-instalacion-de-nginx-proxy-manager-npm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
