• 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Traefik en Docker
#1
Hola

Este es uno de los contenedores mas útiles y complejos de usar. Aunque según ellos es fácil.
Podéis echar una ojeada en su web.

La función de Traefik es hacer la resolución de la web que nos pidan, enviar la petición a la máquina adecuada de nuestra red y proporcionarle un certificado ssl (aunque no nos hayan hecho la petición segura). Esto último es importante ya que podemos cifrar tráfico a web o servicios que no lo tienen.

Planteo un escenario de una web en la misma NAS de QNAP sin tener Traefik.

Por ejemplo tenemos:

  1.  como dominio "pruebas.org". Definimos en nuestro proveedor las DNS "www.pruebas.org" y "abejas.pruebas.org" en las que las 2 apuntan a nuestra ip pública. 

  2. tenemos una web sobre apicultura alojada en nuestra nas en la carpeta "/Web/abejas" 

  3. nuestra nas tiene instalado el certificado ssl "www.pruebas.org" 

  4. en nuestra nas tenemos definidos los puertos 80 y 8000 como servidores web (que no son para la gestión de la nas, esos los tenemos en el 8080 y 443 )

  5. en nuestro enrutador tenemos redirigidos los puertos 80 y 8000 hacia la ip privada de la nas

  6. el archivo index.php ubicado en la carpeta /Web lo cambio por uno que hace una redirección a la web "http://www.pruebas.org/abejas"
Es decir con lo anterior, si desde el exterior escribo:
  • "http://www.pruebas.org/abejas", llego sin problemas a la web de apicultura.
  • "http://abejas.pruebas.org", la petición llega a nuestro router, como ve solicitud al puerto 80 se lo envía a la nas, y ésta como tiene modificado el archivo index,php nos presenta la web de apicultura.
  • si escribo "http://www.pruebas.org", la petición llega a nuestro router, como ve solicitud al puerto 80 se lo envía a la nas, y ésta como tiene modificado el archivo index,php nos presenta la web de apicultura.
Es decir vamos a la misma web aunque escribamos direcciones distintas ya que ambas hacen la petición a la misma ip pública.


Ahora planteo un escenario mas complicado de dos web en la misma NAS de QNAP sin tener Traefik.

Por ejemplo tenemos:

  1.  como dominio "pruebas.org". Definimos en nuestro proveedor las DNS "www.pruebas.org", "abejas.pruebas.org" y "termitas.pruebas.org" que las 3 apuntan a nuestra ip pública. 
  2. tenemos una web sobre apicultura alojada en nuestra nas en la carpeta "/Web/abejas" 
  3. tenemos una web sobre madera alojada en nuestra nas en la carpeta "/Web/termitas"
  4. nuestra nas tiene instalado el certificado ssl "www.pruebas.org" 
  5. en nuestra nas tenemos definidos los puertos 80 y 8000 como servidores web (que no son para la gestión de la nas, esos los tenemos en el 8080 y 443 )
  6. en nuestro enrutador tenemos redirigidos los puertos 80 y 8000 hacia la ip privada de la nas
  7. el archivo index.php ubicado en la carpeta /Web lo dejo sin tocar.
Con todo el escenario anterior, si quiero ver desde el exterior: Y no es cuento como tengáis varias web o máquinas diferentes, el lío de configuración puede ser importante  Sad

Aquí es donde traefik nos va a ayudar. Ya que traefik SI es capaz de distinguir como nos han hecho la petición y nos lleva a la web o máquina adecuada  Smile

La configuración de Traefik es un poco liosa, pero no es algo que vayamos a estar manipulando habitualmente.
Además en el caso de vayamos a publicar algún servicio de otro contenedor Docker, podemos indicar los parámetros en la definición de ese Docker y se agregan automáticamente las reglas en Traefik.

Vamos con la creación del Docker de Traefik.

Código:
docker run -d -p 40080:80 -p 40443:443 -p 48082:8082 --network=miscontenedores \
--restart always \
--name="traefik-server" \
-v /share/DockerData/traefik/traefik.toml:/etc/traefik/traefik.toml \
-v /share/DockerData/traefik/conf/:/share/DockerData/traefik/conf/ \
-v /share/DockerData/certs:/certs \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:v2.0

o si lo queréis en una sola línea
Código:
docker run -d -p 40080:80 -p 40443:443 -p 48082:8082 --network=miscontenedores --restart always --name="traefik-server" -v /share/DockerData/traefik/traefik.toml:/etc/traefik/traefik.toml -v /share/DockerData/traefik/conf/:/share/DockerData/traefik/conf/ -v /share/DockerData/certs:/certs \
-v /var/run/docker.sock:/var/run/docker.sock traefik:v2.0

Una vez arrancado para que traefik sea accesible desde el exterior hemos de hacer la siguiente regla en nuestro router:
-puerto 80 exterior redirigido a 40080 en la ip privada de la nas
-puerto 443 exterior redirigido a 40443 en la ip privada de la nas

El puerto 48082 de nuestra nas será el de gestión web de traefik.
Pero antes vamos hacerle cambios, vamos a poner unos archivos de configuración base donde definimos la redirección de de puerto 80 a 443 de forma automática (es decir, escribo dirección http y me presenta la https).
Detenemos traefik y editamos el archivo "/share/DockerData/traefik/traefik.toml". El contenido será el siguiente
Código:
#Configuración estática de Traefik -> traefik.toml
[Global]
   checkNewVersion = true
[api]
   #Habilitamos la interfaz web de Traefik
   dashboard = true
   insecure = true
  
[entryPoints.web]
   address = ":80"
 
[entryPoints.web-secure]
   address = ":443"
  
[entryPoints.traefik]
   address = ":8082"
  
[providers]
   [providers.docker]
      watch = true
      network = "miscontenedores"
      exposedbydefault = false
   [providers.file]
      filename = "/share/DockerData/traefik/conf/dynamic-conf.toml"
      watch = true
En el anterior archivo, básicamente definimos los puertos que va a escuchar Traefik y la ubicación del archivo de configuración dinámica.

Ahora editamos el archivo "/share/DockerData/traefik/conf/dynamic-conf.toml" que es donde definimos las rutas a las webs http y https

Código:
[http.routers]

#Router para http termitas.pruebas.org
[http.routers.r-nas4]
   entrypoints = ["web"]
   rule = "Host(`termitas.pruebas.org`)"
   middlewares = ["redirect-https"]
   service = "termitas"
  
#Router para https termitas.pruebas.org
[http.routers.rssl-nas4]
   entrypoints = ["web-secure"]
   rule = "Host(`termitas.pruebas.org`)"
    service = "termitas"
[http.routers.rssl-nas4.tls]


#Router para http pruebas.org
[http.routers.r-nas]
   entrypoints = ["web"]
   rule = "Host(`www.pruebas.org`)"
   middlewares = ["redirect-https"]
   service = "admin-nas"
  
#Router para https pruebas.org
[http.routers.rssl-nas]
   entrypoints = ["web-secure"]
   rule = "Host(`www.pruebas.org`)"
   service = "admin-nas"
   [http.routers.rssl-nas.tls]

#Router para http abejas.pruebas.org
[http.routers.r-nas3]
   entrypoints = ["web"]
   rule = "Host(`abejas.pruebas.org`)"
   middlewares = ["redirect-https"]
   service = "abeja"
  
#Router para https abejas.pruebas.org
[http.routers.rssl-nas3]
   entrypoints = ["web-secure"]
   rule = "Host(`abejas.pruebas.org`)"
   service = "abejas"
   [http.routers.rssl-nas3.tls]

            
[http.middlewares]

#Middleware para la redirección https de pruebas.org

[http.middlewares.redirect-https.redirectScheme]
    scheme = "https"
    permanent = true

[http.services]
#Servicio que apunta a la web apicultura de la nas
[[http.services.abejas.loadBalancer.servers]]
   url = "http://192.168.10.50/abejas"
               
#Servicio que apunta al servidor nas
[[http.services.admin-nas.loadBalancer.servers]]
   url = "http://192.168.10.50"

#Servicio que apunta a la web termitas de la nas
[[http.services.termitas.loadBalancer.servers]]
   url = "http://192.168.10.50/termitas"
      
[[tls.certificates]]   
# ruta de los certificados para todas las webs
certFile = "/certs/SSLcertificate.crt"
keyFile = "/certs/SSLprivate.key"

En la última parte vemos la ruta donde dejaremos los certificados SSL. Estos certificados los usarán todas las web.
Es decir, hemos de crear certificados que sirvan para www.pruebas.org , abejaspruebas.org y termitas.pruebas.org o bien uno comodín *.pruebas.org.

Ademas para llegar sin problemas a las web de esa misma nas hay que ir al apartado de host virtual y crear los siguientes>

host termitas.pruebas.org,  carpeta /Web/termitas en el puerto 80
host abejas.pruebas.org,  carpeta /Web/abejas en el puerto 80

Si queremos ver la web que publica Traefik hemos de ir a la web http://192.168.10.50:48082/ (o al puerto que definimos en la creación del Docker).
Si todo ha ido bien veremos algo similar a la siguiente captura
   

En es caso de la imagen hay mas subdominios (4 http y 4 https que hacen un total de 8).

Ahora si escribo http://termitas.pruebas.org veré la web sobre madera, pero con https

Si escribo http://abejas.pruebas.org se presentará la de apicultura en https.

Si escribo http://www.pruebas.org se presentará la web del archivo index bajo https.

Espero no haber hecho ninguna errata, si veis alguna avisarme por privado y lo corrijo.

Mas adelante pondré en el foro como definir un docker que se integra en Traefik sin tener que modificar los archivos de configuración de Traefik.
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny y TS-453Be) Ʀɐɯ0η
  Responder
#2
(08-08-2020, 01:45 PM)Ganekogorta escribió: Hola

Este es uno de los contenedores mas útiles y complejos de usar. Aunque según ellos es fácil.
Podéis echar una ojeada en su web.

La función de Traefik es hacer la resolución de la web que nos pidan, enviar la petición a la máquina adecuada de nuestra red y proporcionarle un certificado ssl (aunque no nos hayan hecho la petición segura). Esto último es importante ya que podemos cifrar tráfico a web o servicios que no lo tienen.

Planteo un escenario de una web en la misma NAS de QNAP sin tener Traefik.

Por ejemplo tenemos:

  1.  como dominio "pruebas.org". Definimos en nuestro proveedor las DNS "www.pruebas.org" y "abejas.pruebas.org" en las que las 2 apuntan a nuestra ip pública. 

  2. tenemos una web sobre apicultura alojada en nuestra nas en la carpeta "/Web/abejas" 

  3. nuestra nas tiene instalado el certificado ssl "www.pruebas.org" 

  4. en nuestra nas tenemos definidos los puertos 80 y 8000 como servidores web (que no son para la gestión de la nas, esos los tenemos en el 8080 y 443 )

  5. en nuestro enrutador tenemos redirigidos los puertos 80 y 8000 hacia la ip privada de la nas

  6. el archivo index.php ubicado en la carpeta /Web lo cambio por uno que hace una redirección a la web "http://www.pruebas.org/abejas"
Es decir con lo anterior, si desde el exterior escribo:
  • "http://www.pruebas.org/abejas", llego sin problemas a la web de apicultura.
  • "http://abejas.pruebas.org", la petición llega a nuestro router, como ve solicitud al puerto 80 se lo envía a la nas, y ésta como tiene modificado el archivo index,php nos presenta la web de apicultura.
  • si escribo "http://www.pruebas.org", la petición llega a nuestro router, como ve solicitud al puerto 80 se lo envía a la nas, y ésta como tiene modificado el archivo index,php nos presenta la web de apicultura.
Es decir vamos a la misma web aunque escribamos direcciones distintas ya que ambas hacen la petición a la misma ip pública.


Ahora planteo un escenario mas complicado de dos web en la misma NAS de QNAP sin tener Traefik.

Por ejemplo tenemos:

  1.  como dominio "pruebas.org". Definimos en nuestro proveedor las DNS "www.pruebas.org", "abejas.pruebas.org" y "termitas.pruebas.org" que las 3 apuntan a nuestra ip pública. 
  2. tenemos una web sobre apicultura alojada en nuestra nas en la carpeta "/Web/abejas" 
  3. tenemos una web sobre madera alojada en nuestra nas en la carpeta "/Web/termitas"
  4. nuestra nas tiene instalado el certificado ssl "www.pruebas.org" 
  5. en nuestra nas tenemos definidos los puertos 80 y 8000 como servidores web (que no son para la gestión de la nas, esos los tenemos en el 8080 y 443 )
  6. en nuestro enrutador tenemos redirigidos los puertos 80 y 8000 hacia la ip privada de la nas
  7. el archivo index.php ubicado en la carpeta /Web lo dejo sin tocar.
Con todo el escenario anterior, si quiero ver desde el exterior: Y no es cuento como tengáis varias web o máquinas diferentes, el lío de configuración puede ser importante  Sad

Aquí es donde traefik nos va a ayudar. Ya que traefik SI es capaz de distinguir como nos han hecho la petición y nos lleva a la web o máquina adecuada  Smile

La configuración de Traefik es un poco liosa, pero no es algo que vayamos a estar manipulando habitualmente.
Además en el caso de vayamos a publicar algún servicio de otro contenedor Docker, podemos indicar los parámetros en la definición de ese Docker y se agregan automáticamente las reglas en Traefik.

Vamos con la creación del Docker de Traefik.

Código:
docker run -d -p 40080:80 -p 40443:443 -p 48082:8082 --network=miscontenedores \
--restart always \
--name="traefik-server" \
-v /share/DockerData/traefik/traefik.toml:/etc/traefik/traefik.toml \
-v /share/DockerData/traefik/conf/:/share/DockerData/traefik/conf/ \
-v /share/DockerData/certs:/certs \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:v2.0

o si lo queréis en una sola línea
Código:
docker run -d -p 40080:80 -p 40443:443 -p 48082:8082 --network=miscontenedores --restart always --name="traefik-server" -v /share/DockerData/traefik/traefik.toml:/etc/traefik/traefik.toml -v /share/DockerData/traefik/conf/:/share/DockerData/traefik/conf/ -v /share/DockerData/certs:/certs \
-v /var/run/docker.sock:/var/run/docker.sock traefik:v2.0

Una vez arrancado para que traefik sea accesible desde el exterior hemos de hacer la siguiente regla en nuestro router:
-puerto 80 exterior redirigido a 40080 en la ip privada de la nas
-puerto 443 exterior redirigido a 40443 en la ip privada de la nas

El puerto 48082 de nuestra nas será el de gestión web de traefik.
Pero antes vamos hacerle cambios, vamos a poner unos archivos de configuración base donde definimos la redirección de de puerto 80 a 443 de forma automática (es decir, escribo dirección http y me presenta la https).
Detenemos traefik y editamos el archivo "/share/DockerData/traefik/traefik.toml". El contenido será el siguiente
Código:
#Configuración estática de Traefik -> traefik.toml
[Global]
   checkNewVersion = true
[api]
   #Habilitamos la interfaz web de Traefik
   dashboard = true
   insecure = true
  
[entryPoints.web]
   address = ":80"
 
[entryPoints.web-secure]
   address = ":443"
  
[entryPoints.traefik]
   address = ":8082"
  
[providers]
   [providers.docker]
      watch = true
      network = "miscontenedores"
      exposedbydefault = false
   [providers.file]
      filename = "/share/DockerData/traefik/conf/dynamic-conf.toml"
      watch = true
En el anterior archivo, básicamente definimos los puertos que va a escuchar Traefik y la ubicación del archivo de configuración dinámica.

Ahora editamos el archivo "/share/DockerData/traefik/conf/dynamic-conf.toml" que es donde definimos las rutas a las webs http y https

Código:
[http.routers]

#Router para http termitas.pruebas.org
[http.routers.r-nas4]
   entrypoints = ["web"]
   rule = "Host(`termitas.pruebas.org`)"
   middlewares = ["redirect-https"]
   service = "termitas"
  
#Router para https termitas.pruebas.org
[http.routers.rssl-nas4]
   entrypoints = ["web-secure"]
   rule = "Host(`termitas.pruebas.org`)"
    service = "termitas"
[http.routers.rssl-nas4.tls]


#Router para http pruebas.org
[http.routers.r-nas]
   entrypoints = ["web"]
   rule = "Host(`www.pruebas.org`)"
   middlewares = ["redirect-https"]
   service = "admin-nas"
  
#Router para https pruebas.org
[http.routers.rssl-nas]
   entrypoints = ["web-secure"]
   rule = "Host(`www.pruebas.org`)"
   service = "admin-nas"
   [http.routers.rssl-nas.tls]

#Router para http abejas.pruebas.org
[http.routers.r-nas3]
   entrypoints = ["web"]
   rule = "Host(`abejas.pruebas.org`)"
   middlewares = ["redirect-https"]
   service = "abeja"
  
#Router para https abejas.pruebas.org
[http.routers.rssl-nas3]
   entrypoints = ["web-secure"]
   rule = "Host(`abejas.pruebas.org`)"
   service = "abejas"
   [http.routers.rssl-nas3.tls]

            
[http.middlewares]

#Middleware para la redirección https de pruebas.org

[http.middlewares.redirect-https.redirectScheme]
    scheme = "https"
    permanent = true

[http.services]
#Servicio que apunta a la web apicultura de la nas
[[http.services.abejas.loadBalancer.servers]]
   url = "http://192.168.10.50/abejas"
               
#Servicio que apunta al servidor nas
[[http.services.admin-nas.loadBalancer.servers]]
   url = "http://192.168.10.50"

#Servicio que apunta a la web termitas de la nas
[[http.services.termitas.loadBalancer.servers]]
   url = "http://192.168.10.50/termitas"
      
[[tls.certificates]]   
# ruta de los certificados para todas las webs
certFile = "/certs/SSLcertificate.crt"
keyFile = "/certs/SSLprivate.key"

En la última parte vemos la ruta donde dejaremos los certificados SSL. Estos certificados los usarán todas las web.
Es decir, hemos de crear certificados que sirvan para www.pruebas.org , abejaspruebas.org y termitas.pruebas.org o bien uno comodín *.pruebas.org.

Ademas para llegar sin problemas a las web de esa misma nas hay que ir al apartado de host virtual y crear los siguientes>

host termitas.pruebas.org,  carpeta /Web/termitas en el puerto 80
host abejas.pruebas.org,  carpeta /Web/abejas en el puerto 80

Si queremos ver la web que publica Traefik hemos de ir a la web http://192.168.10.50:48082/ (o al puerto que definimos en la creación del Docker).
Si todo ha ido bien veremos algo similar a la siguiente captura


En es caso de la imagen hay mas subdominios (4 http y 4 https que hacen un total de 8).

Ahora si escribo http://termitas.pruebas.org veré la web sobre madera, pero con https

Si escribo http://abejas.pruebas.org se presentará la de apicultura en https.

Si escribo http://www.pruebas.org se presentará la web del archivo index bajo https.

Espero no haber hecho ninguna errata, si veis alguna avisarme por privado y lo corrijo.

Mas adelante pondré en el foro como definir un docker que se integra en Traefik sin tener que modificar los archivos de configuración de Traefik.
Hola compi, me puse ayer noche con este tutorial y como siempre me surgen dudas. En el archivo dynamic-conf.toml yo debo pegar lo mismo que expones en el tutorial? o que debo poner dentro de ese archivo.
Lo pregunto ya que no tengo web ni de termitas ni abejas, pero es que no entiendo ese paso, que debo poner dentro?, lo unico ahi que entendi son los certificados
  Responder
#3
Hola
En ese archivo debes adaptarlo en función de tus web y aplicaciones a ser publicadas.
Yo puse ese de ejemplo.
Pero básicamente por cada web debes poner lo referente a su http, a su https y al enlace

#Router para http pruebas.org
[http.routers.r-nas]
  entrypoints = ["web"]
  rule = "Host(`www.pruebas.org`)"
  middlewares = ["redirect-https"]
  service = "admin-nas"
 
#Router para https pruebas.org
[http.routers.rssl-nas]
  entrypoints = ["web-secure"]
  rule = "Host(`www.pruebas.org`)"
  service = "admin-nas"
  [http.routers.rssl-nas.tls]

#Servicio que apunta al servidor nas
[[http.services.admin-nas.loadBalancer.servers]]
  url = "http://192.168.10.50"

y  el apartado de certificados que es común a todas.
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny y TS-453Be) Ʀɐɯ0η
  Responder
#4
(15-05-2021, 03:39 PM)Ganekogorta escribió: Hola
En ese archivo debes adaptarlo en función de tus web y aplicaciones a ser publicadas.
Yo puse ese de ejemplo.
Pero básicamente por cada web debes poner lo referente a su http, a su https y al enlace

#Router para http pruebas.org
[http.routers.r-nas]
  entrypoints = ["web"]
  rule = "Host(`www.pruebas.org`)"
  middlewares = ["redirect-https"]
  service = "admin-nas"
 
#Router para https pruebas.org
[http.routers.rssl-nas]
  entrypoints = ["web-secure"]
  rule = "Host(`www.pruebas.org`)"
  service = "admin-nas"
  [http.routers.rssl-nas.tls]

#Servicio que apunta al servidor nas
[[http.services.admin-nas.loadBalancer.servers]]
  url = "http://192.168.10.50"

y  el apartado de certificados que es común a todas.
Ah ok vale perfecto, gracias.
No se porque estoy teniendo problema con el puerto 80, me dice que esta en uso. Yo en la configuracion le puse ya que no estoy utilizando esos puertos para ninguna aplicacion en el nas, a que se puede deber:


docker run -d -p 80:80 -p 443:443 -p 40880:8082 --network=qnapcloudnet \
--restart always \
--name="traefik-server" \
-v /share/DockerVolumes/traefik/traefik.toml:/etc/traefik/traefik.toml \
-v /share/DockerVolumes/traefik/conf/:/share/DockerVolumes/traefik/conf/ \
-v /share/DockerVolumes/certs:/certs \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:latest

Yo cuando trate de hacer el tuto ayer y no me funciono, seguí buscando por internet y encontré este hilo que te gestiona a su ves los certificados con lest encrytp automáticamente, pero tengo problema con el mismo puerto. Algo debo de estar haciendo mal, estoy que exploto.

Este es el otro hilo de traefik:
Instalar y configurar Traefik v2 para usarlo como proxy inverso (geekland.eu)
  Responder
#5
Hola

Eso te pasa porque ya tienes a algún programa o servidor usándolo.

Cámbialos por otros como -p 4080:80 -p 4443:443 -p 8082:8082 y luego en tu router haz la traslación de puertos:
- del externo 443 a la ip de la nas puerto 4443
- del externo 80 a la ip de la nas puerto 4080

y la monitorización de traefik la haces por ip_de_tu_nas:8082
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny y TS-453Be) Ʀɐɯ0η
  Responder
#6
Cuando le doy clic a el contenedor de traefik server me lleva a la consola de traefik dentro de container station y me sale este error:

Código:
time="2021-05-15T18:10:02Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=web-secure                                                                                                  
time="2021-05-15T18:10:02Z" level=error msg="Error while starting server: http: Server closed" entryPointName=web-secure                                                                                                       
time="2021-05-15T18:10:02Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=web                                                                                                          
time="2021-05-15T18:10:02Z" level=error msg="accept tcp [::]:8082: use of closed network connection" entryPointName=traefik                                                                                                    
time="2021-05-15T18:10:02Z" level=error msg="Error while starting server: http: Server closed" entryPointName=web                                                                                                              
time="2021-05-15T18:10:02Z" level=error msg="Error while starting server: http: Server closed" entryPointName=traefik                                                                                                          
time="2021-05-15T18:10:02Z" level=error msg="Error while starting server: http: Server closed" entryPointName=web                                                                                                              
time="2021-05-15T18:10:02Z" level=error msg="Error while starting server: http: Server closed" entryPointName=web-secure                                                                                                       
time="2021-05-15T18:10:02Z" level=error msg="Error while starting server: http: Server closed" entryPointName=traefik                                                                                                          
time="2021-05-15T18:10:02Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=web                                                                                                           
time="2021-05-15T18:10:02Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=web-secure                                                                                                   
time="2021-05-15T18:10:02Z" level=error msg="close tcp [::]:8082: use of closed network connection" entryPointName=traefik                                                                                                     
time="2021-05-15T18:12:21Z" level=info msg="Configuration loaded from file: /etc/traefik/traefik.toml"                                                                                                                         
time="2021-05-15T18:12:21Z" level=error msg="Cannot start the provider *file.Provider: error reading configuration file: /share/DockerVolumes/traefik/dynamic-conf.toml - open /share/DockerVolumes/traefik/dynamic-conf.toml: n
o such file or directory"
Aqui en la imagen puedes verlo mas claro, entro al dashboard y todo bien pero me da ese error y no se si me esta ofreciendo el ssl...

https://imgur.com/3LdUKgS
https://imgur.com/1Taxody
  Responder
#7
Hola

Veo algún error de que no tienes bien definidas las rutas o no puede acceder a algún archivo de configuración

¿puedes poner la definición completa de creación de tu contenedor? o revisa que las carpetas persistentes que indicas, existen.
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny y TS-453Be) Ʀɐɯ0η
  Responder
#8
(15-05-2021, 10:09 PM)Ganekogorta escribió: Hola

Veo algún error de que no tienes bien definidas las rutas o no puede acceder a algún archivo de configuración

¿puedes poner la definición completa de creación de tu contenedor? o revisa que las carpetas persistentes que indicas, existen.
traefik.toml:


Código:
#Configuración estática de Traefik -> traefik.toml
[Global]
   checkNewVersion = true
[api]
   #Habilitamos la interfaz web de Traefik
   dashboard = true
   insecure = true
 
[entryPoints.web]
   address = ":80"

[entryPoints.web-secure]
   address = ":443"
 
[entryPoints.traefik]
   address = ":8082"
 
[providers]
   [providers.docker]
      watch = true
      network = "qnapcloudnet"
      exposedbydefault = false
   [providers.file]
      filename = "/share/DockerVolumes/traefik/dynamic-conf.toml"
      watch = true

dynamic-conf.toml
Código:
[http.routers]

#Router para http pruebas.org
[http.routers.r-nas]
   entrypoints = ["web"]
   rule = "Host(`qnapcloud.info`)"
   middlewares = ["redirect-https"]
   service = "admin-nas"
 
#Router para https pruebas.org
[http.routers.rssl-nas]
   entrypoints = ["web-secure"]
   rule = "Host(`qnapcloud.info`)"
   service = "admin-nas"
   [http.routers.rssl-nas.tls]
   
[http.middlewares]

#Middleware para la redirección https de pruebas.org

[http.middlewares.redirect-https.redirectScheme]
    scheme = "https"
    permanent = true
   
#Servicio que apunta al servidor nas
[[http.services.admin-nas.loadBalancer.servers]]
   url = "http://192.168.1.2"   
     
[[tls.certificates]]   
# ruta de los certificados para todas las webs
certFile = "/share/DockerVolumes/certs/SSLcertificate.crt"
keyFile = "/share/DockerVolumes/certs/SSLprivate.key"

Levantamiento Docker:


Código:
docker run -d -p 40080:80 -p 40443:443 -p 48082:8082 --network=qnapcloudnet \
> --restart always \
> --name="traefik-server" \
> -v /share/DockerVolumes/traefik/traefik.toml:/etc/traefik/traefik.toml \
> -v /share/DockerVolumes/traefik/conf:/share/DockerVolumes/traefik/conf/ \
> -v /share/DockerVolumes/certs:/certs \
> -v /var/run/docker.sock:/var/run/docker.sock \
> traefik:latest
Estos son los parametros que estoy ejecutando ahora mismo y me lanza ese error:


[font="DejaVu Sans Mono", "Liberation Mono", monospace]time="2021-05-15T18:44:56Z" level=error msg="Cannot start the provider *file.Provider: error reading configuration file: /share/DockerVolumes/traefik/dynamic-conf.toml - open /share/DockerVolumes/traefik/dynamic-conf.toml: n[/font]

[font="DejaVu Sans Mono", "Liberation Mono", monospace]uch file or directory"[/font]

[font="Proxima Nova Regular", "Helvetica Neue", Helvetica, Arial, sans-serif]https://imgur.com/4pAKr1Z[/font]

[font="Proxima Nova Regular", "Helvetica Neue", Helvetica, Arial, sans-serif]esta es una imagen de la carpeta donde se guardan los archivos.[/font]
  Responder
#9
Hola
Veo que has hecho corta pega de masqueteclas

> -v /share/DockerVolumes/traefik/traefik.toml:/etc/traefik/traefik.toml \
> -v /share/DockerVolumes/traefik/conf:/share/DockerVolumes/traefik/conf/ \
> -v /share/DockerVolumes/certs:/certs \
> -v /var/run/docker.sock:/var/run/docker.sock \

¿existen en tu nas, la carpeta compartida "DockerVolumes" y dentro de ella la de "traefik" ?
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny y TS-453Be) Ʀɐɯ0η
  Responder
#10
(15-05-2021, 10:56 PM)Ganekogorta escribió: Hola
Veo que has hecho corta pega de masqueteclas

> -v /share/DockerVolumes/traefik/traefik.toml:/etc/traefik/traefik.toml \
> -v /share/DockerVolumes/traefik/conf:/share/DockerVolumes/traefik/conf/ \
> -v /share/DockerVolumes/certs:/certs \
> -v /var/run/docker.sock:/var/run/docker.sock \

¿existen en tu nas, la carpeta compartida "DockerVolumes"  y dentro de ella la de "traefik" ?
Bueno algo asi, ese video lo vi hace unas semanas entonces ya tenia unos txt con las configuraciones predeterminadas con mis datos, y despues buscando por internet encontre este tuyo, que me es bastante similar. Creo que di con ese problema para mi parecer era esto:


[providers.file]

      filename = "/share/DockerData/traefik/conf/dynamic-conf.toml"

lo tenia sin la carpeta conf, lo digo porque ya no me sale, pero ahora me sale este otro: en que extension deben de estar los certificados para traefik?

time="2021-05-15T20:21:47Z" level=error msg="Unable to append certificate /share/DockerVolumes/certs/SSLcertificate.crt to store: unable to generate TLS certificate : tls: failed to find any PEM data in certificate input" tl

oreName=default

Dsde el exterior no puedo acceder a ninguno de mis servicios como nextcloud, ni el nas ni a mi dominio principal, de una ves me sale cloudflare, esta pasando algo con los certificados, estos los cree con certbot de tu post, son comodin tiene la misma caducidad que los que me aparecen en el apartado de cloudflare.
No tengo claro que SSL esta utilizando. Nose si salirme de cloudflare y seguir con namesilo, como bien viste la imagen de lo que me dice namesilo cuando quiero editar un cname

https://imgur.com/1H4bXxx
  Responder




Usuarios navegando en este tema: 1 invitado(s)