# 3.6 ¿IP dinámica? No hay problema. DuckDNS

[![ducky_icon.png](https://libros.catedu.es/uploads/images/gallery/2023-02/scaled-1680-/ducky-icon.png)](https://libros.catedu.es/uploads/images/gallery/2023-02/ducky-icon.png)

*Imagen obtenida de https://www.duckdns.org/*

## Esta herramienta sirve para...

facilitarnos el acceder a nuestra red de casa desde fuera de la misma.

Vamos a aclarar la afirmación anterior. Nuestro router (que conecta la red de nuestro domicilio con la red del exterior) tiene una IP en esa red exterior que va cambiando con el tiempo salvo que tengamos contratado con nuestro ISP el servicio de IP fija. Dado que aprenderse una IP es complicado y dado que ese dato cambia con el tiempo el servicio de duckdns es muy interesante pues nos permite "ponerle nombre" a nuestra IP ([DNS](https://es.wikipedia.org/wiki/Sistema_de_nombres_de_dominio "DNS")) ya que es más sencillo aprenderse pabloruizsoria.duckdns.org que 148.3.110.57 que, como hemos dicho, cambia con el tiempo. Este servicio no solo va a "poner nombre" a nuestra IP sino que va a hacer que cuando nuestra IP cambie el nombre pase a apuntar al nuevo valor de la IP.

Estaríamos hablando de un servicio [DDNS](https://es.wikipedia.org/wiki/DNS_din%C3%A1mico "DDNS") (DNS dinámico)

## Web de proyecto y otros enlaces de interés

Web de duck DNS: [https://www.duckdns.org/](https://www.duckdns.org/)

Repositorio que usaremos para instalar este servicio: [https://github.com/linuxserver/docker-duckdns](https://github.com/linuxserver/docker-duckdns)

## Despliegue

Primero deberemos acceder a la web [https://www.duckdns.org/](https://www.duckdns.org/) aquí crearemos un subdominio con el nombre que nos interese. De esta web nos interesará tanto el nombre del subdominio como el campo token que aparece en pantalla.

[![duckdns-dashboard.png](https://libros.catedu.es/uploads/images/gallery/2023-02/scaled-1680-/duckdns-dashboard.png)](https://libros.catedu.es/uploads/images/gallery/2023-02/duckdns-dashboard.png)

*Elaboración propia*

Después, como con servicios anteriores, accedemos a la terminal y escribimos

```bash
cd $HOME
mkdir duckdns
cd duckdns
nano docker-compose.yml
```

Dentro del fichero escribimos el siguiente contenido

```yaml
version: "2.1"
services:
  duckdns:
    image: lscr.io/linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - PUID=1000 #optional
      - PGID=1000 #optional
      - TZ=Etc/UTC #optional
      - SUBDOMAINS=subdomain1_que_hayas_configurado,subdomain2_que_hayas_configurado
      - TOKEN=token_que_aparece_en_la_web_duckdns_mira_mi_imagen
      - LOG_FILE=false #optional
    volumes:
      - /path/to/appdata/config:/config #optional
    restart: unless-stopped
```

Para salir del fichero pulsaremos `control + x` y guardaremos los cambios. Posteriormente ponemos en marcha los contenedores con `docker compose up -d` Aparecerá en pantalla algo similar a

[![duckdns-deploy.png](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/duckdns-deploy.png)](https://libros.catedu.es/uploads/images/gallery/2023-07/duckdns-deploy.png)

*Elaboración propia*

## Funcionamiento

Si ahora accedéis a [https://www.duckdns.org/](https://www.duckdns.org/) veréis que en el subdominio que acabáis de crear tiene un valor en current ip y que se ha actualizado hace poco.