Træfɪk (Traefik) Reverse Proxy aarch64 Docker

Mittlerweile, dank Multi Arch Richtlinien, ist traefik für viele andere Plattformen offiziell erhältlich. In diesem Fall zu finden als

arm64v8/traefik

Von daher ist mein Image als veraltet gekennzeichnet und wird nicht mehr gepflegt.

Træfɪk ist ein Reverse Proxy Server + Load Balancer und erleichtert die (automatisierte) Bereitstellung von Docker Containern erheblich. Traefik nutze ich Zusammenspiel mit dnsmasq. Das Image, was ich für den Odroid C2 gebaut habe ist im Docker Hub verfügbar: * Dockerfiles: https://github.com/datenfahrt/aarch64-traefik * Image: https://hub.docker.com/r/datenfahrt/aarch64-traefik/ <code bash> $ docker run -d –name traefik -p 8080:8080 -p 80:80 -p443:443 -v /var/run/docker.sock:/var/run/docker.sock datenfahrt/aarch64-traefik </code>

Folgende config.toml wird genutzt

config.toml
################################################################
# Web configuration backend
################################################################
 
traefikLogsFile = "/app/log/traefik.log"
accessLogsFile = "/app/log/access.log"
 
defaultEntryPoints = ["http", "https"]
 
[web]
address = ":8080"
 
# SSL certificate and key used (ssl enabled, ui over https://docker.local:8080)
 
CertFile = "/app/cert/tls.crt"
KeyFile = "/app/cert/tls.key"
 
# To enable more detailed statistics
 
[web.statistics]
  RecentErrors = 10
 
################################################################
# Docker configuration backend
################################################################
[docker]
domain = "docker.lan"
watch = true
 
[entryPoints]
  [entryPoints.http]
  address = ":80"
 
  [entryPoints.https]
  address = ":443"
 
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
      CertFile = "/app/cert/tls.crt"
      KeyFile = "/app/cert/tls.key"

Auf der Projektseite wird die Konfiguration erleutert:

https://docs.traefik.io/toml/

Im heimischen LAN wird dnsmasq des Openwrt Router genutzt um die Domain docker.lan aufzulösen:

# /etc/dnsmasq.conf
# ..

address=/.docker.lan/192.168.1.126

Dnsmasq habe ich ebenfalls in ein Image gepackt und kann, soferm man kein Router mit erweiterter DNS Konfiguration nutzt, leicht ins heimische Netz eingebunden werden:

https://hub.docker.com/r/datenfahrt/aarch64-dnsmasq/

Falls man ein Router mit EdgeOS (hier ein Ubiquiti EdgeRouter X) einsetzt, kann man dies über das CLI erledigen:

set service dns forwarding options 'address=/.docker.lan/192.168.1.126'

Traefik unterstützt auch Lets Encrypt - ist für das heimische LAN aber nicht wirklich angezeigt. Im Docker Image befindet sich ein Testzertifikat zum schnellen Einstieg.

$ openssl req -newkey rsa:2048 -nodes -keyout cert/tls.key -x509 -days 365 -out cert/tls.crt

Eigene Konfiguration:

$ docker run -d --name traefik -v /path/to/cert:/app/cert -v /path/to/config.toml:/app/config.toml -p 8080:8080 -p 80:80 -p 443:443 -v /var/run/docker.sock:/var/run/docker.sock datenfahrt/aarch64-traefik:latest

Wenn zb Portainer läuft, ergibt sich folgende Adresse

Frontend Labels

Image, Dockerfile:

# Dockerfile..
LABEL traefik.enable="false"

Container (Beispiel):

$ docker run --name mywebapp -p 8010:80 --label traefik.enable="false" -d superduperwebapp

Beispiel Adresse http://yourhost.local/mydir

--label "traefik.frontend.rule=Host:yourhost.local;PathPrefixStrip:/mydir"
--label "traefik.frontend.passHostHeader=true"

Dst Port festlegen

--label "traefik.port=3000"
--label "passTLSCert=true"
labels:
  - "traefik.port=80"
  - "traefik.frontend.rule=Host:meineseite.example.com"
  - "traefik.enable=true"
  - "traefik.frontend.passHostHeader=true"
  - "traefik.docker.network=proxy"
  - "traefik.frontend.headers.STSSeconds=315360000"
  - "traefik.frontend.headers.STSIncludeSubdomains=true"
  - "traefik.frontend.headers.STSPreload=true"

Im Browser https://hostip:8080 aufrufen

Provider:

Health:

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • linux/odroid-c2/docker/traefik.txt
  • Zuletzt geändert: 2018/10/25 14:56
  • von haiko