From b5d54f583fe627970bc15a392168690557e456c1 Mon Sep 17 00:00:00 2001 From: Fredrik Baberg Date: Mon, 12 Dec 2022 02:54:18 +0100 Subject: [PATCH] Split templates into direct/ingress --- 3dprinter-octoprint/CHANGELOG.md | 5 ++-- 3dprinter-octoprint/Dockerfile | 2 +- 3dprinter-octoprint/config.yaml | 2 +- .../rootfs/etc/caddy/Caddyfile | 4 +-- .../rootfs/etc/caddy/configs/.gitkeep | 0 .../rootfs/etc/cont-init.d/proxy.sh | 15 ++++++++-- .../share/tempio/caddy/Caddyfile.direct.gtpl | 6 ++++ .../share/tempio/{ => caddy}/Caddyfile.gtpl | 0 .../share/tempio/caddy/Caddyfile.ingress.gtpl | 29 +++++++++++++++++++ 9 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 3dprinter-octoprint/rootfs/etc/caddy/configs/.gitkeep create mode 100644 3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.direct.gtpl rename 3dprinter-octoprint/rootfs/usr/share/tempio/{ => caddy}/Caddyfile.gtpl (100%) create mode 100644 3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.ingress.gtpl diff --git a/3dprinter-octoprint/CHANGELOG.md b/3dprinter-octoprint/CHANGELOG.md index 40601db..3a82a5e 100644 --- a/3dprinter-octoprint/CHANGELOG.md +++ b/3dprinter-octoprint/CHANGELOG.md @@ -1,5 +1,6 @@ -- 2022.12.0 - - Minor updates. +- 2022.12.01 + - Use separate templates for Caddy Ingress/direct config. + - Add mode for camera (for testing). - 2022.11.01 - Add reverse proxy config for camera with Ingress (untested). diff --git a/3dprinter-octoprint/Dockerfile b/3dprinter-octoprint/Dockerfile index c95bbc4..23dc61a 100644 --- a/3dprinter-octoprint/Dockerfile +++ b/3dprinter-octoprint/Dockerfile @@ -29,7 +29,7 @@ RUN apt update \ build-essential \ caddy \ # Extras. - # ffmpeg \ + ffmpeg \ # avrdude \ # dfu-util \ # dfu-programmer \ diff --git a/3dprinter-octoprint/config.yaml b/3dprinter-octoprint/config.yaml index 06a759c..d63d231 100644 --- a/3dprinter-octoprint/config.yaml +++ b/3dprinter-octoprint/config.yaml @@ -1,5 +1,5 @@ name: "3DPrinter-OctoPrint" -version: "2022.12.0" +version: "2022.12.01" slug: "3dprinter-octoprint" description: "OctoPrint as an addon, no additional bells and whistles." url: "https://github.com/fredrikbaberg/home-assistant-addons/tree/main/3dprinter-octoprint" diff --git a/3dprinter-octoprint/rootfs/etc/caddy/Caddyfile b/3dprinter-octoprint/rootfs/etc/caddy/Caddyfile index d4878ed..bc7a7ec 100644 --- a/3dprinter-octoprint/rootfs/etc/caddy/Caddyfile +++ b/3dprinter-octoprint/rootfs/etc/caddy/Caddyfile @@ -1,4 +1,4 @@ -# This file is a placeholder and will be replaced on launch. +# Main Caddy configuration file. Config for Ingress/direct will be stored in subfiles. { debug log { @@ -6,4 +6,4 @@ output file /var/log/caddy/caddy.log } } -# import configs/*.caddy +import configs/*.caddy diff --git a/3dprinter-octoprint/rootfs/etc/caddy/configs/.gitkeep b/3dprinter-octoprint/rootfs/etc/caddy/configs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/3dprinter-octoprint/rootfs/etc/cont-init.d/proxy.sh b/3dprinter-octoprint/rootfs/etc/cont-init.d/proxy.sh index 6118176..6e83223 100644 --- a/3dprinter-octoprint/rootfs/etc/cont-init.d/proxy.sh +++ b/3dprinter-octoprint/rootfs/etc/cont-init.d/proxy.sh @@ -4,7 +4,7 @@ # Configures proxy # ============================================================================== -# Generate proxy configuration +# Generate proxy configuration for Ingress bashio::var.json \ interface "$(bashio::addon.ip_address)" \ port "^$(bashio::addon.ingress_port)" \ @@ -12,5 +12,14 @@ bashio::var.json \ camera_host "$(bashio::config 'camera_url')" \ mode "$(bashio::config 'mode')" \ | tempio \ - -template /usr/share/tempio/Caddyfile.gtpl \ - -out /etc/caddy/Caddyfile + -template /usr/share/tempio/caddy/Caddyfile.ingress.gtpl \ + -out /etc/caddy/configs/ingress.caddy + +# Generate proxy configuration for direct access, if enabled. +if bashio::var.has_value "$(bashio::addon.port 5000)"; then + bashio::var.json \ + mode "$(bashio::config 'mode')" \ + | tempio \ + -template /usr/share/tempio/caddy/Caddyfile.direct.gtpl \ + -out /etc/caddy/configs/direct.caddy +fi diff --git a/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.direct.gtpl b/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.direct.gtpl new file mode 100644 index 0000000..1f6971e --- /dev/null +++ b/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.direct.gtpl @@ -0,0 +1,6 @@ +# OctoPrint WebUI +:5000 { + reverse_proxy http://127.0.0.1:80 { + header_up X-Scheme {scheme} + } +} diff --git a/3dprinter-octoprint/rootfs/usr/share/tempio/Caddyfile.gtpl b/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.gtpl similarity index 100% rename from 3dprinter-octoprint/rootfs/usr/share/tempio/Caddyfile.gtpl rename to 3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.gtpl diff --git a/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.ingress.gtpl b/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.ingress.gtpl new file mode 100644 index 0000000..197393c --- /dev/null +++ b/3dprinter-octoprint/rootfs/usr/share/tempio/caddy/Caddyfile.ingress.gtpl @@ -0,0 +1,29 @@ +:8099 { + @ingress { + remote_ip 172.30.32.2 + } + uri strip_prefix {{ .ingress_entry }} + + handle_path /camera/* { + reverse_proxy @ingress {{ .camera_host }} { + } + } + + handle { + {{ if eq .mode "camera" }} + reverse_proxy @ingress {{ .camera_host }} {} + {{ else if eq .mode "recovery" }} + rewrite / /recovery + {{ else if eq .mode "reverse_proxy_test" }} + rewrite / /reverse_proxy_test + {{ end }} + reverse_proxy @ingress 127.0.0.1:80 { + header_up X-Script-Name {{ .ingress_entry }} + header_up -Origin + header_up Origin 172.30.32.2 + header_up X-Forwarded-For 172.30.32.2 + header_up X-Scheme {scheme} + flush_interval -1 + } + } +}