General info: I'm trying to create a https://pluto/jellyfin reverse proxy using ingress.
What works and what doesn't..
https://pluto/jellyfin/web/index.html
> works with the login page displayed
http://pluto:8096
> works as a load balancer and redirects to http://pluto:8096/web/index.html
https://pluto/jellyfin
> returns back 404 Page not found. It also redirects to https://pluto/web/index.html
https://pluto/jellyfin/
> returns back 404 Page not found. It also redirects to https://pluto/web/index.html
How can I get https://pluto/jellyfin to redirect https://pluto/jellyfin/web/index.html?
Here are my config settings which are kinda complicated. Traefik and reverse proxies are new for me
Traefik:
web Entrypoint redirects to websecure Entrypoint. This turns http requests to https.
strip-prefix is a middleware rule for stripPrefixRegex. ^/[^/]+ is the regex. It will strip the first path element so /jellyfin/web/index.html is sent as /web/index.html to the Jellyfin service.
Jellyfin:
host is configured as pluto. hostpath is configured as /jellyfin
This creates the http router rule: Host(pluto
) && PathPrefix(/jellyfin
)
I tried adding different middlewares (redirectRegex, etc.) using ExactPath instead of PrefixPath, etc. but I just can't get https://pluto/jellyfin to work..
Any suggestions?
Placing a service under a path is usually an issue because the service doesn't know about the path and will redirect or link to absolute paths that are not correct anymore.
That's why mostly sub-domains are used. And with LetsEncrypt you get a free TLS/SSL certs for each one, no need to buy expensive wildcard certs anymore.
In your case you are stating that you have configured a hostpath
within the application. Then you should just need a rule
with Host
and PathPrefix
to let Traefik forward the requests to your service.
But you should not need a stripprefix
middleware. Jellyfin docs. Try removing it.
I already have host and pathprefix configure in Traefik..
Host(pluto
) && PathPrefix(/jellyfin
)
But as I mentioned above it looks like it is also sending /jellyfin/web/index.html to the service which can't be resolved. This is why I added the strip-prefix so the service sees /web/index.html..
If I just have Host(pluto
) in the jellyfin app everything works perfectly is I punch in http://pluto (without the strip-prefix too), but then I can only have one service resolve to pluto..
Somehow and extra /jellyfin is getting added..
If you want to use a path prefix for multiple instances, you can use PathPrefix with Traefik and set the baseurl in jellyfin. It needs to be the same. Don’t use StripPrefix, as I explained above.
Did you read the jellyfin docs?
When setting a new Base URL (i.e. from /
to /baseurl
) or changing a Base URL (i.e. from /baseurl
to /newbaseurl
), the Jellyfin web server will automatically handle redirects to avoid displaying users invalid pages. For instance, accessing a server with a Base URL of /jellyfin
on the /
path will automatically append the /jellyfin
Base URL.