Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run overseerr on subpath, Base URL #274

Open
mmozeiko opened this issue Dec 14, 2020 · 54 comments
Open

Run overseerr on subpath, Base URL #274

mmozeiko opened this issue Dec 14, 2020 · 54 comments

Comments

@mmozeiko
Copy link
Contributor

Is your feature request related to a problem? Please describe.
I'm reverse-proxying all services on main domain with caddy. Like https://example.com/radarr/ and https://example.com/sonarr/ and I want to do same with https://example.com/overseerr/
But currently it expects to be available on / path.

Describe the solution you'd like
Solution would be either to use relative URL's throughout the project. Or allow to specify base url/path in startup parameters, like PORT is specific in env variables. Like export BASE=/overseerr would be good enough for me.

@sct sct added this to Planned in Beta Release Roadmap Dec 17, 2020
@sct sct moved this from Planned to Backlog in Beta Release Roadmap Dec 26, 2020
@adamskoog

This comment has been minimized.

@sct
Copy link
Owner

sct commented Dec 28, 2020

Have to agree with this, it's really only usable for me to tinker with once in awhile. Can't have any other users try it out without letting it through the proxy.

You could always run it through a proxy on a subdomain, if your setup permits.

Subpath will take some time to figure out. Might be awhile :(

@jluis2k10

This comment has been minimized.

@adamskoog

This comment has been minimized.

@ankarhem
Copy link
Contributor

ankarhem commented Jan 4, 2021

Isn't this just a matter of setting the baseurl in next config and doing namespace in express? Can you elaborate on what is hindering this @sct ?

@flying-sausages
Copy link
Contributor

iirc next does not really support setting dynamic baseurls in runtime, so it would be have to built with it already set.

@ankarhem
Copy link
Contributor

ankarhem commented Jan 4, 2021

Oh, yeah that's true. So the solution for us would be to prepend every use we have of express, links etc with an env variable we can pass in to the docker image for instance?

@flying-sausages
Copy link
Contributor

flying-sausages commented Jan 4, 2021

Sounds a little hacky, unless you have something centralized that would generate links already. I didn't check your codebase yet.

I'd personally settle with setting it at build-time, it's not often you will change this i feel.

@mmozeiko
Copy link
Contributor Author

mmozeiko commented Jan 5, 2021

Changing base path in next.config.js is only part of solution. It works and makes app to listen on correct base path (this is a build time setting). I've tried it and it works.
But you need to change also all XHR requests in frontend from /api to $base/api. This involves all calls to axios.get/post and useSWR in frontend code.

I was planning to do this, but was busy past few weeks finishing #538.
My plan was to have build setting in some config file that gets used in both frontend and server. That would be good enough for my usage. Doing this as runtime settings would be much much more work to figure out how to do it.

But if somebody is doing this, then let me know and I won't look at this.

@flying-sausages

This comment has been minimized.

@mmgoodnow
Copy link

As far as I understand it, setting the base url at build time doesn't work super well with Docker because generally a base url change will require the frontend to be recompiled, which means that you'd either have to

  • do frontend compilation as part of the container entry point (at runtime), or
  • require that anybody changing their base url builds their own docker container.

Neither is very appealing in the long run, though they're both far better in the short term than not being able to use the app at all (for many of our use-cases).

To be able to set the base url at runtime, you'd need a couple things:

  • to be able to serve up the static files (js bundles, index.html, images, etc.) from a dynamic base url at runtime (server restart would be fine). In a normal non-SSR app this would be pretty easy, not sure how it changes with Next.

  • to know, in frontend code, what base url it's currently being served from (to prefix api calls).

  • Maybe next could dynamically hydrate the frontend with the base url that it's serving it from somehow? Not sure how that would affect asset paths like images and such, but it would make api call prefixing pretty simple.

@RageInvader

This comment has been minimized.

@samwiseg0
Copy link
Collaborator

samwiseg0 commented Mar 8, 2021

All,

There is an unsupported workaround in the overseerr docs. Please use it at your own risk! This could break at any point. No support will be given for this workaround.

If you are having issues please verify that it is reproducible when accessing overseerr directly!

https://docs.overseerr.dev/extending-overseerr/reverse-proxy-examples#nginx

@sct
Copy link
Owner

sct commented Mar 8, 2021

And to be clear, we are still looking into building this support into Overseerr directly. But ETA for that is still unknown.

@sct sct removed this from Backlog in Beta Release Roadmap Mar 19, 2021
@brettpetch

This comment has been minimized.

@samwiseg0

This comment has been minimized.

@stale

This comment has been minimized.

@stale stale bot added the stale label Jun 25, 2021
@dansmith01

This comment was marked as resolved.

@stale stale bot removed the stale label Sep 9, 2022
@dwk001

This comment was marked as spam.

@SteffanCline

This comment was marked as spam.

@dwk001

This comment was marked as spam.

@ftc2
Copy link

ftc2 commented Sep 24, 2022

@ElMoselYEE wrote:

I've implemented this feature in my private repo (see PR: https://github.com/ElMoselYEE/overseerr/pull/1) but it only works when using build-time variables

your fork is gone :(
does anyone else have this working somewhere before i try to figure it out myself?

@mmozeiko wrote:

Changing base path in next.config.js is only part of solution. It works and makes app to listen on correct base path (this is a build time setting). I've tried it and it works. But you need to change also all XHR requests in frontend from /api to $base/api. This involves all calls to axios.get/post and useSWR in frontend code.

@harb88
Copy link

harb88 commented Sep 25, 2022

Unfortunately with version 1.30.0 of Overseerr the workaround in the documentation for this has broken: https://docs.overseerr.dev/extending-overseerr/reverse-proxy

I had to revert back to 1.29.1 to get it working again.

@sct
Copy link
Owner

sct commented Sep 25, 2022

Unfortunately with version 1.30.0 of Overseerr the workaround in the documentation for this has broken: https://docs.overseerr.dev/extending-overseerr/reverse-proxy

I had to revert back to 1.29.1 to get it working again.

There is already a fix. Check out the support channel in our discord.

@markus-li
Copy link

When testing this with subfolders I noticed that the currently suggested sub_filter rules left certain parts broken, such as if you refreshed the page it wouldn't work since the URL wouldn't be correct. It works when clicking around, but a refresh would break. "sw.js" and "offline.html" were also missing.

In case someone else is interested, this is what I came up with for nginx:

location ^~ /pods/direct/overseerr {
    set $app 'pods/direct/overseerr';
    set $app_esc 'pods\/direct\/overseerr';

    # Remove /pods/direct/overseerr path to pass to the app
    rewrite ^/pods/direct/overseerr/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:5055; # NO TRAILING SLASH

    # Redirect location headers
    proxy_redirect ^ /$app;
    proxy_redirect /setup /$app/setup;
    proxy_redirect /login /$app/login;

    # Sub filters to replace hardcoded paths
    proxy_set_header Accept-Encoding "";
    sub_filter_once off;
    sub_filter_types *;
    
    # HREF
    sub_filter 'href="/"' 'href="/$app/"';
    sub_filter 'href="/login"' 'href="/$app/login"';
    sub_filter 'href:"/"' 'href:"/$app/"'; 

    ## Capture some things which shouldn't change
    sub_filter '.id,"/' '.id,"/';
    sub_filter '"/settings/main' '"/settings/main';
    sub_filter '"/settings/password' '"/settings/password';
    sub_filter '"/settings/permissions' '"/settings/permissions';
    sub_filter '"/settings/notifications' '"/settings/notifications';
    
    ## Now the remaining settings paths are ok to change
    sub_filter '"/settings' '"/$app/settings';
    
    ## Default filters:
    sub_filter '\/_next' '\/$app_esc\/_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/';
    
    ## Route-specific filters:
    sub_filter '"/sw.js"' '"/$app/sw.js"';
    sub_filter '"/offline.html' '"/$app/offline.html';
    sub_filter '"/android-' '"/$app/android-';
    sub_filter '"/apple-' '"/$app/apple-';
    sub_filter '"/favicon' '"/$app/favicon';
    sub_filter '"/logo_' '"/$app/logo_';
    sub_filter '"/profile' '"/$app/profile';
    sub_filter '"/users' '"/$app/users';
    sub_filter '"/movie' '"/$app/movie';
    sub_filter '"/tv' '"/$app/tv';
    sub_filter '"/person' '"/$app/person';
    sub_filter '"/collection' '"/$app/collection';
    sub_filter '"/discover' '"/$app/discover';
    sub_filter '"/requests' '"/$app/requests';
    sub_filter '"/issues' '"/$app/issues';
    sub_filter '"/site.webmanifest' '"./site.webmanifest';
    # Setting settings paths so that they don't match the generic replace
    sub_filter 'route:"/settings/main' 'route:"/settings/main';
    sub_filter 'regex:/^\/settings\/main' 'regex:/^\/settings\/main';
    sub_filter 'route:"/settings/password' 'route:"/settings/password';
    sub_filter 'regex:/^\/settings\/password' 'regex:/^\/settings\/password';
    sub_filter 'route:"/settings/permissions' 'route:"/settings/permissions';
    sub_filter 'regex:/^\/settings\/permissions' 'regex:/^\/settings\/permissions';
    sub_filter 'route:"/settings/notifications' 'route:"/settings/notifications';
    sub_filter 'regex:/^\/settings\/notifications' 'regex:/^\/settings\/notifications';
    # Generic route and regex replace
    sub_filter 'route:"/' 'route:"/$app/';
    sub_filter 'regex:/^\/' 'regex:/^\/$app_esc\/';
    sub_filter 'regex:/\/' 'regex:/\/$app_esc\/';
}

@SteffanCline

This comment was marked as spam.

@markus-li
Copy link

markus-li commented Oct 15, 2022

After a nice chat with @danshilm at Discord I revisited my sub_filter rules to make sure Web Push and PWA was working, it turned out they needed some additional tuning. I don't know if it works on iPhone, but it works in Chrome on my Samsung phone. If Overseerr would run in a subfolder (just about anything so that rewrites can go against the subfolder instead of /) by default this could probably be shortened to a few lines.

Due to the many special corner cases etc this is probably very brittle and could break at next update, but this is what I came up with:

location ^~ /pods/direct/overseerr {
    ## Set environment variables for use with SSO
    set $service_unit "podman-overseerr";
    set $service_name_pretty "Overseerr";
    
    set $app 'pods/direct/overseerr';
    set $app_esc 'pods\/direct\/overseerr';

    # Remove /pods/direct/overseerr path to pass to the app
    rewrite ^/pods/direct/overseerr/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:5055; # NO TRAILING SLASH

    # Redirect location headers
    proxy_redirect ^ /$app;
    proxy_redirect /setup /$app/setup;
    proxy_redirect /login /$app/login;

    # Sub filters to replace hardcoded paths
    proxy_set_header Accept-Encoding "";
    sub_filter_once off;
    sub_filter_types *;
    
    # HREF
    sub_filter 'href="/"' 'href="/$app/"';
    sub_filter 'href="/login"' 'href="/$app/login"';
    sub_filter 'href:"/"' 'href:"/$app/"'; 

    ## Capture some things which shouldn't change
    sub_filter '.id,"/' '.id,"/';
    sub_filter '"/settings/main' '"/settings/main';
    sub_filter '"/settings/password' '"/settings/password';
    sub_filter '"/settings/permissions' '"/settings/permissions';
    sub_filter '"/settings/notifications/email' '"/$app/settings/notifications/email';
    sub_filter 'webPushEnabled?"/settings/notifications/webpush"' 'webPushEnabled?"/settings/notifications/webpush"';
    sub_filter '"/settings/notifications/webpush' '"/$app/settings/notifications/webpush';
    sub_filter '"/settings/notifications/pushbullet' '"/$app/settings/notifications/pushbullet';
    sub_filter '"/settings/notifications/pushover' '"/$app/settings/notifications/pushover';
    # sub_filter '"/settings/notifications/pushover' '"/settings/notifications/pushover';
    sub_filter '"/settings/notifications' '"/settings/notifications';
    
    ## Now the remaining settings paths are ok to change
    sub_filter '"/settings' '"/$app/settings';
    
    ## Default filters:
    sub_filter '\/_next' '\/$app_esc\/_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/';
    
    ## Route-specific filters:
    sub_filter '"/sw.js"' '"/$app/sw.js"';
    sub_filter '"/offline.html' '"/$app/offline.html';
    sub_filter '"/android-' '"/$app/android-';
    sub_filter '"/apple-' '"/$app/apple-';
    sub_filter '"/favicon' '"/$app/favicon';
    sub_filter '"/logo_' '"/$app/logo_';
    sub_filter '"/profile' '"/$app/profile';
    sub_filter '"/users' '"/$app/users';
    sub_filter '"/movie' '"/$app/movie';
    sub_filter '"/tv' '"/$app/tv';
    ### These are needed for request management
    # It looks like this one rule can be used intead of the below 3
    sub_filter '="/".concat' '="/$app/".concat';
    # sub_filter 't="/".concat(w,"/").concat(y,"?manage=1"' 't="/$app/".concat(w,"/").concat(y,"?manage=1"';
    # sub_filter 's="/".concat(N,"/").concat(y,"?manage=1"' 's="/$app/".concat(N,"/").concat(y,"?manage=1"';
    # sub_filter 't="/".concat(b,"/").concat(y,"?manage=1"' 't="/$app/".concat(b,"/").concat(y,"?manage=1"';
    ###

    # Fix WebPush action URL:
    sub_filter 'actionUrl: payload' 'actionUrl: \'/$app\' + payload';
   
    sub_filter '"/person' '"/$app/person';
    sub_filter '"/collection' '"/$app/collection';
    sub_filter '"/discover' '"/$app/discover';
    sub_filter '"/requests' '"/$app/requests';
    sub_filter '"/issues' '"/$app/issues';
    sub_filter '"/site.webmanifest' '"/$app/site.webmanifest';
    # Setting settings paths so that they don't match the generic replace
    
    # For routes in /profile
    sub_filter 'route:"/settings/password' 'route:"/settings/password';
    sub_filter 'regex:/^\/settings\/password' 'regex:/^\/settings\/password';
    sub_filter 'route:"/settings/permissions' 'route:"/settings/permissions';
    sub_filter 'regex:/^\/settings\/permissions' 'regex:/^\/settings\/permissions';
    sub_filter 'route:"/settings/main",regex:/\/settings(\/main)?' 'route:"/settings/main",regex:/\/settings(\/main)?';            
    sub_filter 'route:"/settings/notifications/webpush",regex:/\/settings\/notifications\/webpush/,' 'route:"/settings/notifications/webpush",regex:/\/settings\/notifications\/webpush/,';
    sub_filter 'route:"/settings/notifications/pushbullet",regex:/\/settings\/notifications\/pushbullet/}' 'route:"/settings/notifications/pushbullet",regex:/\/settings\/notifications\/pushbullet/}';
    sub_filter 'route:"/settings/notifications/pushover",regex:/\/settings\/notifications\/pushover/}' 'route:"/settings/notifications/pushover",regex:/\/settings\/notifications\/pushover/}';
    sub_filter 'route:"/settings/notifications' 'route:"/$app/settings/notifications';
    sub_filter 'regex:/^\/settings\/notifications' 'regex:/^\/$app_esc\/settings\/notifications';
    
    # Generic route and regex replace
    sub_filter 'route:"/' 'route:"/$app/';
    sub_filter 'regex:/^\/' 'regex:/^\/$app_esc\/';
    sub_filter 'regex:/\/' 'regex:/\/$app_esc\/';
}
# code: language=nginx insertSpaces=true tabSize=4

@SteffanCline
Copy link

SteffanCline commented Oct 15, 2022 via email

@ramkrishna757575
Copy link

After a nice chat with @danshilm at Discord I revisited my sub_filter rules to make sure Web Push and PWA was working, it turned out they needed some additional tuning. I don't know if it works on iPhone, but it works in Chrome on my Samsung phone. If Overseerr would run in a subfolder (just about anything so that rewrites can go against the subfolder instead of /) by default this could probably be shortened to a few lines.

Due to the many special corner cases etc this is probably very brittle and could break at next update, but this is what I came up with:

location ^~ /pods/direct/overseerr {
    ## Set environment variables for use with SSO
    set $service_unit "podman-overseerr";
    set $service_name_pretty "Overseerr";
    
    set $app 'pods/direct/overseerr';
    set $app_esc 'pods\/direct\/overseerr';

    # Remove /pods/direct/overseerr path to pass to the app
    rewrite ^/pods/direct/overseerr/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:5055; # NO TRAILING SLASH

    # Redirect location headers
    proxy_redirect ^ /$app;
    proxy_redirect /setup /$app/setup;
    proxy_redirect /login /$app/login;

    # Sub filters to replace hardcoded paths
    proxy_set_header Accept-Encoding "";
    sub_filter_once off;
    sub_filter_types *;
    
    # HREF
    sub_filter 'href="/"' 'href="/$app/"';
    sub_filter 'href="/login"' 'href="/$app/login"';
    sub_filter 'href:"/"' 'href:"/$app/"'; 

    ## Capture some things which shouldn't change
    sub_filter '.id,"/' '.id,"/';
    sub_filter '"/settings/main' '"/settings/main';
    sub_filter '"/settings/password' '"/settings/password';
    sub_filter '"/settings/permissions' '"/settings/permissions';
    sub_filter '"/settings/notifications/email' '"/$app/settings/notifications/email';
    sub_filter 'webPushEnabled?"/settings/notifications/webpush"' 'webPushEnabled?"/settings/notifications/webpush"';
    sub_filter '"/settings/notifications/webpush' '"/$app/settings/notifications/webpush';
    sub_filter '"/settings/notifications/pushbullet' '"/$app/settings/notifications/pushbullet';
    sub_filter '"/settings/notifications/pushover' '"/$app/settings/notifications/pushover';
    # sub_filter '"/settings/notifications/pushover' '"/settings/notifications/pushover';
    sub_filter '"/settings/notifications' '"/settings/notifications';
    
    ## Now the remaining settings paths are ok to change
    sub_filter '"/settings' '"/$app/settings';
    
    ## Default filters:
    sub_filter '\/_next' '\/$app_esc\/_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/';
    
    ## Route-specific filters:
    sub_filter '"/sw.js"' '"/$app/sw.js"';
    sub_filter '"/offline.html' '"/$app/offline.html';
    sub_filter '"/android-' '"/$app/android-';
    sub_filter '"/apple-' '"/$app/apple-';
    sub_filter '"/favicon' '"/$app/favicon';
    sub_filter '"/logo_' '"/$app/logo_';
    sub_filter '"/profile' '"/$app/profile';
    sub_filter '"/users' '"/$app/users';
    sub_filter '"/movie' '"/$app/movie';
    sub_filter '"/tv' '"/$app/tv';
    ### These are needed for request management
    # It looks like this one rule can be used intead of the below 3
    sub_filter '="/".concat' '="/$app/".concat';
    # sub_filter 't="/".concat(w,"/").concat(y,"?manage=1"' 't="/$app/".concat(w,"/").concat(y,"?manage=1"';
    # sub_filter 's="/".concat(N,"/").concat(y,"?manage=1"' 's="/$app/".concat(N,"/").concat(y,"?manage=1"';
    # sub_filter 't="/".concat(b,"/").concat(y,"?manage=1"' 't="/$app/".concat(b,"/").concat(y,"?manage=1"';
    ###

    # Fix WebPush action URL:
    sub_filter 'actionUrl: payload' 'actionUrl: \'/$app\' + payload';
   
    sub_filter '"/person' '"/$app/person';
    sub_filter '"/collection' '"/$app/collection';
    sub_filter '"/discover' '"/$app/discover';
    sub_filter '"/requests' '"/$app/requests';
    sub_filter '"/issues' '"/$app/issues';
    sub_filter '"/site.webmanifest' '"/$app/site.webmanifest';
    # Setting settings paths so that they don't match the generic replace
    
    # For routes in /profile
    sub_filter 'route:"/settings/password' 'route:"/settings/password';
    sub_filter 'regex:/^\/settings\/password' 'regex:/^\/settings\/password';
    sub_filter 'route:"/settings/permissions' 'route:"/settings/permissions';
    sub_filter 'regex:/^\/settings\/permissions' 'regex:/^\/settings\/permissions';
    sub_filter 'route:"/settings/main",regex:/\/settings(\/main)?' 'route:"/settings/main",regex:/\/settings(\/main)?';            
    sub_filter 'route:"/settings/notifications/webpush",regex:/\/settings\/notifications\/webpush/,' 'route:"/settings/notifications/webpush",regex:/\/settings\/notifications\/webpush/,';
    sub_filter 'route:"/settings/notifications/pushbullet",regex:/\/settings\/notifications\/pushbullet/}' 'route:"/settings/notifications/pushbullet",regex:/\/settings\/notifications\/pushbullet/}';
    sub_filter 'route:"/settings/notifications/pushover",regex:/\/settings\/notifications\/pushover/}' 'route:"/settings/notifications/pushover",regex:/\/settings\/notifications\/pushover/}';
    sub_filter 'route:"/settings/notifications' 'route:"/$app/settings/notifications';
    sub_filter 'regex:/^\/settings\/notifications' 'regex:/^\/$app_esc\/settings\/notifications';
    
    # Generic route and regex replace
    sub_filter 'route:"/' 'route:"/$app/';
    sub_filter 'regex:/^\/' 'regex:/^\/$app_esc\/';
    sub_filter 'regex:/\/' 'regex:/\/$app_esc\/';
}
# code: language=nginx insertSpaces=true tabSize=4

This seems to be working. Thanks a lot 😃

@BaldissaraMatheus
Copy link

BaldissaraMatheus commented Oct 28, 2022

After a nice chat with @danshilm at Discord I revisited my sub_filter rules to make sure Web Push and PWA was working, it turned out they needed some additional tuning. I don't know if it works on iPhone, but it works in Chrome on my Samsung phone. If Overseerr would run in a subfolder (just about anything so that rewrites can go against the subfolder instead of /) by default this could probably be shortened to a few lines.

Due to the many special corner cases etc this is probably very brittle and could break at next update, but this is what I came up with:

location ^~ /pods/direct/overseerr {
    ## Set environment variables for use with SSO
    set $service_unit "podman-overseerr";
    set $service_name_pretty "Overseerr";
    
    set $app 'pods/direct/overseerr';
    set $app_esc 'pods\/direct\/overseerr';
    ...

This configuration didn't work well for me. When requesting a movie, overseerr seems to be prefixing radarr's root folder with the base path as well, causing the Missing Root Folder error in radarr

Edit: Removing sub_filter '"/movie' '"/$app/movie'; seems to fix the issue

@stale

This comment was marked as resolved.

@stale stale bot added the stale label Dec 27, 2022
@dwk001

This comment was marked as resolved.

@triesmon

This comment was marked as spam.

@johnistheman
Copy link

I added this line to enable the new image caching feature:

sub_filter '/imageproxy/' '/$app/imageproxy/';

But something isn't working quite right still. Maybe there is something else needed?

On the first page load of a movie detail page, the URI for the image will be for example:

https://domain.com/imageproxy/t/p/w600_and_h900_bestv2/blah.jpg

This doesn't load.
I reload the page (doing nothing else) and now the URI for the is:
https://domain.com/overseerr/imageproxy/t/p/w600_and_h900_bestv2/blah.jpg

This image does load.
Reloading the page the image keeps working.
If I go back to Discover, then click in to the movie again, the image isn't loading and reloading the page resolves it again.

@zachi40
Copy link

zachi40 commented Jun 24, 2023

I added this line to enable the new image caching feature:

sub_filter '/imageproxy/' '/$app/imageproxy/';

But something isn't working quite right still. Maybe there is something else needed?

On the first page load of a movie detail page, the URI for the image will be for example:

https://domain.com/imageproxy/t/p/w600_and_h900_bestv2/blah.jpg

This doesn't load. I reload the page (doing nothing else) and now the URI for the is: https://domain.com/overseerr/imageproxy/t/p/w600_and_h900_bestv2/blah.jpg

This image does load. Reloading the page the image keeps working. If I go back to Discover, then click in to the movie again, the image isn't loading and reloading the page resolves it again.

I added this line to enable the new image caching feature:

sub_filter '/imageproxy/' '/$app/imageproxy/';

But something isn't working quite right still. Maybe there is something else needed?

On the first page load of a movie detail page, the URI for the image will be for example:

https://domain.com/imageproxy/t/p/w600_and_h900_bestv2/blah.jpg

This doesn't load. I reload the page (doing nothing else) and now the URI for the is: https://domain.com/overseerr/imageproxy/t/p/w600_and_h900_bestv2/blah.jpg

This image does load. Reloading the page the image keeps working. If I go back to Discover, then click in to the movie again, the image isn't loading and reloading the page resolves it again.

You can try it like this
sub_filter '/imageproxy' '/$app/imageproxy';
it works for me

@SteffanCline
Copy link

Are there any configs for this to work in Apache and base URL? domain.tld/overseerr

@dieg0nob
Copy link

dieg0nob commented Dec 5, 2023

Are there any configs for this to work in Apache and base URL? domain.tld/overseerr

i'm very interesting in this!!! have you find a solution with apache ?

@qriff
Copy link

qriff commented Feb 11, 2024

Since there seems to exist mainly misunderstanding of what the issue with base URLs are, especially how the fixes for subdomains and matching paths do not apply for path rewriting (you just can't, especially without insane overhead, imagine subdomains working being more of a fluke than actual functionality).

Here's an apt writing about the subject:

https://caddy.community/t/the-subfolder-problem-or-why-cant-i-reverse-proxy-my-app-into-a-subfolder/8575

Long story short, with all URI factors in play (actual compatibility and standard implementation), implement "URL Base" support or watch the community forced to transition elsewhere.

@blixten85
Copy link

And to be clear, we are still looking into building this support into Overseerr directly. But ETA for that is still unknown.

Still no progression?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet