1. #1

    Registriert seit
    19.10.2022
    Beiträge
    4
    Thanked 1 Time in 1 Post

    Böse Traefik 404 not found

    Hi!
    Ich habe das Tutorial vom U-Labs Kanal mit Docker / Traefik und NGINX geschaut.
    Ich habe in meiner Umgebung 2 Ubuntu 22.0 Server mit Portainer im Swarm.
    Meine Domains laufen über Cloudflare (teils mit Proxy aktiviert)
    Mein sch*** A1 Modem kann leider nur pro Port eine Weiterleitung, daher kann ich HTTP/HTTPS nur an eine Node im Docker Swarm leiten.

    Ich hab Traefik genau wie im Video aufgesetzt (neuere Version gewählt) und das dann mit nginx probiert. Meine Domain zeigt auf meine IP zuhause und ist auch erreichbar. Ich bekomme immer "404 page not found", auch wenn ich den nginx Container richtig mit der Domain Rule verwende. Sieht für mich so aus als gäbe es ein internes routing Problem, wenn auch genau bei der Domain die im nginx Container definiert wurde, ein 404 kommt. Natürlich sind Traefik und Nginx im selben Netz. Ich bekomme jedoch wenn ich den Traefik Container Log aufmache Folgendes:
    "time="2022-10-19T21:00:33Z" level=info msg="Configuration loaded from flags."
    time="2022-10-19T21:01:03Z" level=error msg="Unable to obtain ACME certificate for domains "haggebuddi.com": unable to generate a certificate for the domains [haggebuddi.com]: error: one or more domains had a problem:\n[haggebuddi.com] acme: error: 400 :: urn:ietf:params:acme:error:tls :: 192.164.108.35: remote error: tls: internal error\n" ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
    "
    Liegt das daran, dass ich über Cloudflare für die Domain schon dauernd ein LetsEncrypt Zertifikat bekomme?

    Hat aber glaub ich nix damit zu tun, dass es nicht klappt.

    Hab jetzt testweise bei mir in AWS nochmal eine frische Ubuntu aufgesetzt mit nur Docker/Compose und dem Traefik und nginx Containern und geht direkt problemlos.

    Ich bin echt ratlos und würde mich über Hilfe freuen.
    Danke

    Ganzen Log (mit Debug Parametern)
    Code:
    Creating traefik_traefik_1 ... done
    Attaching to traefik_traefik_1
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Configuration loaded from flags."
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Traefik version 2.9.1 built on 2022-10-03T14:22:13Z"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Static configuration loaded {"global":{"checkNewVersion":true},"serversTransport":{"maxIdleConnsPerHost":200},"entryPoints":{"http":{"address":":80","transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s"}},"forwardedHeaders":{},"http":{"redirections":{"entryPoint":{"to":"https","scheme":"https","permanent":true,"priority":2147483646}}},"http2":{"maxConcurrentStreams":250},"udp":{"timeout":"3s"}},"https":{"address":":443","transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s"}},"forwardedHeaders":{},"http":{"tls":{"certResolver":"le"}},"http2":{"maxConcurrentStreams":250},"udp":{"timeout":"3s"}}},"providers":{"providersThrottleDuration":"2s","docker":{"watch":true,"endpoint":"unix:///var/run/docker.sock","defaultRule":"Host(`{{ normalize .Name }}`)","network":"traefik_web","swarmModeRefreshSeconds":"15s"}},"log":{"level":"DEBUG","format":"common"},"certificatesResolvers":{"le":{"acme":{"email":"markus3261@gmail.com","caServer":"https://acme-v02.api.letsencrypt.org/directory","storage":"/letsencrypt/acme.json","keyType":"RSA4096","certificatesDuration":2160,"tlsChallenge":{}}}}}"
    traefik_1  | time="2022-10-19T21:14:45Z" 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"
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Starting TCP Server" entryPointName=http
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *traefik.Provider"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="*traefik.Provider provider configuration: {}"
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *docker.Provider"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="*docker.Provider provider configuration: {"watch":true,"endpoint":"unix:///var/run/docker.sock","defaultRule":"Host(`{{ normalize .Name }}`)","network":"traefik_web","swarmModeRefreshSeconds":"15s"}"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Starting TCP Server" entryPointName=https
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="*acme.ChallengeTLSALPN provider configuration: {}"
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *acme.Provider"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="*acme.Provider provider configuration: {"email":"markus3261@gmail.com","caServer":"https://acme-v02.api.letsencrypt.org/directory","storage":"/letsencrypt/acme.json","keyType":"RSA4096","certificatesDuration":2160,"tlsChallenge":{},"ResolverName":"le","store":{},"TLSChallengeProvider":{},"HTTPChallengeProvider":{}}"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Attempt to renew certificates "720h0m0s" before expiry and check every "24h0m0s"" ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme
    traefik_1  | time="2022-10-19T21:14:45Z" level=info msg="Testing certificate renew..." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Configuration received: {"http":{"routers":{"http-to-https":{"entryPoints":["http"],"middlewares":["redirect-http-to-https"],"service":"noop@internal","rule":"HostRegexp(`{host:.+}`)","priority":2147483646}},"services":{"noop":{}},"middlewares":{"redirect-http-to-https":{"redirectScheme":{"scheme":"https","port":"443","permanent":true}}},"models":{"https":{"tls":{"certResolver":"le"}}},"serversTransports":{"default":{"maxIdleConnsPerHost":200}}},"tcp":{},"udp":{},"tls":{}}" providerName=internal
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Configuration received: {"http":{},"tcp":{},"udp":{},"tls":{}}" providerName=le.acme
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Provider connection established with docker 20.10.12 (API 1.41)" providerName=docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=traefik-traefik-4478996bdee3fbcd055f7b2d7145e1702e0d81c990b1aecccec2b318a2f62743
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=homepage-homepage-1-hm996siug5v746zgmwckz0jn4-41a68fe254a373900b0fa34bc6824dabe509fdeaaf3eef62262c37a3827c4f97
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=portainer-agent-a3dbse86l2x01hqfnftqxxk1l-978zopkx6sp2gkcvo0mn2dyco-946e560e82d1e39844b2f8ab0a878de358f112d1f529712dffcaaa35ef01761d
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=portainer-004747af55826e9543c33aeb277265cd3b9c5434f5a1434d37f645b9a7baad61
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Configuration received: {"http":{"routers":{"nginx":{"service":"nginx-nginx-demo","rule":"Host(`haggebuddi.com`)"}},"services":{"nginx-nginx-demo":{"loadBalancer":{"servers":[{"url":"http://172.26.0.3:80"}],"passHostHeader":true}}}},"tcp":{},"udp":{}}" providerName=docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware noop@internal" entryPointName=http routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Setting up redirection to https 443" routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme entryPointName=http
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Adding tracing to middleware" middlewareName=redirect-http-to-https@internal entryPointName=http routerName=http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareName=traefik-internal-recovery middlewareType=Recovery entryPointName=http
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [http https]" routerName=nginx
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware noop@internal" routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder entryPointName=http
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" entryPointName=http routerName=http-to-https@internal middlewareType=RedirectScheme middlewareName=redirect-http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Setting up redirection to https 443" entryPointName=http routerName=http-to-https@internal middlewareType=RedirectScheme middlewareName=redirect-http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Adding tracing to middleware" middlewareName=redirect-http-to-https@internal entryPointName=http routerName=http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining routerName=nginx@docker serviceName=nginx-nginx-demo entryPointName=http
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating load-balancer" serviceName=nginx-nginx-demo entryPointName=http routerName=nginx@docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serverName=0 serviceName=nginx-nginx-demo entryPointName=http routerName=nginx@docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="child http://172.26.0.3:80 now UP"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Propagating new UP status"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" entryPointName=http routerName=nginx@docker middlewareName=tracing middlewareType=TracingForwarder
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" entryPointName=http middlewareType=Recovery middlewareName=traefik-internal-recovery
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining entryPointName=https routerName=https-nginx@docker serviceName=nginx-nginx-demo
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating load-balancer" entryPointName=https routerName=https-nginx@docker serviceName=nginx-nginx-demo
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating server 0 http://172.26.0.3:80" entryPointName=https serverName=0 routerName=https-nginx@docker serviceName=nginx-nginx-demo
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="child http://172.26.0.3:80 now UP"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Propagating new UP status"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=https routerName=https-nginx@docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareType=Recovery entryPointName=https middlewareName=traefik-internal-recovery
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Adding route for haggebuddi.com with TLS options default" entryPointName=https
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Trying to challenge certificate for domain [haggebuddi.com] found in HostSNI rule" rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Looking for provided certificate(s) to validate ["haggebuddi.com"]..." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Domains ["haggebuddi.com"] need ACME certificates generation for domains "haggebuddi.com"." rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Loading ACME certificates [haggebuddi.com]..." routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="Building ACME client..." providerName=le.acme
    traefik_1  | time="2022-10-19T21:14:45Z" level=debug msg="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme
    traefik_1  | time="2022-10-19T21:14:46Z" level=debug msg="Using TLS Challenge provider." providerName=le.acme
    traefik_1  | time="2022-10-19T21:14:46Z" level=debug msg="legolog: [INFO] [haggebuddi.com] acme: Obtaining bundled SAN certificate"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="legolog: [INFO] [haggebuddi.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/166451089416"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="legolog: [INFO] [haggebuddi.com] acme: use tls-alpn-01 solver"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="legolog: [INFO] [haggebuddi.com] acme: Trying to solve TLS-ALPN-01"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="TLS Challenge Present temp certificate for haggebuddi.com" providerName=tlsalpn.acme
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Configuration received: {"http":{},"tcp":{},"udp":{},"tls":{}}" providerName=tlsalpn.acme
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [http https]" routerName=nginx
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Adding certificate for domain(s) acme challenge temp,haggebuddi.com"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" entryPointName=http routerName=nginx@docker serviceName=nginx-nginx-demo middlewareName=pipelining middlewareType=Pipelining
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating load-balancer" entryPointName=http routerName=nginx@docker serviceName=nginx-nginx-demo
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serverName=0 routerName=nginx@docker serviceName=nginx-nginx-demo entryPointName=http
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="child http://172.26.0.3:80 now UP"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Propagating new UP status"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=http routerName=nginx@docker
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Added outgoing tracing middleware noop@internal" routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder entryPointName=http
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Setting up redirection to https 443" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Adding tracing to middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" entryPointName=http middlewareName=traefik-internal-recovery middlewareType=Recovery
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining routerName=https-nginx@docker serviceName=nginx-nginx-demo entryPointName=https
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating load-balancer" serviceName=nginx-nginx-demo entryPointName=https routerName=https-nginx@docker
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serverName=0 entryPointName=https routerName=https-nginx@docker serviceName=nginx-nginx-demo
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="child http://172.26.0.3:80 now UP"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Propagating new UP status"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder routerName=https-nginx@docker entryPointName=https
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" middlewareType=Recovery entryPointName=https middlewareName=traefik-internal-recovery
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Adding route for haggebuddi.com with TLS options default" entryPointName=https
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Trying to challenge certificate for domain [haggebuddi.com] found in HostSNI rule" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="Looking for provided certificate(s) to validate ["haggebuddi.com"]..." routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
    traefik_1  | time="2022-10-19T21:14:47Z" level=debug msg="No ACME certificate generation required for domains ["haggebuddi.com"]." routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="TLS Challenge CleanUp temp certificate for haggebuddi.com" providerName=tlsalpn.acme
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Configuration received: {"http":{},"tcp":{},"udp":{},"tls":{}}" providerName=tlsalpn.acme
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [http https]" routerName=nginx
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Added outgoing tracing middleware noop@internal" routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder entryPointName=http
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" middlewareType=RedirectScheme entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Setting up redirection to https 443" middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme entryPointName=http routerName=http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Adding tracing to middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" entryPointName=http serviceName=nginx-nginx-demo middlewareName=pipelining middlewareType=Pipelining routerName=nginx@docker
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating load-balancer" serviceName=nginx-nginx-demo routerName=nginx@docker entryPointName=http
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating server 0 http://172.26.0.3:80" entryPointName=http serviceName=nginx-nginx-demo serverName=0 routerName=nginx@docker
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="child http://172.26.0.3:80 now UP"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Propagating new UP status"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=http routerName=nginx@docker
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" entryPointName=http middlewareName=traefik-internal-recovery middlewareType=Recovery
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining routerName=https-nginx@docker serviceName=nginx-nginx-demo entryPointName=https
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating load-balancer" routerName=https-nginx@docker serviceName=nginx-nginx-demo entryPointName=https
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serviceName=nginx-nginx-demo entryPointName=https routerName=https-nginx@docker serverName=0
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="child http://172.26.0.3:80 now UP"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Propagating new UP status"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=https routerName=https-nginx@docker
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" entryPointName=https middlewareName=traefik-internal-recovery middlewareType=Recovery
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Adding route for haggebuddi.com with TLS options default" entryPointName=https
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Trying to challenge certificate for domain [haggebuddi.com] found in HostSNI rule" ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="Looking for provided certificate(s) to validate ["haggebuddi.com"]..." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="No ACME certificate generation required for domains ["haggebuddi.com"]." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
    traefik_1  | time="2022-10-19T21:14:52Z" level=debug msg="legolog: [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/166451089416"
    traefik_1  | time="2022-10-19T21:14:52Z" level=error msg="Unable to obtain ACME certificate for domains "haggebuddi.com": unable to generate a certificate for the domains [haggebuddi.com]: error: one or more domains had a problem:\n[haggebuddi.com] acme: error: 400 :: urn:ietf:params:acme:error:tls :: 192.164.108.35: remote error: tls: internal error\n" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
    Mit freundlichen Grüßen,
    Markus
    Geändert von DMW007 (20.10.2022 um 13:18 Uhr) Grund: Lesbarkeit verbessert/Code-Formatierung

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Traefik 404 not found

    Hi & Willkommen!
    Let's Encrypt braucht funktionierendes DNS, den Fehler wird wohl Cloudflare als Mittelsmann verursachen. Wenn das Zertifikat nicht erstellt wird, dann ist die Verbindung von Cloudflare zu dir wohl unverschlüsselt oder zumindest wird das Zertifikat nicht validiert. Allerdings sieht es gar nicht danach aus, als ob da auch noch Cloudflare dazwischen ist. Zumindest zeigt die IP-Adresse auf Telekom Österreich, was zu "A1" beim Modem passt:
    Code:
    $ host $(dig +short haggebuddi.com)
    35.108.164.192.in-addr.arpa domain name pointer 192-164-108-35.hdsl.highway.telekom.at.
    Prüfe mal bitte, ob Cloudflare wirklich komplett raus aus der Sache ist, dann können die als Fehlerquelle ausgeschlossen werden. Wenn das drin gewesen wäre, dann hätte ich vermutet, 2/3 Problemen liegen an den. Und ergänze/poste die Konfigurationsdateien von Traefik sowie deinem Nginx-Container, der da testweise drauf läuft. Im Debug-Log wird eine Weiterleitung von HTTP auf HTTPS erwähnt, die ich im Artikel auch eingebaut habe. Die scheint aber nicht zu greifen:
    Code:
    $ curl -I http://haggebuddi.com
    HTTP/1.1 404 Not Found
    ...
    Wenn die Weiterleitung aktiv ist, sollte er da gar nichts ausliefern, sondern nur umleiten:
    Code:
    $ curl -I http://u-labs.de
    HTTP/1.1 308 Permanent Redirect
    Location: https://u-labs.de/
    Ich bin mir aus dem Kopf nicht 100 % sicher, ob Traefik mit dem Standard-Zertifikat korrekt anhand der Regeln ausliefert. Wahrscheinlich schon, das müsste zur Sicherheit noch mal reproduziert werden.

    Zitat Zitat von BuddiHagge Beitrag anzeigen
    Mein sch*** A1 Modem kann leider nur pro Port eine Weiterleitung, daher kann ich HTTP/HTTPS nur an eine Node im Docker Swarm leiten.
    Das hat wenig mit einem schlechten Gerät zu tun. Dafür brauchst du einen Load Balancer, der den Datenverkehr auf die Server verteilt. Zu den Grundlagen habe ich hier schon mal einen Artikel gemacht. Ein LB ist in Routern üblicherweise nicht integriert, zumindest nicht in normalen Endverbraucher-Geräten. Könnte man mit freien Systemen wie OpenWRT auch den Router machen lassen. Dann braucht es allerdings ein unterstütztes Gerät, das zudem auch etwas Leistung besitzt, sodass man da zusätzlich einen LB drauf betreiben kann. Muss nicht die Welt sein, vor allem mit wenig Datenverkehr. Aber halt so viel Luft, dass der nicht mit seinen Kernaufgaben schon überlastet ist.

    Hier sollte man sich dann auch Gedanken machen, wo die TLS-Terminierung erfolgen soll. Ist prinzipiell auf oder nach dem LB möglich. Auf zentralisiert es, dann muss der Layer 7 sein, braucht ein wenig mehr Leistung und das Protokoll (oder die Protokolle) beherrschen, dafür ist der Weg danach im Heimnetzwerk unverschlüsselt. Level 4 lässt es auf dem Docker-Server, der LB leitet die Pakete stumpf weiter und schaut nicht rein, d.H. die Transportverschlüsselung ist komplett Ende-zu-Ende Verschlüsselt bis zum Zielserver.

    Falls Ausfallsicherheit auch gewünscht ist, die an der Stelle nicht vergessen. Wobei es das komplexer macht und es privat in den meisten Fällen überzogen sein dürfte, außer es geht mehr ums Lernen als um die produktive Nutzung.

    Für die Fehlersuche ist es sogar sinnvoll, alles auf einem Server zu haben. Cluster machen so was deutlich komplizierter, da braucht es dann Konfiguration auf dem LB, um z.B. per Header auf einer bestimmten Maschine zu landen. Selbst so was kann allerdings auch eine Fehlerquelle sein.


  3. #3

    Registriert seit
    19.10.2022
    Beiträge
    4
    Thanked 1 Time in 1 Post

    Standard AW: Traefik 404 not found

    Hi, danke für die Antwort.

    Also Cloudflare ist dazwischen, bei dem Test war dann aber Proxy deaktiviert, also direkt über meine IP.
    Als ich das in AWS gestern probiert hab, ging das auch problemlos über Cloudflare, jedoch als Proxy aktiviert war, kam immer im Browser, dass es mehr als 20 Weiterleitungen gab, wohl irgendeine Loop. Als ich Proxy bei Cloudflare deaktiviert hab, ging es. Verbindung zu Traefik war dann per HTTPS, aber ein Certfehler kam, da nur das default Traefik Cert angezeigt wird, dem aber nicht vertraut wird.
    Cloudflare hat bei mir glaub ich HTTP -> HTTPS redirect wenn ich mich nicht täusche.

    Ich schick dann am Abend nach der Arbeit die Compose Datei.

    Danke für die Erklärung unten, sobald mein neuer Glasfaseranschluss zuhause angeschlossen wird (hoffentlich bald) werd ich eh eine FortiGate dazwischenstellen.

  4. #4

    Registriert seit
    19.10.2022
    Beiträge
    4
    Thanked 1 Time in 1 Post

    Standard AW: Traefik 404 not found

    So, hier mal die Docker-Compose für Traefik:

    Code:
    services:
      traefik:
        image: traefik:v2.9.1
        restart: always
        command:
          # Experimentell, um das Dashboard ohne Zugriffsschutz aufzurufen
          #- "--api.insecure=true"
          - "--providers.docker"
          - "--providers.docker.exposedByDefault=false"
          - "--log.level=DEBUG"
          - "--providers.docker.network=traefik_web"
          - "--entrypoints.http.address=:80"
          - "--entrypoints.http.http.redirections.entrypoint.to=https"
          - "--entrypoints.http.http.redirections.entrypoint.scheme=https"
          - "--entrypoints.https.address=:443"
          # Vermeidet, dass wir den resolver in jedem container mit "traefik.http.routers.https.tls.certresolver=>
          - "--entrypoints.https.http.tls.certResolver=le"
          - "--certificatesresolvers.le.acme.tlschallenge=true"
          - "--certificatesresolvers.le.acme.email=markus3261@gmail.com"
          - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
        ports:
          - "80:80"
          - "443:443"
          - "8888:8888"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - ./letsencrypt:/letsencrypt
        networks:
          - web
    
    networks:
      web:
        name: traefik_web
    Die Test Docker-Compose für NGINX:
    Code:
    services:
      nginx:
        image: nginx:1.20
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.nginx.rule=Host(`haggebuddi.com`)"
        networks:
          - traefik_web
    
    networks:
      traefik_web:
        external: true
    Cloudflare hat ein Wildcard Cert hinterlegt und HTTP->HTTPS redirect.
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Bildschirm*foto 2022-10-20 um 17.49.00.jpg 
Hits:	45 
Größe:	317,0 KB 
ID:	9448
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Bildschirm*foto 2022-10-20 um 17.49.19.jpg 
Hits:	46 
Größe:	280,6 KB 
ID:	9449
    Geändert von BuddiHagge (20.10.2022 um 17:49 Uhr)

  5. #5
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Traefik 404 not found

    Deine docker-compose.yml sieht gut aus. Ich habe sie mal in einen CODE Block gepackt, das ist besser als die Formatierung über eine Schrift - durch die Schrift sah es aus, als wären an manchen Stellen Leerzeichen, wo keine hin gehören. Zweiter Vorteil vom Codeblock: BBCode wird nicht geparst - macht gerade Portangaben lesbarer, wenn die nicht durch einen Smiley ersetzt werden

    Aber nachdem der Docker-Teil funktioniert, hast du im Grunde das Problem ja wohl schon selbst gefunden: Cloudflare. Was du da konkret einstellen musst, kann ich dir nicht sagen - die halte ich von meinen Projekten so weit wie es geht fern. Wenn du das davor betreiben und den Fehler eingrenzen willst, bleibt dir bei so proprietären Clouddiensten wohl nur eine Wahl: Reverse Engineering. Setze z.B. einen ganz einfachen Webserver direkt auf Port 80/443 (ohne Traefik davor) auf, der auf jedem Hostname lauscht, schalte für die Dauer des Tests (!) die Zertifikatsvalidierung ab und konfiguriere den Webserver so, dass er dir möglichst viele Infos ins AccessLog schreibt. Oder falls das nicht reicht, lege auf dem ein PHP-Skript (ggf. mit ReWrite Regel, die alles dort drauf leitet) an, dass alle Header ausgibt. Bei PHP reicht schon so was:
    PHP-Code:
    <?php var_dump($_SERVER);
    Kann natürlich auch was anderes sein, Hauptsache du siehst, was ankommt. Anschließend rufst du das auf und siehst, was dir der Reverse Proxy von Cloudflare für Anfragen/Header liefert. Müsste ich raten würde ich darauf tippen, dass die keinen X-Forwarded-Proto setzen bzw. nicht richtig, oder so was in der Art. Das kann v.a. dann passieren, wenn die nur HTTP zum Backend machen. Dann denkt Traefik, er muss umleiten, was durch Cloudflare davor niemals zielführend sein kann (in diesem Beispiel-Szenario). Aber das weiß man bei solchen Black Boxen halt nie, du kannst ja nicht in deren Serverkonfiguration schauen. Vielleicht passt sogar der Host-Header den die setzen nicht, wer weiß. Mit den Headern die bei deinem Server ankommen bekommst du jedenfalls wahrscheinlich einen Hinweis auf das Problem und kannst dann entweder deinen Traefik so umkonfigurieren, dass er mit Cloudflare kompatibel ist. Oder du weißt, wonach du bei Cloudflare anfangen kannst zu suchen. Je nachdem, um was für ein Problem es sich handelt und was man dort einstellen kann.


  6. #6

    Registriert seit
    19.10.2022
    Beiträge
    4
    Thanked 1 Time in 1 Post

    Standard AW: Traefik 404 not found

    Danke soweit mal für die Erklärungen.
    Meine Frage nun, ich hab das ja gestern auch 1:1 so über Cloudflare und AWS getestet, das ging a problemlos sofern die Proxy Funktion abgeschaltet war.
    Wenn Cloudflare da jetzt schuld ist, dürfte es ja über AWS auch nicht gehen?

    Der einzige wirkliche Unterschied der mir einfällt, dass ich in der AWS nur eine Docker Node hatte und Zuhause jetzt 2 im Swarm Cluster, wird aber nur auf einer Node ausgerollt.

    - - - Aktualisiert - - -

    Update: hab gerade herumprobiert, eine andere Domain genommen, HTTPS redirect abgedreht, am Anfang nix gebracht.
    Dann nochmal anstatt mit docker-compose zu deployen, im stack mode deployed, und aufeinmal, siehe da, NGINX taucht auf.
    Jetzt muss ich nurnoch austesten was es genau war.
    Hat aber nur das default Traefik Cert jetzt, sollte ja eigentlich von Let's Encrypt in der Config sein, oder?
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Bildschirm*foto 2022-10-20 um 20.31.34.jpg 
Hits:	54 
Größe:	116,7 KB 
ID:	9450


    Hab jetzt die mit code erstellten Stacks gelöscht und wegen der besseren Übersicht in Portainer angelegt, funktioniert aufeinmal nichtmehr NGINX zu erreichen.
    Im Log von NGINX seh ich meinen Aufruf, aber wird komischerweise resetted anscheinend.
    "time="2022-10-20T19:11:50Z" level=debug msg="http: TLS handshake error from 10.0.0.2:27156: read tcp 10.0.0.46:443->10.0.0.2:27156: read: connection reset by peer"
    "

    Ich glaub irgendwas stimmt intern noch nicht, bei mir im Netz bekomm ich am Laptop 404, wenn ich am Handy im Netz daheim bin bekomm ich auch 404 und wenn ich mit Mobile Daten bin, komm ich auf die Seite
    Geändert von BuddiHagge (20.10.2022 um 21:37 Uhr)

  7. The Following User Says Thank You to BuddiHagge For This Useful Post:

    DMW007 (20.10.2022)

  8. #7
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Traefik 404 not found

    Ich denke, wir haben da wohl ein bisschen aneinander vorbei geredet, weil es ja zwischenzeitlich zwei Probleme gibt (bzw. gab):

    1. Die bei dir gehosteten Instanzen
    2. Die Cloudinstanzen (so wie ich das nun herauslese, nur zum Gegentesten)

    Bei #2 führen Probleme mit der Weiterleitung durch Cloudflare zu einer Endlosschleife. #1 ist ein anderes Thema, wenn Cloudflare da wirklich nichts mehr macht, liegt die Ursache hier wohl woanders. Lässt sich gegentesten, in dem man statt des DNS-Names direkt die IP-Adresse nutzt. Mit curl kann der Schalter -H HTTP-Header senden, du kannst also den Host-Header auf deine Domain setzen. Ansonsten greift die vHost-Regel auf die Domain von Traefik nicht. Damit lassen sich verschiedene Fehlerquellen ausschließen, auch eine Anfrage direkt an den Container ist möglich, falls man ein Problem im Reverse Proxy (Traefik hier) vermutet. In deinem Falle kannst du damit versuchen einzugrenzen, ob und was an dieser Stelle innerhalb deines Netzes anders ist, als von außen.

    Dass es unter Docker Swarm spezielle Eigenheiten gibt ist möglich, damit kenne ich mich wenig aus. Für Cluster setze ich auf Kubernetes. Laut Traefik Dokumentation ist der Docker-Provider grundsätzlich auch für Swarm geeignet, allerdings werden hier ein paar Besonderheiten erwähnt, eventuell hilft dir das weiter. Teils nur für bestimmte Versionen relevant, die ehemalige V3 Spezifikation hatte ja hauptsächlich Änderungen für Swarm und war für das normale Compose ohne Swarm kaum relevant (teils sogar von Nachteil, da bestimmte Dinge wie z.B. Ressourcenlimits weggefallen sind).

    Zitat Zitat von BuddiHagge Beitrag anzeigen
    Hat aber nur das default Traefik Cert jetzt, sollte ja eigentlich von Let's Encrypt in der Config sein, oder?
    Laut Konfiguration ja (zumindest beim direkten Zugriff). Da musst du nun schauen, warum die ACME LE-Integration kein Zertifikat generieren kann. Liegt vermutlich entweder an der fehlenden Erreichbarkeit von außen (LE validiert die Domain, bevor Zertifikate ausgestellt werden). Bedenke, dass gerade wenn du DNS-Änderungen durchführst (z.B. per Cloudflare, aber natürlich auch durch z.B. Re-Connects, falls du da einen neue IP bekommst), die Zeitversetzt repliziert werden. Es kann also sein, dass LE beim Prüfen noch ältere Einträge im Cache hat (bzw. aus dem Cache eines anderen DNS-Servers bekommt) und daher die Validierung nicht funktioniert. Meistens siehst du näheres dazu im Log. Das kann übrigens auch die Ursache sein, warum das bei dir nur extern per Internet geht. Je nachdem was da für DNS-Server genutzt werden, ist der eine möglicherweise schneller als der andere. Abhängig von der Netzstruktur kommen evtl. noch lokale Caches wie z.B. ein PiHole dazu, der für zusätzliches Caching im Heimnetz sorgen kann.

    Mit LE generell am besten nicht zu viel am DNS drehen. Wenn es sich nicht vermeiden lässt, kann es sinnvoll sein, nach Änderungen zumindest ein paar Stunden (oder noch besser bis zum nächsten Tag) zu warten und so lange die Domain aus Traefik raus zunehmen. Sonst versucht der im Hintergrund zig mal erfolglos ein Zertifikat zu bekommen. Damit stößt man unter Umständen gegen Limits vom LE und ist dann erst mal eine Zeit lang komplett von der Zertifikatsvergabe gesperrt. Spätestens dann kommt man um eine Zwangspause nicht herum, das wird aber für gewöhnlich in den Logs vermerkt. Die meisten Limits sind zwar mittlerweile recht Großzügig und sollten selten ein Problem sein. Jedoch gerade bei der Validierung sind es nur 5 fehlerhafte Versuche pro Konto, Hostname und Stunde - das kann beim ausprobieren schnell erreicht sein.


Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 25.03.2024, 00:57
  2. CentOS: GLIBC not found - Teamspeak3 Musikbot
    Von Devon im Forum Server-Administration
    Antworten: 1
    Letzter Beitrag: 15.04.2014, 14:44
  3. bash: lsb_release: command not found
    Von TomatenKetchup im Forum Server-Administration
    Antworten: 2
    Letzter Beitrag: 24.12.2013, 19:27
  4. Aktuelle Fehlermeldungen bei Knuddels-Seiten 404 - Not Found
    Von Scanner im Forum Knuddels Allgemein
    Antworten: 3
    Letzter Beitrag: 24.05.2011, 23:00

Stichworte

Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.