Tutoriales, noticias y soluciones informáticas

PiServer con Docker – Parte 9: Configuración de un servidor Proxy nginx, beneficios y guía paso a paso

Después de haber visto las ventajas que tiene usar Docker en servidores (domésticos y empresariales), de aprender cómo se usa y de haber instalado unos cuantos Dockers simples, toca instalar por fin un proxy que nos ayude a realizar instalaciones que nos generen páginas web.

Entonces ¿al final no voy a poder instalar más cosas sin el proxy?
Varios equipos informáticos

Como hemos dicho en el artículo anterior, por poder puedes, pero todas las páginas web van a querer instalarse en el puerto 80. Si no usas un proxy o bien vas a tener direcciones web feas, del estilo «midominio.com:8472» o bien tendrás que hacer la instalación directamente en el sistema sin usar docker, pero teniendo que configurar absolutamente todo a mano. Así que te va a compensar mucho usar un proxy, y el que vamos a ver es extraordinariamente sencillo de usar. Pero antes de ponernos a instalar el Docker del proxy, tenemos que preparar un par de cosas en nuestro sistema. Veámoslas.

1- Mapeamos los puertos 80 y 443 a la ip local de nuestra raspberry.

Esos dos son los puertos que necesitan las webs de hoy en día para funcionar. El puerto 80 va a transmitir la web sin ningún certificado de seguridad. El 443 va a permitir que la web esté securizada.

Ah, vale. Pues como yo quiero tener todo muy seguro entonces voy a mapear sólo el puerto 443 porque...

No te pongas a hacer inventos, Usuario Anónimo. El puerto 80 lo necesitamos precisamente para poder generar el certificado de seguridad que nos permitirá usar el 443. Además, si alguien pone en su navegador la web como «http://miweb.com» en lugar de https, tenemos que hacer que de alguna forma se pueda llegar igualmente a esa dirección. Así que hay que mapear sí o sí los dos puertos.

Venga, vale. ¿Y cómo hago el mapeo?

Cada router es diferente y en cada marca y modelo se hace de una u otra forma. Deberías acceder a la web de configuración de tu router (normalmente en la dirección 192.168.1.1 o 192.168.0.1) y una vez dentro buscar algún apartado que ponga algo así como «puerto de envío», «Red», «Network» o «Forwarding». Dentro de ese apartado debemos configurar estas dos reglas de reenvío de puertos:

PUERTO 80

  • Puerto interno: 80
  • Puerto externo: 80
  • Protocolo: TCP
  • IP interna: la de tu Raspberry

PUERTO 443

  • Puerto interno: 443
  • Puerto externo:443
  • Protocolo: TCP
  • IP interna: la de tu Raspberry
Bah, voy a poner que vaya por TCP y UDP por si las moscas. Así siempre funciona. 

Efectivamente, si pones UDP y TCP va a funcionar también, pero estarás abriendo más cosas de las necesarias. Por seguridad nunca abras nada que no debas abrir, porque luego accidentalmente se pueden meter cosas por aquello que has abierto que no deseas que se metan. Esto te servirá tanto para la seguridad de tu red doméstica como para muchos otros aspectos de la vida.

Yoda Chulito

2- Asociamos el dominio con nuestra ip pública.

Voy a suponer que ya habéis conseguido un dominio de alguna forma (ya sea de pago o gratuíto). Contad con que que cuando compráis un dominio nuevo, las DNS (la correlación entre el dominio y la ip pública) pueden tardar en propagarse. Lo más habitual es que tarden un par de horas como máximo, pero si hay problemas la propagación puede tardar incluso varios días. Tenedlo en cuenta si tenéis algún tipo de error.

En todo caso lo que debemos hacer es que el dominio que tengamos (ya sea un dominio gratuíto o de pago) apunte siempre a la ip pública de nuestra conexión.

Muy bien, pero ¿Cómo sé qué ip pública tengo?

Hay varias formas de averiguarlo, pero la más sencilla es ir a esta web:

https://www.cualesmiip.com

Esa página te dirá al momento la ip pública desde la que estás viendo esa página. Acuérdate de que si no tienes ip pública para ti sólo (si estás sobre CG-NAT) debes solicitar una a tu operadora de internet (hablamos de esa problemática en el artículo anterior). Pero puede que tengas una ip pública fija (siempre la misma) o que tengas una dinámica (que cambie cada vez que reinicias tu router). Vamos a ver cómo dirigir el dominio a nuestra ip en cada uno de los casos.

Caso 1: IP Fija

Debemos ir al proveedor de servicios con el que hayamos conseguido el dominio y buscar la configuración de «Zona DNS». Por ejemplo, si hemos comprado un dominio en «Dondominio«, debemos ir al «área de cliente», «dominios», pulsar en nuestro dominio y en la zona de «Alojamiento Web» pulsar en «Zona DNS».

Gestión del dominio en Dondominio

En otros proveedores la localización de esta configuración puede cambiar. Por ejemplo en «Dinahosting«, en el menú superior hay que entrar en «Dominios», luego seleccionar el dominio deseado y en la zona de la izquierda seleccionar «Zonas DNS».

Gestión del dominio en Dinahosting

Aquí lo que debemos crear es lo siguiente:

  • Debemos crear un registro «A»
  • El valor debe ser la ip pública de nuestra conexión.
  • Si nos pregunta, el host debe ser «@» (necesario en dinahosting).

Con esto nos aseguramos que cada vez que algo intente ir a ese dominio, el dominio apunte a nuestra IP Pública.

Ojo. Si tienes el dominio principal asociado a la ip de dinahosting, cada vez que crees un subdominio tendrás que ir asociando cada subdominio a tu IP pública. Sí, uno por uno. No queda otra. Además debemos hacer cada uno por duplicado (mapear loquesea.nuestrodominio.com y *.loquesea.nuestrodominio.com). Quedaría algo similar a esto.

Mapeos de puertos de dinahosting

Otra cosa que debéis tener en cuenta: según lo que me dice José Miguel en los comentarios de este artículo, este mismo problema también sucede en los dominios de no-ip.com, así que si usáis ese proveedor para el tema de dominios tenedlo en cuenta.

