UnRAID: Configurar Docker Traefik
Hoy os voy a enseñar cómo instalar Traefik a través de containers Docker en vuestro NAS UnRAID.
Aunque es verdad que UnRAID nos da un panel bastante claro de los puertos que usan vuestros containers, Traefik puede ayudaros en esas asignaciones, así como un Proxy Inverso que controle las conexiones…
Así que os cuento cual es el plan para esta entrada:
- Os explicaré qué es Traefik
- Configuraremos una zona DNS a través de mi Router Synology
- Cambiaremos el puerto por defecto del dashboard UnRAID
- Explicaremos la instalación de Traefik bajo containers sobre UnRAID
- Y pondremos un ejemplo, con un container que muestre una página web
¿Qué es Traefik?
Traefik es un proxy inverso y un balanceador de carga que se integra con Docker y Kubernetes, así como con otras tecnologías de cluster.
Nos permite enrutar el tráfico de nuestros containers, de una forma sencilla. La base de su sencillez, es que hace un descubrimiento automático de las conexiones. Imaginaros, tenéis dos páginas web en el mismo host:
- web1.negu.local
- web2.negu.local
Lo que permite Traefik, es redirigir el tráfico sin volverte loco con configuraciones manuales en su configuración.
Eso es así, porque cuando tu levantas o despliegas un nuevo servicio, por ejemplo bajo un container como lo vamos a hacer en esta entrada, sólo indicas la información que Traefik necesita para gestionar el enrutamiento hacia el mismo.
Configurar DNS Server en Router Synology
Para las entradas DNS, usaré mi router Synology, y la aplicación DNS Server. Crearé mis entradas, para la red local, a través del router.
Abrimos la aplicación, en el apartado Zonas -> Crear -> Zona master:
Tenemos que rellenar el Nombre de dominio y la IP de nuestro Router:
En el apartado Resolución, habilitaremos reenviadores:
Volvemos a Zonas y pulsamos sobre la zona creada. Se abrirá una ventana, pulsamos Crear -> Y generamos A Type:
Generaremos dos entradas:
- unraid.negu.local : Que será nuestro NAS UnRaid
- traefik.negu.local: Que correrá en modo bridge también en el NAS Unraid
A su vez, para poder trabajar con el resto de equipos, en el router añadimos al servidor DHCP la IP de Router como DNS primario (como secundario colocar el de vuestra operadora o el que estiméis):
Validar con un PC de la red, que resuelve los registros:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
root@UNRAID:~# ping unraid.negu.local PING unraid.negu.local (192.168.2.220) 56(84) bytes of data. 64 bytes from UNRAID.local (192.168.2.220): icmp_seq=1 ttl=64 time=0.051 ms 64 bytes from UNRAID.local (192.168.2.220): icmp_seq=2 ttl=64 time=0.045 ms ^C --- unraid.negu.local ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.045/0.048/0.051/0.003 ms root@UNRAID:~# ping traefik.negu.local PING traefik.negu.local (192.168.2.220) 56(84) bytes of data. 64 bytes from UNRAID.local (192.168.2.220): icmp_seq=1 ttl=64 time=0.040 ms ^C --- traefik.negu.local ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms |
Cambiar puerto por defecto dashboard en UnRAID
Como Traefik usará el puerto 80, también aprovecho para cambiar el puerto por defecto de UnRAID. Lo haremos a través de Settings -> Management Access:
Modificamos los puertos por defecto y el dominio:
Crear ficheros Traefik
Generaremos una configuración estática de nuestro container, a través de dos ficheros:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
root@UNRAID:/mnt/user/appdata/traefik# cat dynamic_conf.yml http: routers: unraid: entryPoints: - http service: unraid rule: "Host(`unraid.negu.local`)" services: unraid: loadBalancer: servers: - url: "http://192.168.2.220:8085/" root@UNRAID:/mnt/user/appdata/traefik# cat traefik.yml api: dashboard: true insecure: true entryPoints: http: address: ":80" providers: docker: {} file: filename: /etc/traefik/dynamic_conf.yml watch: true |
Instalar container Traefik en Nas UnRAID
Para instalar Traefik, usaré el plugin Community Applications que es un repositorio de APPs:
Pulsamos Install, usaremos la red en modo Bridge:
Añadiremos tres etiquetas (labels) diferentes, rellenando apartados key y value:
1 2 3 4 5 6 7 8 |
• key = traefik.http.routers.api.entrypoints • value = http • key = traefik.http.routers.api.service • value = api@internal • key = traefik.http.routers.api.rule • value = Host(`traefik.negu.local`) |
Al terminar el contenedor arrancará, marcamos el AUTOSTART:
Si todo ha ido bien, podemos revisar el dashboard:
1 |
http://traefik.negu.local:8183/dashboard/#/ |
Configurar docker container web para Traefik
Como hemos hablado, al lanzar nuestro container, indicaremos que usaremos Traefik para gestionar el tráfico de nuestra página web.
En este ejemplo, usaremos un container NGINX:
Para ello, añadiremos la etiqueta:
1 2 |
• key = traefik.http.routers.web.rule • value = Host(`web.negu.local`) |
Crearemos una entrada DNS en nuestro servidor Router que hace de DNS Server:
Resolvemos el nombre:
1 2 3 4 5 6 7 8 9 |
ping web.negu.local PING web.negu.local (192.168.2.220): 56 data bytes 64 bytes from 192.168.2.220: icmp_seq=0 ttl=64 time=0.478 ms web.negu.local64 bytes from 192.168.2.220: icmp_seq=1 ttl=64 time=0.723 ms 64 bytes from 192.168.2.220: icmp_seq=2 ttl=64 time=0.630 ms ^C --- web.negu.local ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.478/0.610/0.723/0.101 ms |
Al ejecutarlo veremos el resultado:
1 |
http://web.negu.local/ |
Automáticamente, Traefik detectará el servicio:
Si queréis que el container se ejecute sobre un puerto diferente, generáis otra etiqueta adicional:
1 2 |
• key = traefik.http.services.web.loadbalancer.server.port • value = 8090 |
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Buen día muchas gracias por la información y me ha surgido de la misma una consulta:
Es posible redirigir traefik a otro computador de mi red de área local?