it:server:traefik-reverzni-proxy

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
it:server:traefik-reverzni-proxy [2025/01/14 23:33] – [Shrnutí a závěrečná konfigurace] Petr Nosekit:server:traefik-reverzni-proxy [2025/01/15 00:01] (aktuální) – [Zabezpečení Gitea a přihlašování bez hesla] Petr Nosek
Řádek 1076: Řádek 1076:
  
 Tím jsem dosáhl pohodlného přihlašování bez opakovaného zadávání hesla. Tím jsem dosáhl pohodlného přihlašování bez opakovaného zadávání hesla.
 +
 +
 +===== Zabezpečení Solar Assistanta na portu 80 přes Traefik =====
 +
 +Potřeboval jsem zabezpečit Solar Assistanta, který běží na Raspberry Pi na portu 80, a rozhodl jsem se k tomu využít Traefik. Vytvořil jsem tunel pomocí `autossh` ze serveru, na kterém běží Traefik.
 +
 +SSH tunel je šifrovaný a web Solar Assistanta byl po propojení dostupný na adrese `localhost:8089`. Cílem tedy bylo nastavit Traefik tak, aby přistupoval na `localhost:8089`. Problém však byl, že Traefik v kontejneru nemůže přistupovat na `localhost:8089`, protože tam nic není – Traefik se musí dostat mimo kontejner.
 +
 +V tomto případě se konfigurace odehrává pomocí labelů u kontejneru Traefik, protože se nebude přistupovat do jiného kontejneru.
 +
 +==== Konfigurace Docker Compose ====
 +
 +<code yaml>
 +proxy:
 +  image: traefik
 +  restart: always
 +  container_name: traefik
 +  ports:
 +    - "443:443" # HTTPS
 +    - "80:80"
 +  extra_hosts:
 +    - "host.docker.internal:host-gateway"
 +  environment:
 +    - CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
 +    - CLOUDFLARE_DNS_API_TOKEN=${CLOUDFLARE_DNS_API_TOKEN}
 +    - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
 +  volumes:
 +    - ${VOLUME_PATH}/traefik/acme:/etc/acme/
 +    - ${VOLUME_PATH}/traefik/.htpasswd:/auth/.htpasswd
 +    - /var/run/docker.sock:/var/run/docker.sock
 +    - ./traefik.yml:/etc/traefik/traefik.yml:ro
 +    - ./traefik-dynamic-config:/etc/traefik/dynamic-config:ro
 +  labels:
 +    traefik.enable: "true"
 +
 +    # Přesměrování HTTP na HTTPS
 +    traefik.http.routers.solar-insecure.rule: "Host(`${FQDN_SOLAR}`)"
 +    traefik.http.routers.solar-insecure.entrypoints: "web"
 +    traefik.http.routers.solar-insecure.middlewares: "redirect"
 +
 +    # Middleware pro přesměrování na HTTPS
 +    traefik.http.middlewares.redirect.redirectscheme.scheme: "https"
 +
 +    # HTTPS router
 +    traefik.http.routers.solar.rule: "Host(`${FQDN_SOLAR}`)"
 +    traefik.http.routers.solar.entrypoints: "websecure"
 +    traefik.http.routers.solar.tls.certresolver: "tmdnschallenge"
 +    traefik.http.routers.solar.service: "solar@file"
 +</code>
 +
 +==== Dynamická konfigurace ====
 +
 +Do `docker-compose.yml` jsem musel přidat odkaz na dynamické nastavení:
 +<code yaml>
 +traefik.http.routers.solar.service: "solar@file"
 +</code>
 +
 +Soubor `traefik.yml` jsem upravil takto:
 +<code yaml>
 +providers:
 +  docker:
 +    exposedByDefault: false
 +  file:
 +    directory: "/etc/traefik/dynamic-config"
 +    watch: true  # Sleduje změny v souboru
 +</code>
 +
 +Ve složce `traefik-dynamic-config` se nachází soubor `dynamic-config.yml`:
 +<code yaml>
 +http:
 +  services:
 +    solar:
 +      loadBalancer:
 +        servers:
 +          - url: "http://host.docker.internal:8089"
 +</code>
 +
 +==== Postup konfigurace ====
 +
 +1. Musel jsem připravit dynamickou konfiguraci a přidat složku:
 +<code>
 +./traefik-dynamic-config:/etc/traefik/dynamic-config:ro
 +</code>
 +Docker neumí pracovat se změnami, pokud je definován pouze soubor – je třeba nasměrovat na celou složku.
 +
 +2. Změna se projeví bez restartu Traefiku díky nastavení `watch: true`.
 +
 +3. Původně jsem se snažil nadefinovat přesměrování přímo v `docker-compose.yml`, ale dle článku [[https://community.traefik.io/t/what-does-loadbalancer-server-url-really-mean/23728|What does loadbalancer.server.url really mean]] je nutné využít dynamický konfigurační soubor.
 +
 +4. Nasledováním rady z [[https://community.traefik.io/t/traefik-not-reloading-configuration-when-dynamic-file-was-changed/1774|Traefik not reloading configuration when dynamic file was changed]] jsem pochopil, že musím použít celou složku pro dynamickou konfiguraci.
 +
 +Dokud jsem nepřesunul nastavení do dynamického konfiguračního souboru, konfigurace nefungovala.
 +
 +
  
 ===== Shrnutí a závěrečná konfigurace ===== ===== Shrnutí a závěrečná konfigurace =====
  • it/server/traefik-reverzni-proxy.1736897596.txt.gz
  • Poslední úprava: 2025/01/14 23:33
  • autor: Petr Nosek