Por cierto… podemos también asociar subdominios a otras ip’s públicas. Por ejemplo, si dejáis una Raspberry encendida en casa de un amigo, podéis asociar el dominio principal a vuestra Raspberry y un subdominio del tipo «miamigo.midominio.es» asociado a la ip pública de la casa de vuestro amigo. Esto da pie a hacer un montón de cosas con un sólo dominio.

Como veis, la problemática con IP fija es muy sencilla. Vamos ahora a complicar las cosas.

Caso 2: ip dinámica

Con ip dinámica las cosas cambian un poco, porque necesitamos poner un programa en algún sitio que esté continuamente monitorizando si la ip pública ha cambiado en algún momento.

En su momento os indiqué en el apartado 2 de este artículo como hacer todo esto con dnsexit en un dominio gratuíto. Ahora vamos a ver cómo se hace lo mismo pero en un dominio «de verdad» usando la herramienta de Dondominio, llamada «Dondns». En todo caso tened en cuenta que los de DonDominio han colgado instrucciones detalladas en esta dirección, por si queréis mirarlas con calma.

Lo primero que debemos hacer es, desde la carpeta «home» de nuestro usuario (/home/usuario/) descargar su herramienta, con el siguiente comando.

wget https://github.com/dondominio/dondns-bash/archive/master.zip

Si no lo tenemos instalado, vamos a descargar e instalar el descompresor de archivos de linux.

sudo apt-get install unzip

Y luego descomprimimos el archivo que hemos descargado con el siguiente comando.

unzip master.zip

Esto nos habrá creado una carpeta llamada «dondns-bash-master» y dentro de ella otra llamada «dondominio». Nos vamos al final de esa ruta.

cd dondnds-bash-master
cd dondominio

Vamos a decirle ahora al sistema que el bash script que hay ahí dentro es un archivo ejecutable.

chmod +x ./dondomcli.sh

Antes de continuar debemos volver a nuestra cuenta de DonDominio. En su página web debemos pulsar en nuestro usuario, luego en «cuenta» y por último en DonDNS Key.

Primer paso dondns

En ese apartado veremos nuestra clave de DonDNS. En caso de no tener una, podremos generarla pulsando el botón correspondiente.

Dondns key

Perfecto. Apuntad ese dato, que lo usaremos en un momento.

Pero antes vamos a irnos a la zona DNS de nuestro dominio para comprobar un par de cosas.

Zona DNS

Si en Zona DNS no están estas dos configuraciones que vamos a ver ahora, quiero que las creéis a mano. Por un lado, revisad que exista una zona «A» que dirija vuestro dominio a «algo». Vais a poner a mano ahí mismo la ip pública de vuestra conexión a internet (luego automatizaremos todo para que coja la ip según vaya cambiando). En este ejemplo estoy redirigiendo mi dominio a una ip pública, que debería ser la de mi conexión.

En ese listado de configuraciones, al final de todo, debería haber dos entradas CNAME. Son entradas que redirigen esos subdominios a un dominio en lugar de una ip. Vamos a redirigir todos los subdominios de nuestro dominio (*.tudominio.es) al dominio principal. Así nos aseguramos de que cualquier subdominio que intentemos utilizar siempre apunte a nuestra ip pública (tu dominio va a apuntar siempre a tu ip pública gracias a un programa que vamos a usar más adelante, y como los subdominios hemos hecho que también apunten ahí, todo lo que cuelgues de tu dominio, apuntará a tu ip pública).

De esta forma, si intento entrar en «holaholita.tudominio.com», esa dirección apuntará siempre a nuestra ip pública aunque no la hayamos configurado expresamente en dondominio. Luego tendremos que decirle al proxy que dependiendo del dominio nos ofrezca una web u otra, pero eso lo veremos más adelante.

Vamos a editar ahora el archivo de configuración que hay en la carpeta «dondominio» con este comando

sudo nano dondomcli.conf

En ese archivo debemos poner tres datos:

  • En DDUSER debemos poner nuestro nombre de usuario de DonDominio.
  • En DDPASSWORD debemos poner el DonDNS Key que hemos cogido de la web en el paso anterior.
  • En DDHOST debemos poner, separados por comas, todos los dominios que tengamos contratados en DonDominio. Si sólo tenemos uno, pues ponemos ese.
Edición de la configuración

Guardamos cambios con Control + O y ya ha quedado la configuración lista.

A partir de ahora, cada vez que queramos actualizar la ip que hay apuntada en esos dominios, sólo hay que lanzar este comando (ojo, todo esto es una única línea muy grande).

/home/<tu_usuario>/dondnds-bash-master/dondominio/dondomcli.sh -c /home/<tu_usuario>/dondnds-bash-master/dondominio/dondomcli.conf

Lo que estamos haciendo es ejecutar el script pero diciéndole que coja la configuración del archivo .conf.

¿Y tengo que hacer esto cada vez que cambie la ip? ¡¡Pues vaya rollazo!!

No, no. Vamos a automatizar esto. Hay una zona en linux en la que podemos programar tareas para que se hagan con la periodicidad que nos apetezca. En concreto lo que vamos a hacer es lanzar este script cada 5 minutos de forma que cada vez que se lance no se genere ningún mensaje en consola. Para ello ejecutaremos este comando en el terminal.

sudo crontab -e

y debajo de todo lo que nos va a aparecer pondremos la siguiente línea.

*/5 * * * * /home/<tu_usuario>/dondnds-bash-master/dondominio/dondomcli.sh -c /home/<tu_usuario>/dondnds-bash-master/dondominio/dondomcli.conf >/dev/null 2>&1

Ojo: todo eso es una misma línea. Veamos qué significa cada cosa.

El comienzo (*/5 * * * *) es la programación que le dice al cron cada cuánto tiempo va a ejecutar el script. El primer bloque son los minutos, después van las horas, los días del mes, el mes y el día de la semana. Cada vez que haya asteriscos significará «todo». Así que esa programación indica al cron que se ejecute esta tarea todos los días de la semana, todos los meses, todos los días del mes, todas las horas, pero sólo cada 5 minutos.

Madre mía, qué follón. ¿No hay forma de verlo más claro?

