Recientemente me han regalado una Raspberry Pi 4 para utilizarla a modo de sencillo Home Lab. He estado montando y probando aplicaciones como Nextcloud, KodBox, Pi-Hole, Ngninx, etcétera. Y uno de los puntos más interesantes ha sido la posibilidad de acceder a todos estos servicios utilizando subdominios (DDNs) en lugar de su correspondiente dirección IP local; posibilitando con ello el hacerlo de forma segura (https). Las ventajas de hacerlo así son varias:
Hay servicios que exigen acceder mediante https
Evitas los constantes reportes de los navegadores
Una vez creado y segurizado el subdominio, dejas abierta la posibilidad de habilitar acceso desde la WAN.
Lo más usual para estos menesteres viene siendo utilizar los servicios de DuckDNS:
Permite crear de forma gratuita hasta 5 subdominios (DDNs)
Sólo registra los datos mínimos para que funcione el servicio
No requiere de renovación -al contrario que otros proveedores.
Muy sencillo de configurar
Por otra parte, también te puedes encontrar con algunos inconvenientes:
El propio límite de 5 entradas DDNs
Por temporadas, ha habido reportes de caídas en el servicio de DuckDNS.
Su propia sencillez, impide “trastear” con parámetros DNS
No hay ninguna posibilidad más allá del servicio DDNs
Y finalmente, lo que al menos en mi caso, ha decidido que me decantará por utilizar los servicios de Cloudflare: registro de un domino personal sin limitaciones y con muchísimas posibilidades de gestión por tan sólo 10 € anuales.
Puestos en contexto, la idea de éste post es muy sencilla:
Comentar el proceso de crear subdominios para uso local y el token que posteriormente usaremos para segurizar mediante Let’s Encrypt + proxy inverso.
Una vez nos aparezca nuestro dominio, bastará con pulsar sobre él e ir al apartado “Configuración del DNS”.
A continuación elegiremos un nombre ->indicaremos la ip LOCAL ->desmarcaremos el campo “Estado de Proxy” (puede dar problemas con el DDNs)
Con ésto, ya tendríamos el subdominio creado
Ahora, generaremos el token que se nos solicitará más adelante para añadir un certificado de Let’s Encrypt
En el menú de usuario seleccionamos “Mi perfil”
A la izquierda -> Tokens Api y una vez dentro -> “Crear token”
Usaremos la primera plantilla que aparece “Editar zona de DNS” -> “Usar plantilla”
En la pantalla que nos aparece, dejaremos tal y como está el primer campo y añadiremos un segundo mediante la opción “+ Agregar más”.
Finalmente en “Recursos de zona” incluiremos nuestro dominio principal y pulsaremos “Ir a resumen” donde nos mostrará el árbol generado y si todo está correcto “Crear token”
Aquí ya obtendremos el token con el cual interactuar. Lo copiamos y lo guardamos
Ahora nos toca configurar los subdominios creados + la ip LOCAL + los correspondientes certificados. Para ello necesitamos un PROXY INVERSO.
Hay muchas opciones de Proxy Inverso: Nginx, Traefik, Caddy… yo me he decantado por el primero, lo veo muy sencillo y se integra perfectamente en el flujo de una Raspberry Pi 4.
Lo primero es crear un nuevo host. En el menú principal Host -> Proxy Host.
Como “Domain Names” el subdominio creado en Cloudflare
Forward Hostname/IP -> nuestra Ip LOCAL
Forward Port -> El puerto donde está corriendo el servicio
Posteriormente creamos el certificado: SSL Certificates -> Add SSL Certificate -> Let´s Encrypt
Y finalmente asociamos host con certificado. Volvemos al menú de Host -> Proxy Host y elegimos el que hemos creado: Edit Proxy Host -> SSL
Y poco más. Con ésto hemos habilitado acceder a nuestros servicios DE FORMA LOCAL mediante una dirección web con certificado de seguridad.
Para poder acceder al subdominio creado desde Internet (WAN) hay que realizar otra serie de procedimientos. Por temas de seguridad, viene siendo mucho más recomendable dejarlo así y acceder al subdominio mediante VPN.