Bunny - DNS provider

Hello, I decided to change the dns provider from cloudflar to bunny.net but now I am faced with the fact that even though I have changed who resolves the certificates on bunny.net so we are currently not working this solution. Could someone please tell me what is wrong or should be changed ? These are my files / settings

docker-compose.yml

version: '3.5'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
       proxy:
    ports:
      - 80:80
      - 443:443
    environment:
      - BUNNY_API_KEY=your-api-key-from-bunny-dns-from-user-settings-api-key
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /home/ubuntu/docker/traefik/traefik.yml:/traefik.yml:ro
      - /home/ubuntu/docker/traefik/acme.json:/acme.json
      - /home/ubuntu/docker/traefik/config.yml:/config.yml:ro
      - /home/ubuntu/docker/traefik/logs:/var/log/traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.net`)"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=ubuntu:846468dasdasgahruAGGH16d4b6s4fb"
      - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https"
      - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
      - "traefik.http.routers.traefik-secure.entrypoints=https"
      - "traefik.http.routers.traefik-secure.rule=Host(`traefik.yourdomain.net`)"
      - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
      - "traefik.http.routers.traefik-secure.tls=true"
      - "traefik.http.routers.traefik-secure.tls.certresolver=bunny"
      - "traefik.http.routers.traefik-secure.tls.domains[0].main=yourdomain.net"
      - "traefik.http.routers.traefik-secure.tls.domains[0].sans=*.yourdomain.net"
      - "traefik.http.routers.traefik-secure.middlewares=middlewares-authentik@file"
      - "traefik.http.routers.traefik-secure.service=api@internal"


networks:
  proxy:
    name: proxy
    external: true

traefik.yml

api:
  dashboard: true
  debug: true
entryPoints:
  http:
    address: ":80"
    http:
      middlewares:
        - crowdsec-bouncer@file
      redirections:
        entryPoint:
          to: https
          scheme: https
  https:
    address: ":443"
    http:
      middlewares:
        - crowdsec-bouncer@file
serversTransport:
  insecureSkipVerify: true
providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
  file:
    filename: /config.yml
certificatesResolvers:
  bunny:
    acme:
      email: youremail@yourdomain.net
      storage: acme.json
      dnsChallenge:
        provider: bunny
        resolvers:
          - "185.152.64.17:53"
          - "156.59.145.154:53"
log:
  level: "INFO"
  filePath: "/var/log/traefik/traefik.log"
accessLog:
  filePath: "/var/log/traefik/access.log"

Bunny seems to exists (doc). What does the Traefik debug log tell you?

Note that you have a http-to-https redirect on entrypoint, so you don’t need it on routers again. Compare to simple Traefik example.

Thanks for the response, i will try also your configuration what you send.
but for now there are the logs :slight_smile: , i am also using config.yml for static / other servers redirect web pages.

time="2024-06-19T20:06:23Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T20:06:23Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T20:06:23Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T20:06:23Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T20:06:23Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T20:06:23Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T20:06:23Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T20:06:23Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T20:06:23Z" level=info msg="Testing certificate renew..." providerName=cloudflare.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T20:06:23Z" level=error msg="middleware \"crowdsec-bouncer@file\" does not exist" routerName=http-to-https@internal entryPointName=http
time="2024-06-19T20:06:23Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:06:23Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:06:23Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T20:06:23Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:06:23Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:06:23Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:06:23Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T20:06:23Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:06:54Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T20:06:54Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:06:54Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:06:54Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:08:03Z" level=info msg="I have to go..."
time="2024-06-19T20:08:03Z" level=info msg="Stopping server gracefully"
time="2024-06-19T20:08:03Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:08:03Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:08:03Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:08:03Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:08:03Z" level=info msg="Server stopped"
time="2024-06-19T20:08:03Z" level=info msg="Shutting down"
time="2024-06-19T20:15:16Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T20:15:16Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T20:15:16Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T20:15:16Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T20:15:16Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T20:15:16Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T20:15:16Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T20:15:16Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T20:15:16Z" level=info msg="Testing certificate renew..." providerName=cloudflare.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T20:15:16Z" level=error msg="middleware \"crowdsec-bouncer@file\" does not exist" entryPointName=http routerName=http-to-https@internal
time="2024-06-19T20:15:16Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:16Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:16Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:16Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:18Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:18Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:18Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:18Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:28Z" level=error msg="Unable to obtain ACME certificate for domains \"yourdomain.net,*.yourdomain.net\"" rule="Host(`traefik.yourdomain.net`)" error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:40779->127.0.0.11:53: i/o timeout" ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=cloudflare.acme routerName=traefik-secure@docker
time="2024-06-19T20:15:35Z" level=info msg="I have to go..."
time="2024-06-19T20:15:35Z" level=info msg="Stopping server gracefully"
time="2024-06-19T20:15:35Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:15:35Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:15:35Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:15:35Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:15:35Z" level=info msg="Server stopped"
time="2024-06-19T20:15:35Z" level=info msg="Shutting down"
time="2024-06-19T20:15:36Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T20:15:36Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T20:15:36Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T20:15:36Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T20:15:36Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T20:15:36Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T20:15:36Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T20:15:36Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T20:15:36Z" level=info msg="Testing certificate renew..." providerName=cloudflare.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T20:15:36Z" level=error msg="middleware \"crowdsec-bouncer@file\" does not exist" entryPointName=http routerName=http-to-https@internal
time="2024-06-19T20:15:36Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:36Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:36Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T20:15:36Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:36Z" level=error msg="the router traefik-secure@docker uses a non-existent resolver: bunny"
time="2024-06-19T20:15:49Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:49Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:49Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:15:49Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:15:49Z" level=error msg="the router traefik-secure@docker uses a non-existent resolver: bunny"
time="2024-06-19T20:17:21Z" level=info msg="I have to go..."
time="2024-06-19T20:17:21Z" level=info msg="Stopping server gracefully"
time="2024-06-19T20:17:21Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:17:21Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:17:21Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:17:21Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:17:21Z" level=info msg="Server stopped"
time="2024-06-19T20:17:21Z" level=info msg="Shutting down"
time="2024-06-19T20:17:22Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T20:17:22Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T20:17:22Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T20:17:22Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T20:17:22Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T20:17:22Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T20:17:22Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T20:17:22Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T20:17:22Z" level=info msg="Testing certificate renew..." providerName="bunny:.acme" ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T20:17:22Z" level=error msg="middleware \"crowdsec-bouncer@file\" does not exist" entryPointName=http routerName=http-to-https@internal
time="2024-06-19T20:17:22Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:17:22Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:17:22Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:17:22Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:17:22Z" level=error msg="the router traefik-secure@docker uses a non-existent resolver: bunny"
time="2024-06-19T20:17:33Z" level=info msg="I have to go..."
time="2024-06-19T20:17:33Z" level=info msg="Stopping server gracefully"
time="2024-06-19T20:17:33Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:17:33Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:17:33Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:17:33Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:17:33Z" level=info msg="Server stopped"
time="2024-06-19T20:17:33Z" level=info msg="Shutting down"
time="2024-06-19T20:17:34Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T20:17:34Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T20:17:34Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T20:17:34Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T20:17:34Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T20:17:34Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T20:17:34Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T20:17:34Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T20:17:34Z" level=info msg="Testing certificate renew..." providerName=bunny.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T20:17:34Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:17:34Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:17:34Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:17:34Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:17:34Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:17:34Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:17:34Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:17:34Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:17:46Z" level=error msg="Unable to obtain ACME certificate for domains \"yourdomain.net,*.yourdomain.net\"" ACME CA="https://acme-v02.api.letsencrypt.org/directory" rule="Host(`traefik.yourdomain.net`)" routerName=traefik-secure@docker providerName=bunny.acme error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:44479->127.0.0.11:53: i/o timeout"
time="2024-06-19T20:18:34Z" level=info msg="I have to go..."
time="2024-06-19T20:18:34Z" level=info msg="Stopping server gracefully"
time="2024-06-19T20:18:34Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:18:34Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:18:34Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:18:34Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:18:34Z" level=info msg="Server stopped"
time="2024-06-19T20:18:34Z" level=info msg="Shutting down"
time="2024-06-19T20:18:35Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T20:18:35Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T20:18:35Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T20:18:35Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T20:18:35Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T20:18:35Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T20:18:35Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T20:18:35Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T20:18:35Z" level=info msg="Testing certificate renew..." providerName=bunny.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T20:18:35Z" level=error msg="middleware \"crowdsec-bouncer@file\" does not exist" entryPointName=http routerName=http-to-https@internal
time="2024-06-19T20:18:35Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T20:18:35Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:18:35Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T20:18:35Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T20:18:46Z" level=error msg="Unable to obtain ACME certificate for domains \"yourdomain.net,*.yourdomain.net\"" routerName=traefik-secure@docker rule="Host(`traefik.yourdomain.net`)" error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:43292->127.0.0.11:53: i/o timeout" ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=bunny.acme
time="2024-06-19T20:20:20Z" level=info msg="I have to go..."
time="2024-06-19T20:20:20Z" level=info msg="Stopping server gracefully"
time="2024-06-19T20:20:20Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:20:20Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:20:20Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2024-06-19T20:20:20Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2024-06-19T20:20:20Z" level=info msg="Server stopped"
time="2024-06-19T20:20:20Z" level=info msg="Shutting down"
time="2024-06-19T21:09:21Z" level=info msg="Traefik version 2.10.7 built on 2023-12-06T15:54:59Z"
time="2024-06-19T21:09:21Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-06-19T21:09:21Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-06-19T21:09:21Z" level=info msg="Starting provider *file.Provider"
time="2024-06-19T21:09:21Z" level=info msg="Starting provider *traefik.Provider"
time="2024-06-19T21:09:21Z" level=info msg="Starting provider *docker.Provider"
time="2024-06-19T21:09:21Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-06-19T21:09:21Z" level=info msg="Starting provider *acme.Provider"
time="2024-06-19T21:09:21Z" level=info msg="Testing certificate renew..." providerName=bunny.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2024-06-19T21:09:21Z" level=error msg="middleware \"crowdsec-bouncer@file\" does not exist" routerName=http-to-https@internal entryPointName=http
time="2024-06-19T21:09:21Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T21:09:21Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T21:09:21Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T21:09:21Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T21:09:23Z" level=error msg="entryPoint \"idrac\" doesn't exist" entryPointName=idrac routerName=idrac-console@file
time="2024-06-19T21:09:23Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T21:09:23Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T21:09:23Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T21:09:32Z" level=error msg="Unable to obtain ACME certificate for domains \"yourdomain.net,*.yourdomain.net\"" providerName=bunny.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=traefik-secure@docker rule="Host(`traefik.yourdomain.net`)" error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:35344->127.0.0.11:53: i/o timeout"
time="2024-06-19T21:09:54Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T21:09:54Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T21:09:54Z" level=error msg="entryPoint \"idrac\" doesn't exist" routerName=idrac-console@file entryPointName=idrac
time="2024-06-19T21:09:54Z" level=error msg="no valid entryPoint for this router" routerName=idrac-console@file
time="2024-06-19T21:10:04Z" level=error msg="Unable to obtain ACME certificate for domains \"yourdomain.net,*.yourdomain.net\"" error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:34412->127.0.0.11:53: i/o timeout" providerName=bunny.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=traefik-secure@docker rule="Host(`traefik.yourdomain.net`)"

So i tried your docker compose file what did you suggested before and this is result:

docker-compose.yml

version: '3.9'

services:
  traefik:
    image: traefik:v3.0
    ports:
      - 80:80
      - 443:443
    networks:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/ubuntu/docker/traefik/letsencrypt:/letsencrypt
      - /home/ubuntu/docker/traefik/logs:/var/log
    environment:
      - BUNNY_API_KEY=BUNNY_API_KEY_WHAT_I_HAVE
    command:
      - --api.dashboard=true
      - --log.level=DEBUG
      - --log.filepath=/var/log/traefik.log
      - --accesslog=true
      - --accesslog.filepath=/var/log/traefik-access.log
      - --providers.docker.network=proxy
      - --providers.docker.exposedByDefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entryPoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.websecure.address=:443
      # remove next line when using Traefik v2
      - --entrypoints.websecure.asDefault=true 
      - --entrypoints.websecure.http.tls.certresolver=bunny
      - --certificatesresolvers.bunny.acme.email=myownmail@myowndomain.com
      - --certificatesresolvers.bunny.acme.tlschallenge=true
      - --certificatesresolvers.bunny.acme.storage=/letsencrypt/acme.json
    labels:
      - traefik.enable=true
      - traefik.http.routers.mydashboard.rule=Host(`traefik.myowndomain.com`)
      - traefik.http.routers.mydashboard.service=api@internal
      - traefik.http.routers.mydashboard.middlewares=myauth
      - traefik.http.middlewares.myauth.basicauth.users=user:blablablabla/

  whoami:
    image: traefik/whoami:v1.8
    networks:
      - proxy
    labels:
      - traefik.enable=true
      - traefik.http.routers.mywhoami.rule=Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)
      - traefik.http.services.mywhoami.loadbalancer.server.port=80

      - traefik.http.middlewares.mywwwredirect.redirectregex.regex=^https://www\.(.*)
      - traefik.http.middlewares.mywwwredirect.redirectregex.replacement=https://$${1}
      - traefik.http.routers.mywhoami.middlewares=mywwwredirect

networks:
  proxy:
    name: proxy

volumes:
  letsencrypt:
    name: letsencrypt

But it still doesn't work, this is a protocol that can't get acme from the resolver:

2024-06-20T01:46:22Z INF github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:73 > Starting provider aggregator aggregator.ProviderAggregator
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:220 > Starting TCP Server entryPointName=web
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:220 > Starting TCP Server entryPointName=websecure
2024-06-20T01:46:22Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *traefik.Provider
2024-06-20T01:46:22Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *docker.Provider
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *docker.Provider provider configuration config={"defaultRule":"Host(`{{ normalize .Name }}`)","endpoint":"unix:///var/run/docker.sock","network":"proxy","watch":true}
2024-06-20T01:46:22Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *acme.ChallengeTLSALPN
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *traefik.Provider provider configuration config={}
2024-06-20T01:46:22Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *acme.Provider
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *acme.ChallengeTLSALPN provider configuration config={}
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *acme.Provider provider configuration config={"HTTPChallengeProvider":{},"ResolverName":"bunny","TLSChallengeProvider":{},"caServer":"https://acme-v02.api.letsencrypt.org/directory","certificatesDuration":2160,"email":"user@myowndoemain.com","keyType":"RSA4096","storage":"/letsencrypt/acm.json","store":{},"tlsChallenge":{}}
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:213 > Attempt to renew certificates "720h0m0s" before expiry and check every "24h0m0s" acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme
2024-06-20T01:46:22Z INF github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:795 > Testing certificate renew... acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:227 > Configuration received config={"http":{"middlewares":{"redirect-web-to-websecure":{"redirectScheme":{"permanent":true,"port":"443","scheme":"https"}}},"models":{"websecure":{"tls":{"certResolver":"bunny"}}},"routers":{"web-to-websecure":{"entryPoints":["web"],"middlewares":["redirect-web-to-websecure"],"priority":9223372036854775806,"rule":"HostRegexp(`^.+$`)","ruleSyntax":"v3","service":"noop@internal"}},"serversTransports":{"default":{"maxIdleConnsPerHost":200}},"services":{"api":{},"dashboard":{},"noop":{}}},"tcp":{"serversTransports":{"default":{"dialKeepAlive":"15s","dialTimeout":"30s"}}},"tls":{},"udp":{}} providerName=internal
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:227 > Configuration received config={"http":{},"tcp":{},"tls":{},"udp":{}} providerName=bunny.acme
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/docker/pdocker.go:89 > Provider connection established with docker 25.0.2 (API 1.44) providerName=docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:227 > Configuration received config={"http":{"middlewares":{"myauth":{"basicAuth":{"users":["user:blablablabla"]}},"mywwwredirect":{"redirectRegex":{"regex":"^https://www\\.(.*)","replacement":"https://${1}"}}},"routers":{"mydashboard":{"middlewares":["myauth"],"rule":"Host(`traefik.myowndomain.com`)","service":"api@internal"},"mywhoami":{"middlewares":["mywwwredirect"],"rule":"Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)","service":"mywhoami"}},"services":{"mywhoami":{"loadBalancer":{"passHostHeader":true,"responseForwarding":{"flushInterval":"100ms"},"servers":[{"url":"http://172.17.0.2:80"}]}},"traefik-traefik":{"loadBalancer":{"passHostHeader":true,"responseForwarding":{"flushInterval":"100ms"},"servers":[{"url":"http://172.17.0.3:80"}]}}}},"tcp":{},"tls":{},"udp":{}} providerName=docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/tls/tlsmanager.go:321 > No default certificate, fallback to the internal generated certificate tlsStoreName=default
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_scheme.go:29 > Creating middleware entryPointName=web middlewareName=redirect-web-to-websecure@internal middlewareType=RedirectScheme routerName=web-to-websecure@internal
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_scheme.go:30 > Setting up redirection to https 443 entryPointName=web middlewareName=redirect-web-to-websecure@internal middlewareType=RedirectScheme routerName=web-to-websecure@internal
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:22 > Creating middleware entryPointName=web middlewareName=traefik-internal-recovery middlewareType=Recovery
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/aggregator.go:51 > No entryPoint defined for this router, using the default one(s) instead entryPointName=["websecure"] routerName=mydashboard
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/aggregator.go:51 > No entryPoint defined for this router, using the default one(s) instead entryPointName=["websecure"] routerName=mywhoami
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/tls/tlsmanager.go:321 > No default certificate, fallback to the internal generated certificate tlsStoreName=default
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_scheme.go:29 > Creating middleware entryPointName=web middlewareName=redirect-web-to-websecure@internal middlewareType=RedirectScheme routerName=web-to-websecure@internal
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_scheme.go:30 > Setting up redirection to https 443 entryPointName=web middlewareName=redirect-web-to-websecure@internal middlewareType=RedirectScheme routerName=web-to-websecure@internal
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:22 > Creating middleware entryPointName=web middlewareName=traefik-internal-recovery middlewareType=Recovery
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/auth/basic_auth.go:33 > Creating middleware entryPointName=websecure middlewareName=myauth@docker middlewareType=BasicAuth routerName=mydashboard@docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=myauth@docker routerName=mydashboard@docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:259 > Creating load-balancer entryPointName=websecure routerName=mywhoami@docker serviceName=mywhoami@docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:301 > Creating server entryPointName=websecure routerName=mywhoami@docker serverName=8f04b357cf450275 serviceName=mywhoami@docker target=http://172.17.0.2:80
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_regex.go:17 > Creating middleware entryPointName=websecure middlewareName=mywwwredirect@docker middlewareType=RedirectRegex routerName=mywhoami@docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/redirect/redirect_regex.go:18 > Setting up redirection from ^https://www\.(.*) to https://${1} entryPointName=websecure middlewareName=mywwwredirect@docker middlewareType=RedirectRegex routerName=mywhoami@docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=mywwwredirect@docker routerName=mywhoami@docker
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:22 > Creating middleware entryPointName=websecure middlewareName=traefik-internal-recovery middlewareType=Recovery
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/router/tcp/manager.go:237 > Adding route for traefik.myowndomain.com with TLS options default entryPointName=websecure
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/router/tcp/manager.go:237 > Adding route for whoami.myowndomain.com with TLS options default entryPointName=websecure
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/server/router/tcp/manager.go:237 > Adding route for www.whoami.myowndomain.com with TLS options default entryPointName=websecure
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:384 > Trying to challenge certificate for domain [traefik.myowndomain.com] found in HostSNI rule ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme routerName=mydashboard@docker rule=Host(`traefik.myowndomain.com`)
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:851 > Looking for provided certificate(s) to validate ["traefik.myowndomain.com"]... ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme routerName=mydashboard@docker rule=Host(`traefik.myowndomain.com`)
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:897 > Domains need ACME certificates generation for domains "traefik.myowndomain.com". ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory domains=["traefik.myowndomain.com"] providerName=bunny.acme routerName=mydashboard@docker rule=Host(`traefik.myowndomain.com`)
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:384 > Trying to challenge certificate for domain [whoami.myowndomain.com www.whoami.myowndomain.com] found in HostSNI rule ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme routerName=mywhoami@docker rule="Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)"
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:619 > Loading ACME certificates [traefik.myowndomain.com]... ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme routerName=mydashboard@docker rule=Host(`traefik.myowndomain.com`)
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:851 > Looking for provided certificate(s) to validate ["whoami.myowndomain.com" "www.whoami.myowndomain.com"]... ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme routerName=mywhoami@docker rule="Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)"
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:897 > Domains need ACME certificates generation for domains "whoami.myowndomain.com,www.whoami.myowndomain.com". ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory domains=["whoami.myowndomain.com","www.whoami.myowndomain.com"] providerName=bunny.acme routerName=mywhoami@docker rule="Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)"
2024-06-20T01:46:22Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:619 > Loading ACME certificates [whoami.myowndomain.com www.whoami.myowndomain.com]... ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme routerName=mywhoami@docker rule="Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)"
2024-06-20T01:46:24Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:251 > Building ACME client... providerName=bunny.acme
2024-06-20T01:46:24Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:257 > https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme
2024-06-20T01:46:34Z ERR github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:396 > Unable to obtain ACME certificate for domains error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:51745->127.0.0.11:53: i/o timeout" ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory domains=["traefik.myowndomain.com"] providerName=bunny.acme routerName=mydashboard@docker rule=Host(`traefik.myowndomain.com`)
2024-06-20T01:46:34Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:251 > Building ACME client... providerName=bunny.acme
2024-06-20T01:46:34Z DBG github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:257 > https://acme-v02.api.letsencrypt.org/directory providerName=bunny.acme
2024-06-20T01:46:44Z ERR github.com/traefik/traefik/v3/pkg/provider/acme/provider.go:396 > Unable to obtain ACME certificate for domains error="cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:35092->127.0.0.11:53: i/o timeout" ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory domains=["whoami.myowndomain.com","www.whoami.myowndomain.com"] providerName=bunny.acme routerName=mywhoami@docker rule="Host(`whoami.myowndomain.com`) || Host(`www.whoami.myowndomain.com`)"
2024-06-20T01:47:32Z INF github.com/traefik/traefik/v3/pkg/server/server.go:51 > I have to go...
2024-06-20T01:47:32Z INF github.com/traefik/traefik/v3/pkg/server/server.go:52 > Stopping server gracefully
2024-06-20T01:47:32Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:287 > Waiting 10s seconds before killing connections entryPointName=web
2024-06-20T01:47:32Z ERR github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:229 > error="accept tcp [::]:80: use of closed network connection" entryPointName=web
2024-06-20T01:47:32Z ERR github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:664 > Error while starting server error="accept tcp [::]:80: use of closed network connection" entryPointName=web
2024-06-20T01:47:32Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:145 > Entrypoint closed entryPointName=web
2024-06-20T01:47:32Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:287 > Waiting 10s seconds before killing connections entryPointName=websecure
2024-06-20T01:47:32Z ERR github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:229 > error="accept tcp [::]:443: use of closed network connection" entryPointName=websecure
2024-06-20T01:47:32Z ERR github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:305 > error="close tcp [::]:443: use of closed network connection" entryPointName=websecure
2024-06-20T01:47:32Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:145 > Entrypoint closed entryPointName=websecure
2024-06-20T01:47:32Z INF github.com/traefik/traefik/v3/pkg/server/server.go:76 > Server stopped
2024-06-20T01:47:32Z INF github.com/traefik/traefik/v3/cmd/traefik/traefik.go:162 > Shutting down

The tlsChallenge is fully independent of your DNS provider, you don’t need the env var.

All the used domains must point to the Traefik instance and port 443 must be enabled. You have www.traefik.example.com and traefik.example.com setup up correctly?