jusaba/dns

By jusaba

Updated 10 months ago

Cliente para miniDynDns

Image
0

100K+

Cliente para miniDynDns

Esta imagen ha sido creada para construir un cliente de minidyndns instalado en los servidores de de dns . Para serverpic se han instalado dos servidores de dns que, para esta documentación, por cuestiones de privacidad, denominaremos dns1.com y dns2.com. Por idéntica razón, el dominio que vamos a utilizar lo denominamos como dominio.es

Vamos a suponer también que el host donde vamos a instalar el cliente queremos que se llame lleida.dominio.es. Es indispensable que lleida se de de alta en los dos servidores minidyndns y vamos a suponer también que lleida se ha dado de alta en los servidores registrandolo en db.yml con el password passlleida.

Instalación 🔧

Para descargar la imagen

docker pull jusaba/dns:latest

Como se ha construido la imagen 🛠️

Pre-requisitos 📋

Para crear el contenedor, en el directorio donde se encuentre Dockerfile y se vaya a hacer el build se necesita un fichero con nombre start.sh con el siguiente contenido

#! /bin/bash
# /home/pi/ip/start.sh
#
rm /home/pi/ip/ActualizaDNS.py
touch /home/pi/ip/ActualizaDNS.py
rm /var/spool/cron/crontabs/root
touch /var/spool/cron/crontabs/root
#
echo "import requests" | tee -a  /home/pi/ip/ActualizaDNS.py
echo "from requests.auth import HTTPBasicAuth" | tee -a  /home/pi/ip/ActualizaDNS.py
echo "requests.get('http://${servidor1}:8001', auth=HTTPBasicAuth('$host', '$password'))" | tee -a  /home/pi/ip/ActualizaDNS.py
echo "requests.get('http://${servidor2}:8001', auth=HTTPBasicAuth('$host', '$password'))" | tee -a  /home/pi/ip/ActualizaDNS.py
#
service cron stop
chmod 600 /var/spool/cron/crontabs/root
echo " */${refresco} * * * * python /home/pi/ip/ActualizaDNS.py " | tee -a  /var/spool/cron/crontabs/root
service cron reload
cron -f
#

La imagen se ha creado mediante el siguiente Dockerfile

FROM debian

ENV TZ=Europe/Madrid

LABEL version=1.0
LABEL autor=Jualian_Salas

RUN     apt-get update -y && \
        apt-get upgrade -y  && \
        apt-get install -y cron

RUN  apt install python3 -y && \
     apt-get install python-pip -y && \
     pip install --upgrade pip  && \
     pip install requests


COPY ./start.sh /home/pi/ip/start.sh
WORKDIR /home/pi/ip

CMD ["sh", "start.sh"]


Para la creación del contenedor se ha utilizado buildx para hacerlo multiplataforma

docker buildx build --platform=linux/amd64,linux/arm64,linux/arm/v7 -t jusaba/dns:latest . --push

Arranque del contenedor ⚙️

El contenedor se debe arrancar de la siguiente forma

docker run  -e host=lleida -e refresco=1 -e password=passlleida -e servidor1=dns1.com -e servidor2=dns2.com -d --name dns  jusaba/dns:1.0

Las variables utilizadas corresponden a

   host.- nombre del host del dominio jusaba.es, en este caso sería mihost.jusaba.es. El host debe estar dado de alta en el servidor de DNS
   refresco.- Tiempo en minutos de actualización de la IP
   password.- Password con el que se ha dado de alta el host en los servidores dns
   servidor1.- url del primer servidor dns
   servidor2.- url del segundo servidor dns

Otra forma de arrancar el contenedor sería almacenar las variables en un fichero denominado parametros.env que en nuestro ejemplo quedaría de la siguiente forma

host=lleida
refresco=1
password=lleidapass
servidor1=dns1.com
servidor2=dns2.com

Ahora, llamaremos a docker con el siguiente formato

 docker run  --env-file parametros.env -d --name dns  jusaba/dns:1.0

Contribuyendo 🖇️

Wiki 📖

Versionado 📌

Autores ✒️

  • Julián Salas Barolome Desarrollo y documentación

Licencia 📄

Este proyecto es libre para utilizarlo como cliente de minidyndns

Expresiones de Gratitud 🎁

  • Comenta a otros sobre este proyecto 📢
  • Invita una cerveza 🍺 o un café ☕ a alguien del equipo.
  • Da las gracias públicamente 🤓.
  • etc.

⌨️ La presentación de esta documentación ha sido posible gracias a Villanuevand 😊

Docker Pull Command

docker pull jusaba/dns