Sí. A mi me encanta esta web para hacer programaciones complejas.

https://crontab.guru

Simplemente tienes que cacharrear en la web para lograr la programación que más te interesa.

Crontab Guru

Por último tenemos el comando >/dev/null 2>&1, que básicamente dice que pase lo que pase no genere ningún mensaje en ningún lado. Simplemente ejecuta el comando y listo. Con todo esto, guardamos los cambios en el crontab pulsando Control + O y salimos de él pulsando Control + X.

Con esto ya tenemos el dominio asociado a nuestra ip dinámica. Cada vez que cambie nuestra ip dinámica, en un tiempo máximo de 5 minutos el cambio se reflejará en el dominio.

Ya tenemos listo nuestro dominio. Ahora ya podemos empezar la instalación del proxy en si mismo.

3- Creamos la estructura de carpetas para los datos del Nginx Proxy Manager.

Vamos a teclear ahora cd .. dos veces para volver a la carpeta «home» de nuestro usuario. Deberíamos estar en /home/<tu_usuario>. Si habéis seguido con atención el resto de artículos, veríais que hemos creado una carpeta llamada «docker» dentro de la carpeta «home«, dónde alojamos todos los dockers que estamos instalando (Si no la tenéis, creadla con el comando sudo mkdir docker). Nos metemos dentro de esa carpeta con este comando.

cd docker

Una vez dentro de esa carpeta vamos a crear toda la estructura que necesita Nginx Proxy Manager para trabajar. Usaremos estos comandos:

mkdir nginx
cd nginx
mkdir data && mkdir letsencrypt

Sí. Tal y cómo suponéis, la carpeta «data» contendrá toda la configuración y bases de datos de lo que modifiquemos en Nginx Proxy Managere y la carpeta «letsencrypt» tendrá todo lo relativo a la configuración de los certificados de seguridad.

4- Creación del archivo docker-compose.yml

Ahora toca crear el archivo de instalación del Docker. Lo haremos con este comando:

sudo nano docker-compose.yml

Y una vez dentro le pegaremos exactamente este contenido.

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

Pulsamos Control + O para guardar cambios y Control + X para salir de nano. Antes de pasar al siguiente punto pensad cuántas variables de entorno vamos a usar en este Docker. Y fijaos que va a usar los puertos 80, 81 y 443. Tened en mente estos puertos que luego veremos detalladamente para qué sirve cada uno de ellos.

5- Creamos el archivo de variables de entorno y le damos seguridad.

Para crear el archivo de variables de entorno escribimos el siguiente comando.

sudo nano .env

