Traefik leitet nicht zu https weiter

Traefik leitet nicht zu https weiter

Ich versuche, einen Heimautomatisierungsserver mit Docker, Letsencrypt und Traefik einzurichten. Außerdem verwende ich DuckDNS für DDNs. Ich habe einige andere Container wie Sickrage und so weiter auf derselben Maschine.

Ich habe die Ports 80 und 443 auf dem Router geöffnet und an meinen Ubuntu 18.04-Server weitergeleitet. Wenn ich versuche, über http eine Verbindung zu sickrage.myserver.duckdns.org herzustellen, erhalte ich die folgende Fehlermeldung:

**Your connection is not private**
Attackers might be trying to steal your information from sabnzbd.myserver.duckdns.org 
NET::ERR_CERT_AUTHORITY_INVALID

Hier ist meine traefik.toml-Datei:

    logLevel = "WARN" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
defaultEntryPoints = ["http", "https"]

# WEB interface of Traefik - it will show web page with overview of frontend and backend configurations 
[api]
  entryPoint = "traefik"
  dashboard = true
  address = ":8080"

# Force HTTPS
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
     entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

[retry]


[file]
  watch = true
  filename = "${USERDIR}/docker/traefik/rules.toml"

# Let's encrypt configura
[acme]
caServer = "https://acme-v02.api.letsencrypt.org/directory"
email = "[email protected]"     #any email id will work
storage="${USERDIR}/docker/traefik/acme/acme.json"
entryPoint = "https"
acmeLogging=true 
onDemand = false #create certificate when container is created
onHostRule = true
  # Use a HTTP-01 acme challenge rather than TLS-SNI-01 challenge
  # uncomment 2 lines for subdirs
#[acme.httpChallenge]
[acme.dnsChallenge]
provider = "duckdns"
entryPoint = "https"
  # uncomment follwoing for suubsomains
#[[acme.domains]]
  #main = "myserver.duckdns.org"
#[[acme.domains]]
  #main = "*.myserver.duckdns.org"
#[acme.dnsChallenge]
  #provider = "duckdns"
  #delayBeforeCheck = 0

# Connection to docker host system (docker.sock)
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "myserver.duckdns.org"
watch = true
# This will hide all docker containers that don't have explicitly  
# set label to "enable"
exposedbydefault = false

Und Teile meiner Docker-Compose-Datei:

    ---
version: "3.6"
services:
  #############################################   Frontends               ############################
  #############################################   Traefik - Reverse proxy  ###########################
  traefik:
    hostname: traefik
    image: traefik:latest
    container_name: traefik
    restart: always
    domainname: ${DOMAINNAME} 
    command: --api --docker --docker.domain=${DOMAINNAME} --docker.watch --loglevel=DEBUG
    #command: --api --docker --docker.domain=docker.localhost --docker.watch --loglevel=DEBUG
    networks:
      - default
      - traefik_proxy
    depends_on:
      - duckdns
    environment:
      - TOKEN=${DUCKDNS_TOKEN}
    ports:
      - "80:80"
      - "443:443"
      - "8008:8080"
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
      - "traefik.port=8080"
      - "traefik.protocol=http"
        #- "traefik.frontend.auth.basic=patrick:$$2y$$05$$a8dtYfcMqH.kUFq3zZPGqe9kq7Tyok7.3/mKdMa1NaCuSwAZ0InOq"
        #- "traefik.frontend.rule=Host:${DOMAINNAME}; PathPrefixStrip: /traefik"
      - "traefik.frontend.rule=Host:traefik.${DOMAINNAME}"  
      - "traefik.docker.network=traefik_proxy"
      - "traefik.frontend.entryPoints=https"
      - "traefik.frontend.headers.SSLRedirect=true"
      - "traefik.frontend.headers.STSSeconds=315360000"
      - "traefik.frontend.headers.browserXSSFilter=true"
      - "traefik.frontend.headers.contentTypeNosniff=true"
      - "traefik.frontend.headers.forceSTSHeader=true"
      - "traefik.frontend.headers.SSLHost=dellubuntu.duckdns.org"
      - "traefik.frontend.headers.STSIncludeSubdomains=false"
      - "traefik.frontend.headers.STSPreload=true"
      - "traefik.frontend.headers.frameDeny=true"
        #- "traefik.frontend.auth.basic.users=${HTTP_USERNAME}:${HTTP_PASSWORD}"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${USERDIR}/docker/traefik/acme/acme.json:/acme.json
      - ${USERDIR}/docker/traefik/traefik.toml:/traefik.toml
      - ${USERDIR}/docker/letsencrypt/config/etc/letsencrypt:/le-ssl
      - ${USERDIR}/docker/traefik:/etc/traefik
      - ${USERDIR}/docker/shared:/shared
  #Letsencrypt                                                    ------------------------ Letsencrypt
  letsencrypt:
    image:  linuxserver/letsencrypt
    container_name: le
    #ports:
      #- "447:443"
    networks:
      - default
      - traefik_proxy
    volumes:
      - ${USERDIR}/docker/letsencrypt/config:/config
    restart: always
    depends_on:
      - portainer
      - heimdall
      - organizr2
      - lazylibrarian
      - plex
      - tautulli
      - headphones
        #- lidarr
      - couchpotato
        #- radarr
      - sickrage
        #- sonarr
        #- airsonic
      - glances
      - ghost
      - transmission-vpn
      - sabnzbd
      - huginn
      - netdata
        #- nextcloud
        #- hydra2
        #- nzbget
        #- jackett
        ##- duplicati
        ##- bazarr
        ##- homeassistant
        ##- filebrowser
        ##- ombi
        ##- elkarbackup
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - URL=${DOMAINNAME}
      - EMAIL=${EMAIL}
      - SUBDOMAINS=wildcard
      - VALIDATION=duckdns
      - DUCKDNSTOKEN=${DUCKDNS_TOKEN}
      - ONLY_SUBDOMAINS=false
      - DHLEVEL=4096

Die Beispiele, denen ich zu folgen versucht habe, enthalten den Letsencrypt-Container nicht. Soll ich ihn entfernen? Und wenn ja, wie verfolgt Letsencrypt angehaltene und gestartete Container? Gibt es eine andere Möglichkeit, dies zum Laufen zu bringen?

Antwort1

Traefik beinhaltet eine Letsencrypt-Integration, ein separater Letsencrypt-Container ist nicht erforderlich.

Traefik beendet standardmäßig auch TLS-Verbindungen und leitet Anfragen an Ihre Anwendung in HTTP über das interne Docker-Netzwerk weiter. Ihre Verbindung ist über das Internet weiterhin sicher, aber die Anwendung, mit der Sie sich verbinden, weiß das nicht. Sie können die Verbindung erneut verschlüsseln, indem Sie dies traefik.protocol=httpsbei Ihrem Dienst angeben, aber dann muss Ihre Anwendung ihre eigenen TLS-Zertifikate verwalten, denen Traefik vertrauen muss, da diese nicht von LetsEncrypt stammen.

verwandte Informationen