Cómo configurar Nginx Proxy Manager

En otra ocasión hemos explicado cómo configurar Nginx para usarlo como Reverse Proxy, y nos puede ser suficiente para gestionar pocos servicios. Pero a la que empecemos a tener más y más aplicaciones que gestionar puede ser algo tedioso, sobre todo en lo que al control de certificados y posibles modificaciones futuras se refiere.

Para solventar este problema tenemos Nginx Proxy Manager, una "evolución" de Nginx que nos permite gestionar tanto los servicios actuales como la adición de nuevos desde una interfaz gráfica, donde podremos modificar mucho más fácilmente la configuración que ya vimos en el otro artículo.

Configurar Nginx como Reverse Proxy + Certbot con Docker
Si somos de los que gusta trastear con estas cosas, es probable que en algún momento decidamos dar el salto a tener nuestro propio servidor, ya sea en casa o en la nube. En cualquier caso, es también probable que llegados a ese punto queramos probar varios servicios por nuestra

Vamos por faena.

Crear un subdominio

Lo primero que deberíamos hacer es crear un subdominio para Nginx Proxy Manager que apunte a la IP de nuestro servidor, desde nuestro proveedor de dominios, para así poder acceder fácilmente al servicio. Si usamos Ionos, como es mi caso, se hace desde las opciones del propio dominio.

Una vez en la sección de Subdominios simplemente añadimos uno nuevo.

Luego hay que acordarse de apuntarlo a la IP correspondiente. Si tenéis otro proveedor de dominios, tendréis que investigar las opciones y configuraciones.

Abrir el puerto 81 de nuestro servidor

Generalmente, deberíamos tener abiertos únicamente los puertos 80 y 443 para el acceso web, y el puerto 22 para el acceso SSH, pero para esta configuración necesitamos abrir temporalmente el puerto 81.

Para ello deberemos acceder al panel de nuestra cuenta donde tenemos contratado el VPS, ir a la sección de firewall y abrirlo. Como antes, depende de cada proveedor.

Docker Compose

Nginx Proxy Manager sólo se puede desplegar mediante Docker, por lo que nos apoyaremos en Docker Compose para facilitarnos las cosas.

Para ello, lo primero que debemos hacer es crear la carpeta correspondiente donde más nos guste (o donde tengamos los demás proyectos). Luego creamos un fichero en dicha carpeta llamado docker-compose.yml con el siguiente contenido:

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

A continuación ejecutamos docker-compose up -d y en pocos segundos podremos acceder a http://misubdominio.midominio.com:81. Para entrar usaremos "admin@example.com" como email y "changeme" como contraseña, que obviamente deberemos cambiar nada más acceder.

Una vez dentro, veremos el panel principal.

Crear certificados para nuestros servicios

Lo primero que debemos hacer es generar el certificado para el propio Nginx Proxy Manager. Para ello, pulsamos sobre Hosts/Proxy Hosts y a la derecha veremos un botón que pone "Add Proxy Host".

En la ventana emergente que nos aparezca debemos indicar el dominio/subdominio que vamos a gestionar (sin http/https), la IP interna donde está desplegado el servicio y el puerto correspondiente.

Las demás opciones las podemos dejar por defecto, pero dependerá del servicio, ya que algunos los requieren y otros pueden dar problemas. Es cuestión de probar o ver la documentación del servicio que estamos desplegando.

Una vez tenemos añadido el dominio, vamos a la pestaña SSL para generar el certificado. En el menú desplegable seleccionamos "Request a new SSL Certificate".

Y activamos sí o sí "Force SSL", para que sólo pueda accederse al servicio mediante HTTPS.

Una vez guardado podremos probar a ir al dominio que hemos creado anteriormente y deberíamos poder acceder. Si funciona, procederemos a cerrar el puerto 81 y dejar únicamente el 80, 443 y 22.

Y ya lo tendríamos todo listo, lo único que deberíamos hacer ahora es crear tantos Hosts como servicios tengamos, con sus correspondientes certificados.

Para más detalles o configuración más específica podéis acceder a la página oficial de Nginx Proxy Manager.