Zum Hauptinhalt springen
  1. Posts/

Traefik http3 aktivieren

·592 Wörter·3 min
Christian
docker selfhosted traefik
Christian
Autor
Christian
Macht was mit Computer 💻

Wie langjährige Leser meines Blogs oder Zuschauer meines YouTube Kanals wissen, nutze ich primär Traefik als Reverse Proxy unter Docker. Über die letzten Jahre hat sich entsprechend etwas an Know how angesammelt. Durch einen Beitrag auf Mastodon von Thomas Leister bin ich darauf gekommen auch mal http3 zu aktivieren. Was du entsprechend tun musst, um das bei dir ebenfalls einzurichten habe ich hier aufgeschrieben.

Vorteile von http3
#

HTTP/3 ist die neueste Version des Hypertext Transfer Protocols (HTTP) und bringt mehrere Vorteile gegenüber seinen Vorgängerversionen, insbesondere HTTP/1.1 und HTTP/2, mit sich. Hier sind einige der wichtigsten Vorteile von HTTP/3:

  1. Schnellerer Verbindungsaufbau: HTTP/3 verwendet das QUIC-Protokoll (Quick UDP Internet Connections), das auf UDP (User Datagram Protocol) basiert. Im Vergleich zu TCP (Transmission Control Protocol), das in vorherigen HTTP-Versionen verwendet wurde, ermöglicht QUIC einen schnelleren Verbindungsaufbau. Es beseitigt die Latenz, die durch den sogenannten “Handshake” in TCP verursacht wird.

  2. Multiplexing ohne Head-of-Line-Blocking: HTTP/3 unterstützt effizientes Multiplexing von Anfragen und Antworten. Im Gegensatz zu HTTP/1.1, bei dem eine Verbindung nur eine Anfrage gleichzeitig behandeln kann (Head-of-Line-Blocking), können bei HTTP/3 mehrere Anfragen und Antworten gleichzeitig übertragen werden. Dies verbessert die Effizienz und verkürzt die Ladezeiten von Webseiten.

  3. Bessere Leistung bei Netzwerkproblemen: HTTP/3 wurde entwickelt, um besser mit Netzwerkproblemen umzugehen. Das QUIC-Protokoll ermöglicht es, Verbindungen beizubehalten, auch wenn sich die Netzwerkbedingungen ändern. Dies trägt dazu bei, dass die Leistung aufrechterhalten wird, selbst wenn es zu Paketverlusten oder Netzwerkwechseln kommt.

  4. Adaptivität: HTTP/3 wurde entwickelt, um sich besser an verschiedene Netzwerkbedingungen anzupassen. Es kann sich automatisch an veränderte Latenzen und Bandbreiten anpassen, um eine optimale Leistung zu gewährleisten.

  5. Verbesserte Sicherheit: HTTP/3 unterstützt standardmäßig Verschlüsselung durch Transport Layer Security (TLS). Die Integration von TLS in den Kern des Protokolls trägt zur Sicherheit der Datenübertragung bei.

  6. Flexibilität: HTTP/3 ist so konzipiert, dass es besser mit den Anforderungen moderner Webanwendungen und Dienste umgehen kann. Durch die kontinuierliche Entwicklung des Protokolls können zukünftige Anforderungen besser erfüllt werden.

Es ist wichtig zu beachten, dass die Einführung von HTTP/3 nicht nur von den Vorteilen, sondern auch von der Unterstützung auf Server- und Clientseite abhängt. Nicht alle Webserver und Browser unterstützen möglicherweise bereits HTTP/3, aber die Akzeptanz nimmt stetig zu.

Anpassen der traefik Konfiguration
#

Ich verwendet primär die traefik.yml Datei um alles zu konfigurieren. Nutzt du mehr Labels, musst du das natürlich umbauen. Mit traefik 2.11 und 3 muss noch die experimentelle Funktion aktiviert werden. Dies kann zu einem späterern Zeitpunkt nicht mehr notwendig sein.

experimental:
  http3: true

Nun sind noch die Entrypoints anzupassen. meiner heißt websecure für die Verbindung von https. Entsprechend brauchen wir hier nur

    http3:
      advertisedPort: '443'

hinzuzufügen. Der vollständigkeit halber sieht mein kompletter Block so aus:

entryPoints:
  ping:
    address: ':88'
  web:
    address: ':80'
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ':443'
    http:
    http3:
      advertisedPort: '443'
    proxyProtocol:
      trustedIPs:
       - 10.0.0.0/8
       - 172.16.0.0/12
       - 192.168.0.0/16
    forwardedHeaders:
      trustedIPs:
       - 10.0.0.0/8
       - 172.16.0.0/12
       - 192.168.0.0/16

Natürlich reicht das nicht ganz aus. Wie ihr seht, veröffentliche ich Port 443 um http3 auszuliefern. Da http3 aber via QUIC über UPD kommuniziert, muss auch die docker-compose.yaml Datei angepasst werden.

Die Portkonfiguration sieht dann entsprechen so aus:

    ports:
      - target: 80
        published: 80
        protocol: tcp
        mode: host
      - target: 443
        published: 443
        protocol: tcp
        mode: host
      - target: 443
        published: 443
        protocol: udp
        mode: host

Der letzte target Block ist der wichtige. Hier wird Port 443 auf udp ausgeliefert. Abschließend noch den Container neu starten

docker compose rm -sf && docker compose up -d

Solltest du mehr als nur Traefik in der Datei haben, werden diese Services entsprechend auch neu gestartet. Ich empfehle zukünftig traefik zu separieren.

Verwandte Artikel

Traefik letsencrypt Tutorial
·923 Wörter·5 min
Christian
selfhosted docker traefik
Traefik letsencrypt Tutorial zum Anfragen von Zertifikaten via http challenge, dns challenge und weiteren Hilfestellungen.
Nextcloud Docker Setup - Step by step zum Erfolg
·649 Wörter·4 min
selfhosted docker traefik
Dieses Nextcloud Docker Setup hilft dir deine eigene Nextcloud unter Docker einzurichten und problemlos zu betreiben.
Reverse Proxy mit Traefik unter Docker
·556 Wörter·3 min
sonstiges selfhosted docker traefik
Achtung! Dieser Text ist schon über zwei Jahre alt und kann veraltet sein! Um mehrere Webseiten unter einer IP und einer Domain zu veröffentlichen, ist es am einfachsten, wenn man sich ein sogenannten reverse proxy einrichtet.