Use fixed /seerr ingress_entry path matching official Seerr reverse proxy docs

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-19 12:54:23 +00:00
parent 2078d51cbb
commit 928ca10879
3 changed files with 26 additions and 28 deletions

View File

@@ -68,6 +68,7 @@ devices:
environment: {}
image: ghcr.io/alexbelgium/seerr-{arch}
ingress: true
ingress_entry: /seerr
ingress_port: 0
ingress_stream: true
webui: "[PROTO:ssl]://[HOST]:[PORT:5055]"

View File

@@ -10,15 +10,9 @@ bashio::log.info "Configuring Nginx for ingress..."
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
# Build escaped version of ingress_entry for JavaScript contexts (e.g., \/_next)
ingress_entry_escaped="${ingress_entry//\//\\\\/}"
# Update ingress.conf with actual values
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry_escaped%%|${ingress_entry_escaped}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
bashio::log.info "Nginx ingress configured on ${ingress_interface}:${ingress_port}"

View File

@@ -7,8 +7,13 @@ server {
gzip_static off;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:5055;
# Based on https://github.com/seerr-team/seerr/blob/develop/docs/extending-seerr/reverse-proxy.mdx
location ^~ /seerr {
set $app 'seerr';
# Remove /seerr path to pass to the app
rewrite ^/seerr/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:5055; # NO TRAILING SLASH
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
@@ -24,29 +29,27 @@ server {
add_header 'Referrer-Policy' 'no-referrer';
# Redirect location headers
absolute_redirect off;
proxy_redirect ^ %%ingress_entry%%;
proxy_redirect /setup %%ingress_entry%%/setup;
proxy_redirect /login %%ingress_entry%%/login;
proxy_redirect ^ /$app;
proxy_redirect /setup /$app/setup;
proxy_redirect /login /$app/login;
# Sub filters to replace hardcoded paths
# Based on https://github.com/seerr-team/seerr/blob/develop/docs/extending-seerr/reverse-proxy.mdx
sub_filter_once off;
sub_filter_types *;
sub_filter 'href="/"' 'href="%%ingress_entry%%"';
sub_filter 'href="/login"' 'href="%%ingress_entry%%/login"';
sub_filter 'href:"/"' 'href:"%%ingress_entry%%"';
sub_filter '\/_next' '%%ingress_entry_escaped%%\/_next';
sub_filter '/_next' '%%ingress_entry%%/_next';
sub_filter '/api/v1' '%%ingress_entry%%/api/v1';
sub_filter '/login/plex/loading' '%%ingress_entry%%/login/plex/loading';
sub_filter '/images/' '%%ingress_entry%%/images/';
sub_filter '/imageproxy/' '%%ingress_entry%%/imageproxy/';
sub_filter '/avatarproxy/' '%%ingress_entry%%/avatarproxy/';
sub_filter '/android-' '%%ingress_entry%%/android-';
sub_filter '/apple-' '%%ingress_entry%%/apple-';
sub_filter '/favicon' '%%ingress_entry%%/favicon';
sub_filter '/logo_' '%%ingress_entry%%/logo_';
sub_filter '/site.webmanifest' '%%ingress_entry%%/site.webmanifest';
sub_filter 'href="/"' 'href="/$app"';
sub_filter 'href="/login"' 'href="/$app/login"';
sub_filter 'href:"/"' 'href:"/$app"';
sub_filter '\/_next' '\/$app\/_next';
sub_filter '/_next' '/$app/_next';
sub_filter '/api/v1' '/$app/api/v1';
sub_filter '/login/plex/loading' '/$app/login/plex/loading';
sub_filter '/images/' '/$app/images/';
sub_filter '/imageproxy/' '/$app/imageproxy/';
sub_filter '/avatarproxy/' '/$app/avatarproxy/';
sub_filter '/android-' '/$app/android-';
sub_filter '/apple-' '/$app/apple-';
sub_filter '/favicon' '/$app/favicon';
sub_filter '/logo_' '/$app/logo_';
sub_filter '/site.webmanifest' '/$app/site.webmanifest';
}
}