diff --git a/proxy/Caddyfile b/proxy/Caddyfile index 7352500..c155caf 100644 --- a/proxy/Caddyfile +++ b/proxy/Caddyfile @@ -1,51 +1,86 @@ { - auto_https off + auto_https disable_redirects + local_certs + pki { + ca local { + name "{$LOCAL_CA_NAME}" + } + } log default { output stdout format console } } -http://whoami.{$DOMAIN} { - reverse_proxy whoami:80 -} - -http://dashboard.{$DOMAIN} { - reverse_proxy homer:8080 -} - -http://hassi.{$DOMAIN} { - # reverse_proxy homeassistant:8123 - reverse_proxy {host}:8123 -} - -http://zigbee2mqtt.{$DOMAIN} { - reverse_proxy zigbee2mqtt:8080 -} - -http://jellyfin.{$DOMAIN} { - reverse_proxy jellyfin:8096 -} - -http://paperless.{$DOMAIN} { - reverse_proxy paperless-ngx:8000 -} - -http://download.{$DOMAIN} { - reverse_proxy pyload:8000 -} - -http://uptime.{$DOMAIN} { - reverse_proxy uptime-kuma:3001 -} - -http://torrent.{$DOMAIN} { - reverse_proxy transmission:9091 -} - -:80, :443 { - respond "404 Not Found" 404 +(errorhandler) { handle_errors { - respond "{err.status_code} {err.status_text}" {err.status_code} + root * /usr/share/caddy/web + rewrite * /error.html + templates + file_server { + status {err.status_code} + } } } + +(localtls) { + tls internal +} + +whoami.{$DOMAIN} http://whoami.{$DOMAIN} { + reverse_proxy whoami:80 + import errorhandler +} + +dashboard.{$DOMAIN} http://dashboard.{$DOMAIN} { + reverse_proxy homer:8080 + import errorhandler +} + +hassi.{$DOMAIN} http://hassi.{$DOMAIN} { + # reverse_proxy homeassistant:8123 + reverse_proxy {host}:8123 + import errorhandler +} + +zigbee2mqtt.{$DOMAIN} http://zigbee2mqtt.{$DOMAIN} { + reverse_proxy zigbee2mqtt:8080 + import errorhandler +} + +jellyfin.{$DOMAIN} http://jellyfin.{$DOMAIN} { + reverse_proxy jellyfin:8096 + import errorhandler +} + +paperless.{$DOMAIN} http://paperless.{$DOMAIN} { + reverse_proxy paperless-ngx:8000 + import errorhandler +} + +download.{$DOMAIN} http://download.{$DOMAIN} { + reverse_proxy pyload:8000 + import errorhandler +} + +uptime.{$DOMAIN} http://uptime.{$DOMAIN} { + reverse_proxy uptime-kuma:3001 + import errorhandler +} + +torrent.{$DOMAIN} http://torrent.{$DOMAIN} { + reverse_proxy transmission:9091 + import errorhandler +} + +root-ca.{$DOMAIN} http://root-ca.{$DOMAIN} { + file_server * { + root /usr/share/caddy/web + hide .git Readme.md + } + file_server /root.crt { + root /data/caddy/pki/authorities/local/ + hide *.key + } + import errorhandler +} diff --git a/proxy/docker-compose.yaml b/proxy/docker-compose.yaml index 1a53113..2870b0b 100644 --- a/proxy/docker-compose.yaml +++ b/proxy/docker-compose.yaml @@ -5,14 +5,20 @@ services: restart: unless-stopped ports: - 80:80 + - 443:443 + - "443:443/udp" volumes: - ${VOLUMES_PATH}/proxy/caddy/data:/data - ${VOLUMES_PATH}/proxy/caddy/config:/config - ./Caddyfile:/etc/caddy/Caddyfile:ro + - ./web:/usr/share/caddy/web:ro networks: - web environment: - DOMAIN=${DOMAIN} + - LOCAL_CA_NAME=${LOCAL_CA_NAME} + cap_add: + - cap_net_bind_service whoami: diff --git a/proxy/web/default.css b/proxy/web/default.css new file mode 100644 index 0000000..a4c1d6d --- /dev/null +++ b/proxy/web/default.css @@ -0,0 +1,13 @@ +:root { + max-width: 80ch; + padding: 3em 1em; + margin: auto; + font-size: 1.25em; + font-family: Arial, Helvetica, sans-serif; +} + +footer { + position: absolute; + bottom: 0; + height: 50px; +} diff --git a/proxy/web/index.html b/proxy/web/index.html new file mode 100644 index 0000000..76a3485 --- /dev/null +++ b/proxy/web/index.html @@ -0,0 +1,72 @@ +” + + + + + Containerize Root-CA + + + + + +

Containerize Root-CA

+ +

+ Caddy dient als lokale Zertifizierungsstelle (CA) um eigene lokale Zertifikate zu signieren. + Details siehe Caddy Doku. +

+ +

+ Führe folgendes aus: +

    +
  1. + Klicken sie hier um das CA-Zertifikat von Caddy herunter + zu laden.
    +
  2. + +
  3. + Installiere das caddy-root-ca.crt in den Windwos Truststore.
    + Öffne die Datei mit Doppelklick und drücke "Zertifikat installieren".
    + Wähle "Aktueller Benutzer" und den Zertifikatspeicher "Vertrauenswürdige Stammzertifizierungsstellen" +
  4. + +
  5. + Installiere das caddy-root-ca.crt manuell in deinen Browser. Chrome benutzt den Zertifikatsspeicher vom + Betriebsystem. +
  6. + +
  7. + Um das CA-Certifikat in den Linux-Truststore zu installieren führen Sie folgende Befehle aus: +
    curl -o caddy-root-ca.crt http://example.lan/root.crt
    +sudo mkdir -p /usr/local/share/ca-certificates/extra
    +sudo cp caddy-root-ca.crt /usr/local/share/ca-certificates/extra/
    +sudo update-ca-certificates
    +         
    +         
    + +
  8. +
  9. + Fertig. + Wechsle jetzt zu https + + . +
  10. + +
+

+ + + + + +