diff --git a/calibre/rootfs/etc/cont-init.d/90-ingress.sh b/calibre/rootfs/etc/cont-init.d/90-ingress.sh index 18552d5a2..5b533f43e 100755 --- a/calibre/rootfs/etc/cont-init.d/90-ingress.sh +++ b/calibre/rootfs/etc/cont-init.d/90-ingress.sh @@ -2,34 +2,39 @@ # shellcheck shell=bash set -e -# nginx Path NGINX_CONFIG=/etc/nginx/sites-available/ingress.conf SUBFOLDER="$(bashio::addon.ingress_entry)" -# Copy template +# Ensure subfolder ends with a trailing slash (except for root) +if [[ -n "${SUBFOLDER}" && "${SUBFOLDER}" != "/" ]]; then + [[ "${SUBFOLDER}" == */ ]] || SUBFOLDER="${SUBFOLDER}/" +else + SUBFOLDER="/" +fi + cp /defaults/default.conf "${NGINX_CONFIG}" # Keep only the first (non-SSL) server block awk -v n=2 '/^[[:space:]]*server[[:space:]]*\{/{n--} n>0' "${NGINX_CONFIG}" > tmpfile mv tmpfile "${NGINX_CONFIG}" -# Remove ipv6 +# Disable IPv6 listeners for ingress proxying sed -i '/listen \[::\]/d' "${NGINX_CONFIG}" -# Add ingress parameters +# Adapt ports and upstream paths for Home Assistant ingress sed -i "s|3000|$(bashio::addon.ingress_port)|g" "${NGINX_CONFIG}" +sed -i "s|SUBFOLDER|/|g" "${NGINX_CONFIG}" +sed -i "s|CWS|8082|g" "${NGINX_CONFIG}" +sed -i "s|REPLACE_HOME|${HOME:-/root}|g" "${NGINX_CONFIG}" +sed -i "s|REPLACE_DOWNLOADS_PATH|${HOME:-/config}|g" "${NGINX_CONFIG}" sed -i '/proxy_buffering/a proxy_set_header Accept-Encoding "";' "${NGINX_CONFIG}" sed -i '/proxy_buffering/a sub_filter_once off;' "${NGINX_CONFIG}" sed -i '/proxy_buffering/a sub_filter_types *;' "${NGINX_CONFIG}" sed -i '/proxy_buffering/a sub_filter "vnc/index.html?autoconnect" "vnc/index.html?path=%%path%%/websockify?autoconnect";' "${NGINX_CONFIG}" sed -i "s|%%path%%|${SUBFOLDER:1}|g" "${NGINX_CONFIG}" -# Replace placeholders -sed -i "s|CWS|8082|g" "${NGINX_CONFIG}" -sed -i "s|REPLACE_HOME|${HOME:-/root}|g" "${NGINX_CONFIG}" +# Avoid content encoding on proxied responses to keep Selkies happy +sed -i '/proxy_buffering/a \ + proxy_set_header Accept-Encoding "";' "${NGINX_CONFIG}" -# Correct image -sed -i "s|SUBFOLDER|/|g" "${NGINX_CONFIG}" - -# Enable ingress -cp /etc/nginx/sites-available/ingress.conf /etc/nginx/sites-enabled +cp "${NGINX_CONFIG}" /etc/nginx/sites-enabled