Si en el punto anterior habéis dicho que sólo vamos a poner una variable de entorno, estáis en lo cierto. Este docker, a pesar de que va a ser el puntal de lo que hagamos de ahora en adelante, es muy sencillo de desplegar. El contenido del archivo .env debe ser éste (acuérdate de sustituir <tu_usuario> por la carpeta de tu usuario del ordenador.

DOCKERDIR=/home/<tu_usuario>/docker

Guardamos cambios con Control + O y salimos de nano con Control + X. Ahora vamos a securizar este archivo con el siguiente comando.

sudo chmod 600 .env
Llevo varios tutoriales fijándome que tú instalas dockers siempre de la misma forma. Son todos iguales. 

Sí, Usuario Anónimo. Así la gente no se complica.

6- Desplegamos la máquina

Ahora, como siempre, nos situamos en la carpeta dónde está el archivo docker-compose.yml y escribimos el siguiente comando:

sudo docker-compose -p "nginx" up -d

Obtendremos algo como ésto.

Instalación mediante docker

Después de un rato tendremos por fin el Docker desplegado y listo para trabajar.

7- Configuración inicial de Nginx Proxy Manager

Llegados a este punto, podemos empezar a probar cosas. ¿Qué tal si ponéis en un navegador la dirección IP de vuestra raspberry? La ip a palo seco, sin ningún puerto. Os debería aparecer algo como ésto.

Congratulations

Y ya que estamos ¿Por que no ponéis en el navegador vuestra ip pública?

¡La leche! ¡Si aparece el mismo mensaje! ¿ya tengo algo publicado en internet?

Pues sí. Ya tenemos una web disponible en internet, que es la de bienvenida a tu Nginx Proxy Manager. Ahora vamos a hacer un par de ajustes básicos en la configuración.

Pon en tu navegador esta dirección

http://<ip.de.la.raspberry>:81

(Evidentemente cambia lo de <ip.de.la.raspberry> por la dirección IP que realmente tenga la Raspberry).

¿Pero qué demonios...? Ahí hay otra página completamente diferente que me pide credenciales. Veo esto. 
nginx login

Esa página web es la que te permitirá realizar todos los ajustes a tus webs. Es el panel de control del Nginx Proxy Manager, así que guárdala en tus marcadores.

¿Y si mapeo el puerto 81 que es el que la genera para poder acceder a esa web desde fuera de mi red?

Por poder puedes, pero pondrías disponible en internet un interfaz web «peligroso», que si alguien es capaz de hackear podría darte un disgusto. Eso mejor que no esté disponible en internet. Y si quieres que esté disponible (cosa que no te recomiendo), luego podrás ponerlo de forma más elegante que abriéndolo por el puerto 81. Ya verás.

Las credenciales que debes poner ahí son las siguientes:

En cuanto pongas esas credenciales vas a ver esta otra página que tienes que rellenar con tus datos.

Creando usuario
Hay que ver qué nombres tan raros tiene la gente con la que te relacionas, macho. 

Céntrate, Usuario Anónimo. Después de poner tu nombre, usuario y mail, debemos cambiar la contraseña.

Creando contraseña

Una vez hecho esto, podemos ir ya cuando queramos de nuevo a la dirección del panel de control (http://<ip.de.la.raspberry>:81), y cuando nos loguemos ya tendremos un montón de opciones que podemos configurar.

8- Configurando nuestro primer proxy

Una buena forma de empezar es ir a «Hosts» y luego pulsar en «Proxy Hosts».

pantalla principal nginx

Las opciones que nos van a salir nos van a permitir configurar la página web que queramos poner disponible en internet.

Estoy deseando tener una web disponible para poder ver qué tal se ve a través de internet. 

Pues tienes ya unas cuantas, Usuario Anónimo. En el sexto artículo que he dedicado a Docker, por ejemplo, habíamos instalado aMule y Transmission y tanto uno como otro generaban páginas web. Si te parece, vamos a hacer que la del aMule sea accesible a través de internet (tranquilo, está protegida por una contraseña).

Si haces memoria, recordarás que el amule lo habíamos dejado disponible en esta dirección web:

http://<mi.dirección.ip>:4711

Siendo «<mi.dirección.ip>» la dirección ip de nuestra Raspberry. Así que vamos a empezar a completar campos en el formulario, en la pestaña «Details».

  • Domain name: vamos a poner la dirección en la que queramos que esté disponible dentro de nuestro dominio. Si el dominio es «berenjenas.com«, la dirección puede ser algo del tipo «amule.berenjenas.com» (voy a reservar el dominio principal, berenjenas.com, para alguna web más importante). Para pequeñas webs, normalmente siempre vamos a crear algo del tipo «loquesea.dominio.xxx«, es decir, el nombre que queráis, un punto y luego el dominio que tengáis. Si es un dominio gratuíto de tercer nivel, podría ser algo como «loquesea.pepito.linkpc.net«.
  • «Scheme» dejadlo en http
  • En «Forward Hostname / IP», pondréis la ip local de vuestra Raspberry.
  • Por último, en «Forward Port» ponemos el puerto (lo que va después de los dos puntos). En este caso es el 4711

En cuanto al resto de opciones podéis dejarlas como están por el momento. Yo recomendaría primero probar la web sin esas opciones y luego encenderlas y comprobar que todo vaya bien (son opciones que dan más seguridad a la conexión). Os debería quedar todo tal que así.

Creando http

Pulsamos en «Save» y probamos nuestra web en esta dirección del navegador.

http://amule.<tu_dominio>.com

¡¡ERROR GARRAFAL!! Me aparece una página que pone que puedo ser víctima de suplantación de identidad y mil cosas más. Tengo miedo. 

Lo sé. Es un mensaje muy similar a éste (depende del navegador, pero ha de ser muy similar).

error 1

En este caso dale a «Avanzado». Te saldrá esta otra pantalla.

error 2

Dale ahora a «aceptar el riesgo y continuar». Lo que está advirtiéndote el navegador es que la web a la que intentas acceder no tiene certificado de seguridad y por eso te salta ese error. En cuanto te cargue la web debería aparecerte algo como esto otro.

amule por http

Fíjate que en la barra de direcciones hay un candado tachado indicando que no hay certificado para esa página web. Es completamente normal porque aún no hemos generado uno. Vamos a generarlo y ya veréis cómo también es muy sencillo.

Nos vamos de nuevo a «hosts» –> «Proxy hosts» y nos aparecerá el proxy que acabamos de crear. Pulsamos en los tres puntitos que tiene al final y editamos la configuración.

Editamos config

Ahora nos vamos a la pestaña SSL. En un principio aparece vacía.

Creando https

Tenemos que completar los campos hasta dejarlos como la siguiente imagen (por supuesto, con vuestra dirección de correo electrónico).

Edit proxy host

Pulsamos ahora en «Save» e intentamos entrar de nuevo en la web que queremos para el amule (https://amule.<tu_dominio>.com). Nos debería aparecer ahora algo como ésto.

https

Como podéis ver, con ese último retoque la web ya es completamente funcional.

Espera... ya entiendo por qué al principio del artículo no me dejaste mapear el puerto 81 para controlar el Nginx Proxy Manager desde internet. Si quiero acceder a él desde fuera a lo mejor puedo usar este método y darle un dominio como https://nginx.usuarioanonimo.eu, que es más elegante

Por poder puedes y de hecho es una solución más correcta. Pero de nuevo te pregunto ¿Por qué tienes esa fijación de controlar esa web desde internet? Si necesitas controlarla desde fuera, conéctate con la VPN que hemos creado en los primeros tutoriales y no compartas por internet nada que tenga que ver con la administración del sistema. Cuantas menos cosas «importantes» sean vistas desde fuera mejor.

7- Resumen para futuras webs

A partir de ahora cada vez que tengamos que añadir una web nueva a nuestro proxy, lo que haremos será lo siguiente:

  • En el Nginx Proxy Manager iremos a «Hosts» –> «Proxy hosts» y pincharemos en «Add proxy host».
  • Completaremos todo lo que se nos pide (Nombre del dominio, dirección ip de nuestro host y puerto del Docker).
  • Una vez creado, editamos el proxy y en la pestaña «SSL activamos el certificado de seguridad».

Como veis, el procedimiento es más que simple.

8- Actualización de este docker.

Este punto seguro que sabéis hacerlo si habéis seguido los tutoriales anteriores. Si ha sido así, tendréis un archivo llamado «actualizar.sh» en nuestra carpeta home. Sólo hay que hacer un nano actualizar.sh añadirle las líneas necesarias para actualizar este docker en particular. Os quedaría tal que así. (acordaos de cambiar «<tu_usuario>» por el usuario de la Raspberry.

sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y
cd /home/<tu_usuario>/docker/pihole
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
cd /home/<tu_usuario>/docker/wireguard
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
sudo shutdown -r now
cd /home/<tu_usuario>/docker/amule
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
sudo shutdown -r now
cd /home/<tu_usuario>/docker/transmission
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
cd /home/<tu_usuario>/docker/nginx
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
sudo shutdown -r now

Pulsaríamos Control + O para guardar cambios y Control + X para salir de nano.

En caso de que no hayáis hecho nada de lo anterior y sólo os interese el docker del nginx, el archivo sería mucho más corto. Quedaría así.

sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y
cd /home/<tu_usuario>/docker/nginx
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
sudo shutdown -r now

Ahora sí que hemos terminado. ¿Os ha parecido complicado? ¿Habéis tenido algún problema con este despliegue o en algo relacionado con el dominio? Estaré atento a vuestros comentarios.

Share

37 comentarios

  1. Jose Miguel

    Todo bien hasta que llego a probar el proxy host amule.midominio.ddns.net . Me da error de DNS.

    No se puede acceder a este sitio web. No se ha podido encontrar la dirección DNS de la página amule.midominio.ddns.net. Se está diagnosticando el problema.
    DNS_PROBE_POSSIBLE

    lo de «midominio» lo tengo correctamente, con el nombre real. Y está disponible desde la WAN. Y no estoy detrás de CG-NAT. Tengo ip propia aunque dinámica, y correctamente redireccionada con un dominio de noip.com.

    Al meter la ip interna de mi Rpi veo el mensaje de bienvenida:

    Congratulations!
    You’ve successfully started the Nginx Proxy Manager.
    If you’re seeing this site then you’re trying to access a host that isn’t set up yet.
    Log in to the Admin panel to get started.

    Sin embargo tengo un host ya creado y que muestra status online.

    Ek fin… no se qué ha podido pasar

    • Marcos

      Vamos a descartar que no sea problema de mapeo de puertos. Por lo que dices, supongo que si apuntas tu navegador a la ip local de la raspberry te sale la página de congratulations del proxy. Vamos a hacer lo siguiente.
      1) Vete a https://www.cualesmiip.com/ y mira cuál es tu ip pública. Una vez que la tengas, pon en tu navegador la ip pública en la que estás. ¿Qué te sale?
      – Si te sale la página de «Congratulations» del nginx seguimos al siguiente punto
      – Si no te sale eso y te sale un mensaje de error, entonces FIJO tienes un problema de router. No des vueltas buscando otras causas. Desde internet no llegas a tu raspberry. O bien tienes mal mapeados los puertos o bien tu operador te ha engañado y estás sobre CG-NAT (cosa altamente probable). Cuando puedas dime las tres primeras cifras de tu ip pública (no me digas la última para mantener tu privacidad). Con ellas se puede saber si estás dentro de CGNAT. Si efectivamente no estás sobre cg-nat, hay que revisar ese mapeo de puertos.
      2) Si esa prueba fue satisfactoria, vete a midominio.ddns.net (tu dominio principal, no tu subdominio). ¿Te sale la página de bienvenida del nginx?
      – Si te sale, todo está bien.
      – Si el punto anterior es exitoso pero este no, entonces el problema es el dominio. No hay ninguna duda. Hay que mirar si has apuntando correctamente el dominio a tu ip pública. El problema es este FIJO.
      3) Si el punto 2 está bien y no te sale nada en amule.midominio.ddns.net, entonces FIJO que el problema es de la configuración del proxy. Revisa bien los puertos y el tutorial para apuntar ese subdominio a la ip pública de la raspberry.

      Revisa los tres puntos. Dinos en qué punto está el fallo y con eso podemos tirar del hilo para lograr la solución.

    • Marcos

      Ummm… estoy mirando en la parte de administración del blog la dirección ip desde la que me enviaste el comentario y veo un nginx ahí corriendo (en la ip pública). Descarto el problema con la operadora. Así que revisa los puntos 2 y 3 y dinos en qué punto falla.

    • Marcos

      Por cierto… hay otro problema que me olvidaba comentar. ¡¡¡La propagación de las DNS!!! A veces, cuando creas un nuevo dominio, las dns tardan en propagarse a todos los servidores de DNS. Recuerdo un caso hiriente con un dominio en concreto hace cosa de unos 14 años que varios meses después de habilitarlo, en Jazztel no funcionaba la web porque sus DNS aún no reconocían el dominio (y según ellos todo estaba bien, por más que les explicaba que debían tener algún error, uff…). Te recomiendo cambiar las DNS de tu sistema operativo por unas decentes, como 1.1.1.1 o 8.8.8.8 (Cloudflare o Google). Y en el terminal haz un «ping midominio.ddns.net». Si todo está bien creado y el ping no te responde a tu ip pública, a lo mejor es que aún no se propagaron las dns de este sitio en concreto.

      • Jose Miguel

        El DNS que tengo es el de pi’hole que instalé con tu post y creo que pusimos cloudflare como DNS en pi-hole, aunque ya no me acuerdo.

  2. Jose Miguel

    Gracias.

    1) Mi ip empieza por 188
    Y cuando la pongo en el navegador veo el mensaje de Congratulations de NPM. Luego no estoy sobre CG-NAT y el puerto 80 está correctamente mapeado en el router (y el 443 también porque lo he hecho igual que el 80).

    2) cuando meto midominio.ddns.net me sale la página de login de Seafile. Esto es porque he creado un host en NPM sin ponerle nada delante, es decir , midominio.ddns.net apuntando a mi seafile. Y entra por https, es decir el 443 también está bien mapeado.

    3) en amule.midominio.ddns.net da DNS error. Y así para cualquier host que cree nuevo apuntando a transmission, por ejemplo u otros.

    En definitiva, el único host que no da DNS error es el del propio dominio, sin nada delante.

  3. Jose Miguel

    Si. el docker de Seafile incluye nginx porque lo usa como servidor. Pero debería estar aislado en su docker.

  4. Jose Miguel

    Quizá el problema sea el dominio de ip. Quizá noip bloquea el uso de subdominios a nivel de DNS. Por lo que no funciona cuando le pones algo delante.

  5. Jose Miguel

    Quizá el problema sea el dominio de noip. Quizá noip bloquea el uso de subdominios a nivel de DNS. Por lo que no funciona cuando le pones algo delante.

  6. Jose Miguel

    Dicho de otra forma. Si noip tiene en sus CNAME exclusivamente midominio.ddns.net y no incluye *.midominio.ddns.net pues no funciona. Y me temo que ese va a ser el problema.

  7. Jose Miguel

    Resuelto. Efectivamente es un problema de los CNAME del dominio. tengo que entrar yo en noip y crearlos uno a uno. No tiene *.midominio.ddns.net por defecto en su CNAME ni lo admite.

    Muchas gracias por mirarlo, perdón por la pérdida de tiempo. Eres una gran tipo y tienes un gran blog. De nuevo gracias.

  8. Carlos

    Me tengo que poner a ello Marcos, esperaba esta entrada… El problema que tengo es que, segun aplico un docker nuevo que nos enseñas a usar (reconozco que soy nuevo en docker), me van surgiendo nuevas ideas de como mejorarlo, es la ventaja de Unix/Linux… por ejemplo usar un disco duro de 512GB donde alojar los docker, asi no temo quedarme sin espacio usando amule, transmission, etc..
    Por cierto, llevo años usando las raspi, tengo la sensacion de que, en muchas ocasiones se petan, o eso, o bien por que ya no se donde las compre, si en tienda oficial o Aliexpress en todo caso si que es importante animarte a escrivir sobre una muy buena herramienta para realizar backups de todo el entorno y si, ya se que programar un crontab con un target puede ayudar pero creo que deveria de haber en este mundo algo potente para poder automatizar tareas de backup y restauracion, si conoces algo iluminanos plis…
    Un saludo y emocinado de practicar con tu blog (me ayudan a desengrasarme como Técnico de Sistemas, que son casi 25 años ya de experienca)

    • Marcos

      Lo que peta de las raspberrys siempre es la tarjeta de memoria. El 90% de los fallos vienen por ahí. Se soluciona arrancando todo desde un disco externo. En todo caso me estoy asegurando de que todos los tutoriales se puedan hacer desde equipos que no son raspberrys, así que una opción es un pequeño mini-Pc (o no tan mini).
      Sobre backups hablo en el artículo 11 (sí… ya está escrito), además de cómo duplicar dockers y crear varios contenedores distintos del mismo docker. La forma cutre-salchichera es efectivamente usando crontab (que es la que explico para no ser demasiado complicado). La forma “guay” es instalar proxmox y por encima poner el raspberry pi os. Con todo virtualizado es una delicia el mantenimiento de backups y otras gestiones

  9. Jose Miguel

    Yo soy de la vieja escuela y creo que hacer copias de seguridad con cualquier cosa que no sea rsync es de cobardes.

    Dicha la broma, a la hora de automatizar backups, al menos para mi, es importante tener una offline. Si por desgracia pillas un ramsonware y se te propaga (que es lo normal) no te sirven de nada los discos que tengas online porque acabarán encriptados. Y si automatizas backups lo normal es tenerlos conectados (montados directamente o en red). Total todo perdido.

    Esta es mi estrategia de backup:

    1) Mis archivos importantes están en mi ordenador, por supuesto.
    2) Tengo un cliente tipo nextcloud (en mi caso es seafile) que me los sincroniza en mi nube privada en una raspberry pi que también está en casa.
    3) Aparte tengo un cliente que hace lo mismo, pero a una nube pública, como MEGA o dropbox. Por si los incendios o los robos. si me roban desparecen tanto mi ordenador como la Rpi y adios backups.
    4) y aparte tengo un script en cron que monta un disco que normalmente está desmontado, llama a rsync para hacer una copia incremental en ese disco y al acabar lo desmonta de nuevo. De esa forma si pillo un ramsonware no me lo encripta porque no está conectado.
    5) Si me apuras ni aún así estás seguro porque puede pasarte que pilles un ramsonware mientras estás usando tu ordenador, comience a encriptar archivos que no son del sistema (o sea, tus archivos), eso se propague via los clientes de la nube a Seafile, Nextcloud, MEGA, dropbox y tengas la mala suerte de que tu script monte el disco offline en ese momento para hacer la copia de rsync que se suponía era muy segura porque era offline. Y entonces estás muy jodido.

    En resúmen, lo que he descrito es una peli de terror, no te va a pasar. Pero si puedes evitar meter en cron el script y ponerte un aviso en tu calendario para hacerlo manualmente mejor. Entras a tu sistema, compruebas que todo está bien y ejecutas el script. Incluso desconecta el disco físicamente depués (si es usb).

    Un buen plan de backup tiene que prever todo: robo, incendio, virus-malware, fallo de hardware, etc. Por eso es importante tener copias locales (en tu casa) y en la nube pública (fuera) todas ellas automatizadas. Y si perder tus datos es como perder tu vida te aconsejo una copia periódica manual en un disco offline (que estará desconectado incluso físicamente, salvo en el momento de hacer el backup)

  10. Marcos

    El planteamiento es correcto, pero hay una cosa más que puedes hacer. En una red empresarial es habitual hacer copias de seguridad a un disco en un equipo dentro del dominio. Pues no. Lo que hay que hacer es aislar ese disco y el equipo en el que está de todas las formas posibles. En primer lugar, si es posible, no usar samba para la conexión. Es el protocolo habitual para conectarte a un disco, pero complicas las cosas si usas otros protocolos como nfs. Además puedes decirle al NAS que no acepte conexiones que no procedan de una ip específica. Si a eso le unes que el NAS se encuentre en un segmento de red diferente, inaccesible por todos los equipos excepto por el que realiza la copia, que el ordenador que realiza la copia sea un tercer equipo diferente del NAS y del equipo copiado (con dos tarjetas de red, una para la red normal y otra para el segmento oculto), que el usuario no pueda ser del dominio y sea un usuario único para hacer la copia de seguridad, es muy difícil que tengas una encriptación (no imposible, pero sí muy difícil). La única forma es haciendo vulnerable al equipo que realiza la copia, y si es un equipo linux… no te voy a decir que no haya rasonwares capaz de atacar un equipo linux sin interfaz gráfica y con los puertos ssh cerrados, pero yo al menos no he visto ninguno.

    Y a mayores en mi empresa usamos un aparato de alta tecnología que es…. un simple temporizador. Enciende el disco de las copias unos minutos antes de realizarlas y apaga el disco más o menos un par de horas después de la previsión de finalización de las copias.

    Y por supuesto sacar copias hacia afuera.

    ¡¡¡Pero seamos serios!!! que estos artículos se orientan hacia el común de los mortales. Como nos pongamos con estas metodologías, a pesar de ser correctas, vamos a asustar a los niños. Antes de ir en moto hay que aprender a andar en bici. Y la opción de rsync es la más adecuada en este escenario, creo yo.

  11. Jose Miguel

    Joder, lo del temporizador es una solución perfecta al problema de enchufar manualmente el disco y hacer el backup. Jamás se me hubiese ocurrido y, efectivamente impide el acceso al disco mientras permite la automatización del backup si las sincronizas bien. A veces la solución puede estar en una tecnología «menos» puntera. Muy bien pensado.

  12. Carlos

    Graxcias por tu ayuda Marcos!
    Tengo a la mujer contenta, con ese docker de amule y transmision comparto por SMB hacia un apple TV bastante viejillo que estaba para darle otra vida a nuestra vieja smarttv…
    algun cliente de gui para amule android? creo que esta red a pesar de estar hay viva, el desarrollo esta parado.

    • Marcos

      Alguno ha habido en su día en Android, pero creo que ya ni está en la tienda de aplicaciónes (y si está, ya no funciona). En IOS no hay nada (y me extrañaría que Apple dejara programas de ese tipo en su tienda).
      El desarrollo de estos programas no es especialmente activo, pero hace unos años revivió el proyecto después de un largo parón y van sacando poco a poco actualizaciones. En todo caso ahora mismo aMule, para mi, es el mejor programa P2P sin lugar a dudas. Buscador integrado, encuentras muchísimas fuentes y archivos distintos de cada cosa que buscas, va muy rápido y se puede integrar con mil cosas (tengo automatizado para que cada vez que se descarga algo se vaya automáticamente a una carpeta determinada y me mande un mensaje por telegram). De verdad que hace muchos años que no entiendo la obsesión que tiene la gente con los torrent. Vale que es extremadamente rápido pero velocidad no es lo único importante.
      Yo en casa tengo siempre encendida una máquina windows (la tengo virtualizada junto con todos los servidores) y cuando necesito acceder al amule desde el móvil lo hago por escritorio remoto de Microsoft a través de una vpn. Así accedo a todas las funcionalidades. Vale… molaría más tener una aplicación nativa, pero de momento no he encontrado nada decente y es la única forma que he encontrado para usarlo sin problemas desde el móvil.

  13. Aglak

    Buenas tardes, a ver si me podéis ayudar. He hecho el tutorial 2 veces (en 2 sd diferentes por si había hecho algo mal) pero en los 2 casos cuando llego a poner la dirección «http://amule.midominio.es» el navegador se me va a la pagina de DonDominio con este mensaje: »
    Parking del dominio
    xxxxxx.es

    Bienvenido a la página de parking de xxxxxx.es.

    Este dominio ha sido registrado en DonDominio. Si deseas obtener más información, puedes consultar el whois del dominio.»
    Creo haber configurado todo como dices pero no logro que me lleve al amule.
    Gracias

    • Marcos

      Si te sale ese mensaje, eso es que el punto 2 no está bien realizado. ¿Qué te sale al ir directamente a tu dominio (en lugar de ir a amule.midominio.es, ir a midominio.es). Me da que tienes el dominio aún aparcado. Revisa esto.

      Lógate en dondominio con tu usuario y contraseña. En tu cuenta vete a dominios –> parking –> pulsas en los tres puntitos al lado del dominio y luego en «gestionar». En «Alojamiento web» mira si En «página de parking» tienes algo activado. Me da que tienes el parking del dominio activado y por eso no te va.

      • Aglak

        Buenos días, hice lo que me indicaste pero me sigue haciendo lo mismo. Desactive el parking pero sigue saliéndome la misma página en el navegador. Algo tengo mal hecho. Gracias

        • Marcos

          A ver… la página de parking la genera dondominio, no hay duda. Yo contactaría con los de dondominio y les preguntaría (tienen un chat de atención al cliente si no recuerdo mal). Esa página dice que el dominio está aparcado por algún motivo. Si puedes vete a las zonas dns y asigna el dominio loquesea.tudominio.com a tu ip pública para ver cómo se comporta. Pero en principio no debería haber problema. Consulta con ellos porque ese error lo está generando dondominio.

          • Aglak

            Gracias, contactaré con ellos. Como me dices en «zonas dns» he asignado mi dominio «transmission.xxxx.es» a mi ip pública y puedo entrar sin problemas.

  14. carlos

    por 4€ primer año he registrado en esa empresa q pones de ejemplo, don dominio.. la verdad que muy bien y otra cosa, queria una herramienta de cloud y he encontrado owncloud, esque con dockercomponse se instala en un plis plas y ya tenemos la posibilidad de realizar la copias de fotos videos etc etc entre el smartphone y la raspberry , bua, una pasada…
    En esta web lo resume en 2 pasos:
    https://labarta.es/como-instalar-owncloud-usando-docker-compose/

    • Marcos

      ¡¡Pero no te me adelantes en los tutoriales!! XD

      Efectivamente, esa web la conozco y Labarta tiene unos cuantos dockers que tiran de los oficiales y que están muy bien (hace algo similar a lo que hago yo: hace sus propios docker-compose pero tira de repos oficiales). Pero nextcloud tiene su chicha instalarlo para que no te de ningún error. Si has instalado todo tal y cómo pone Labarta, y luego en la web de nextcloud te vas al menú de usuario –> Configuraciones de administración, una instalación básica te muestra una cantidad de errores que alucinas (y no deberías tener ninguno). Lo mismo si compruebas la seguridad de tu instalación en esta web: https://scan.nextcloud.com/.

      Ojo: No digo que lo que pone Labarta esté mal. Si la haces así, has instalado bien el Nextcloud. Lo que pasa es que además de hacer la instalación hay que configurar el proxy de una forma especial y luego hay que editar a mano una serie de archivos en Nextcloud para que no haya errores.

      En la parte 12 de esta serie de tutoriales (que estoy escribiéndola) explicaré cómo instalar nextcloud de forma que no tenga ningún error y os aparezca todo perfecto lo consultéis dónde lo consultéis. Nextcloud está muy bien, pero no es un docker de los de instalar en 5 minutos y olvidarse. Hay que repasar muchas cosas para dejarlo perfecto, así que nos vendrán bien antes de enfrentarnos a Nextcloud otro par de tutoriales: Uno para asentar las instalaciones usando un proxy y otro para aprender cómo revertir cambios y arreglar cosas en un docker que se resista.(por cierto… los próximos artículos están escritos y he programado su publicación el próximo lunes y el siguiente, ambos a las 8:30 de la mañana)

  15. Carlos

    Gracias Marcos!!
    La verdad que me he emocioando con esto del docker y me he propuesto vitaminarlo como loco…pero ya que explicas que tienes preparados mas capitulos y que tocas el tema cloud borro lo que he metido a la espera de seguir tus emocionates articulos, hay varias cosas que tenemos atascadas desde hace años en mi trabajo como un virtualcenter donde tenemos los RedHat corriendo Tomcats, jboss, alfresco, oracle BBDD y lo monitoreo todo con nagios…asi ha sido la ultima década y esto me puede dar una idea de pensar en mejorar.
    Muchas gracias por tu ayuda y por compartilo un saludo!!

  16. Carlos

    Te complemento la guia para la ip dinamica con el script de DonDMinio (y asi lo dejo apuntado para que no se me olvide):
    para que funcione desde dondominio en la ZonaDNS hay que borrtar el resistro ANAME y crearlo de nuevo como registro A ycampo host bacio, con una IP que nos inventemos porque luego el script la borrara por la nuestra

  17. Carlos

    Amplio la cuestion IP dnamica: En la zona DNS de don dominio hay que crear tantos subdominios con IP inventadas como vayamos a crear, estos hay que incorporarlos en el script, en el apartado HOST, de esta manera el cript los valida en la zona dns de dondominio

    • Marcos

      No es exacto. Te voy a poner un ejemplo con este mismo dominio (flopy.es).

      Tal y cómo os dije, el dominio lo tengo también en dondominio y con ip dinámica. Tengo hecho un pequeño truco en mi ip pública. Si alguien intenta entrar en una dirección web que no haya registrado (o directamente en la ip pública), he hecho una redirección (en el host, no en dondomio) a la página de la policía nacional. ¿Por qué? Pues para meterle miedo a posibles hackers, para que se piensen que están intentando entrar en un ordenador de la policía (Si es estúpido pero funciona, no es estúpido).

      Así que intenta entrar en http://3498345kjneirheer.flopy.es o en http://iuhui34hiuhife.flopy.es (he aporreado el teclado escribiendo este comentario) y verás que la redirección sigue funcionando aunque el subdominio no exista. La redirección se hace igual. Pon lo que quieras antes del «.flopy.es» y verás que siempre funciona, porque eso lo defino en el host, no el dominio. Siempre será el proxy el que, dependiendo de cómo lo programes, te mande a una dirección u otra.

      Si lo haces tal y cómo os digo, debería redirigir todos los subdominios y te ahorras ir cada vez a dondominio para configurarlos.

      Intenta esto (a lo mejor tengo que añadirlo al artículo, pero creo que dondominio lo debería hacer por defecto).
      Crea una nueva entrada en el dominio así

      – Tipo: Canonical name (CNAME)
      – Host: *.tudominio.es (ojo, con el asterisco delante)
      – Host destino: tudominio.es
      – TTL: Por defecto.

      Mira a ver si así te funciona. Si es eso, lo añado al artículo. A lo mejor esta entrada la añadí yo a mayores a todos mis dominios (gestiono unos cuantos) y ya me había olvidado de ella, pero juraría que ya estaba ahí.

      • Carlos

        Muchas gracias Marcos!
        Tengo que ir entendiendo el tema técnico que explicas muy bien, lo de redirigir todo lo que no exista en subdominio a una dirección para ofrecer seguridad me parece excelente!
        El problema es que he realizado el script tal como lo explicas en el articulo para IP dinámica y no me ha funcionado, da siempre » ERROR: NO EXISTE EN ZONADNS», y lo siguiente es dirigirme directamente al servicio técnico de dondominio (no es algo excepcional, tienen una ventana de chat…) y lo que explico que me ha funcionado son las instrucciones que un técnico llamado Antonio me ha dado.
        Pero lo dicho, tengo que entenderlo que explicas para ver si es otra solución porque lo que tengo ya aplicado me vale también.
        Muchísimas gracias por tus artículos, le has dado otra vida a mi servicio informático doméstico!

        • Marcos

          Crea bien el archivo dondomcli.conf (asegúrate de esta usando el DDPassword y todo correctamente) y haz pruebas con el comando antes de meterlo en el crontab.

          Acabo de añadir al artículo todo lo referente a las Zonas DNS por si alguien ha tenido el mismo problema.

      • Jose Miguel

        Yo he puesto la del FBI. Iba a meter la de la OTAN, pero lo he considerado excesivo. LOL

  18. Jose

    Buenas! He leído unos cuantos artículos. Tengo wg-easy con pi hole pero vengo de otro tutorial en que usé Duckdns para actualizar mi ip publica.

    ¿Es posible seguir este artículo con duckdns?

    Un saludo

    • Marcos

      Cero problemas. Usar un servicio u otro para convertir tu ip pública en una url es cuestión de gustos. Si el servicio de Duckdns te funciona correctamente puedes usarlo para que el vpn apunte siempre a tu ip pública. Sin problema.

      • Jose Manuel

        Hola Marcos!

        Gracias por contestar, al final me animé con DonDominio, pasa que cuando selecciono SSL en Nginx me aparece «internal Error» y no soy capaz de generar el certificado.

        Estoy investigando la razón. ¿Me puede echar una mano?

        Gracias!

        • Marcos

          En https://portchecker.co mira si tienes el puerto 80 y 443 abiertos en tu ip pública. En todo caso mira de quitar el mapeo de esos dos puertos en el router y vuélvelos a mapear. Parece un problema de puertos por lo que he investigado. Con lo que sea nos vuelves a decir

          • Jose Manuel

            Hola Marcos!

            Siento ser un pesado. He comprobado los puertos con portcheker, ambos mapeados, el 80 y el 443, he quitado el mapeo, vuelto a hacer y comprobar pero sigue igual.

            Si creo un certificado con Let’s Encrypt, se crea sin problemas. Lo dejo como dato por si acaso. No he usado Nginx antes y estoy un poco perdido.

            Un saludo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

© 2024 Flopy.es

Tema por Anders NorenArriba ↑

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies