Usando Traefik - 3

· 3 min · @Self-Hosting · #VPS #Docker

Como recordáis hice 2 artículos donde en el primer artículo explicaba como se podía usar traefik con otros servicios de docker y en el segundo artículo, explicaba como se le podía añadir una capa más de seguridad a nuestro servicio de traefik que consistía en bloquear las peticiones de países de nuestra lista negra.

En este 3º artículo, explicaré unas modificaciones que, como siempre me pasa, no acabé de entender al leer el artículo principal de atareao{:target="_blank} y que gracias, no se si por inspiración divina de Lorenzo he acabado de entender.

Estas modificaciones, si te fijas bien, en el artículo de Atareao y que está al final, comenta que después de lo que se ha hecho, hay suficiente con estas líneas:

- traefik.enable=true
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
- traefik.http.routers.jellyfin.entrypoints=websecure
- traefik.http.routers.jellyfin.rule=Host(`${FQDN}`)

Para que traefik tenga en cuenta el servicio que nosotros le estamos indicando y lo configure correctamente e incluso con un certificado de letsncrypt. En el caso de Lorenzo él lo explica para Jellyfin, pero en mi caso, lo explicaré para rss-funnel, que es el servicio de ejemplo que utilicé en el primer artículo. También pondré las modificaciones necesarias que se tiene que hacer en los ficheros de configuración de traefik.

Como podéis recordar en la configuración de rss-funnel del primer artículo, lo tenía configurado de la siguiente manera:

 rssFunnel:
  image: ghcr.io/shouya/rss-funnel:latest
  container_name: rssFunnel
  restart: unless-stopped
  networks:
    - proxy
  ports:
    - 33333:4080
  volumes:
    - ${HOME}/config/rss-funnel/funnel.yaml:/funnel.yaml
  environment:
    RSS_FUNNEL_CONFIG: /funnel.yaml
    RSS_FUNNEL_BIND: 0.0.0.0:PORT
  labels:
    - traefik.enable=true
    - traefik.http.services.rssFunnel.loadbalancer.server.port=4080
    - traefik.http.routers.rssFunnel.entrypoints=web
    - traefik.http.routers.rssFunnel.rule=Host(`${PODCAST_SERVER}`)
    - traefik.http.middlewares.rssFunnel-https-redirect.redirectscheme.scheme=websecure
    - traefik.http.routers.rssFunnel.middlewares=rssFunnel-https-redirect
    - traefik.http.routers.rssFunnel-secure.entrypoints=websecure
    - traefik.http.routers.rssFunnel-secure.rule=Host(`${PODCAST_SERVER}`)
    - traefik.http.routers.rssFunnel-secure.tls=true
    - traefik.http.routers.rssFunnel-secure.tls.certresolver=letsencrypt

Pero siguiendo las pautas que ha dado atareao, tendría que quedar de la siguiente manera:

 rssFunnel:
  image: ghcr.io/shouya/rss-funnel:latest
  container_name: rssFunnel
  restart: unless-stopped
  networks:
    - proxy
  volumes:
    - ${HOME}/config/rss-funnel/funnel.yaml:/funnel.yaml
  environment:
    RSS_FUNNEL_CONFIG: /funnel.yaml
    RSS_FUNNEL_BIND: 0.0.0.0:PORT
  labels:
    - traefik.enable=true
    - traefik.http.services.rssFunnel.loadbalancer.server.port=4080
    - traefik.http.routers.rssFunnel.entrypoints=websecure
    - traefik.http.routers.rssFunnel.rule=Host(`${PODCAST_SERVER}`)

Como veis, he quitado toda la parte del puerto, la sección del certificado y la sección de la redirección porque de todo esto, se encarga traefik, esto es como consecuencia de que en el fichero traefik.yml hemos puesto lo siguiente:

api:
  dashboard: true

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
          permanent: true
  websecure:
    address: ":443"
    http:
      tls:
        certresolver: letsencrypt

Que es el encargado de crear automáticamente los certificados de todos los dominios que ponemos con traefik. Y os puedo decir que funciona perfectamente.

Lo he aplicado a los siguientes contenedores:

Funciona de fábula. Como dice el dicho, nunca te irás a dormir sin conocer una nueva cosa.

Después de esto lo último que me falta es ponerme con crowdsec que, una vez más, siempre había pensado que era un plugin que se añadía a traefik y no, es un contenedor más con su respectiva configuración.

Pero ahora estoy más tranquilo, porque entiendo un poco más como funciona el mundo de traefik y con ayuda de la excelente documentación que tiene Atareao con respecto a esto, creo que no tendré ningún problema en implementarlo en mi servidor.

Como dice el dicho La suerte favorece a los valientes

◇ Referencia