• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support Troubleshooting Networking & Access SOLVED: Can't access Jellyfin with my subdomain (NGINX)

     
    • 0 Vote(s) - 0 Average

    SOLVED: Can't access Jellyfin with my subdomain (NGINX)

    CelianGdfrd
    Offline

    Junior Member

    Posts: 4
    Threads: 2
    Joined: 2025 Feb
    Reputation: 0
    #1
    2025-02-04, 02:47 PM
    Hi, I'm trying to install Jellyfin on my Ubuntu server.

    ip_address:8096 works, but I can't access Jellyfin with the reverse proxy I've setup.

    My Nginx config :

    Code:
    server {
        server_name REDACTED;

        # Uncomment to redirect HTTP to HTTPS
        return 301 https://$host$request_uri;

        listen [::]:443 ssl; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/REDACTED/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/REDACTED/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    }

    server {
        # Nginx versions prior to 1.25
    #    listen 443 ssl http2;
    #    listen [::]:443 ssl http2;

        # Nginx versions 1.25+
        #listen 443 ssl;
        #listen [::]:443 ssl;
        #http2 on;

        server_name REDACTED;

        ## The default `client_max_body_size` is 1M, this might not be enough for some posters, etc.
        client_max_body_size 20M;

        # Comment next line to allow TLSv1.0 and TLSv1.1 if you have very old clients
        ssl_protocols TLSv1.3 TLSv1.2;

    #    ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
    #    ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem;
    #    include /etc/letsencrypt/options-ssl-nginx.conf;
    #    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    #    ssl_trusted_certificate /etc/letsencrypt/live/example.org/chain.pem;

        # use a variable to store the upstream proxy
        set $jellyfin 127.0.0.1;
        # Security / XSS Mitigation Headers
        add_header X-Content-Type-Options "nosniff";

        # Permissions policy. May cause issues with some clients
        add_header Permissions-Policy "accelerometer=(), ambient-light-sensor=(), battery=(), bluetooth=(), camera=(), clipboard-read=(), display-capture=(), document-domain=(), encrypted-media>

        # Content Security Policy
        # See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
        # Enforces https content and restricts JS/CSS to origin
        # External Javascript (such as cast_sender.js for Chromecast) must be whitelisted.
        add_header Content-Security-Policy "default-src https: data: blob: ; img-src 'self' https://* ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.c>

        location / {
            # Proxy main Jellyfin traffic
            proxy_pass http://$jellyfin:8096;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;

            # Disable buffering when the nginx proxy gets very resource heavy upon streaming
            proxy_buffering off;
        }

        location /socket {
            # Proxy Jellyfin Websockets traffic
            proxy_pass http://$jellyfin:8096;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;
        }
    }
    server {
        if ($host = REDACTED) {
            return 301 https://$host$request_uri;
        } # managed by Certbot


        listen 80;
        listen [::]:80;
    #    server_name REDACTED;
        return 404; # managed by Certbot


    }

    Firefox console tells me that my subdomain leads to a ns_error_redirect_loop, not sure how to deal with this. Nginx Log indicates nothing.

    I can provide additionnal information if needed. Thank you very much by advance.
    Go to solution
    bitmap
    Offline

    Community Moderator

    Posts: 771
    Threads: 9
    Joined: 2023 Jul
    Reputation: 24
    #2
    2025-02-04, 03:37 PM
    Your first server block you're listening on 443 to redirect to HTTPS. That should be listening on 80, not 443. Check out the config in the docs.

    https://jellyfin.org/docs/general/networking/nginx/
    Jellyfin 10.10.7 LSIO Docker | Ubuntu 24.04 LTS | i7-13700K | Arc A380 6 GB | 64 GB RAM | 79 TB Storage

    [Image: AIL4fc84QG6uSnTDEZiCCtosg7uAA8x9j1myFaFs...qL0Q=w2400]
    CelianGdfrd
    Offline

    Junior Member

    Posts: 4
    Threads: 2
    Joined: 2025 Feb
    Reputation: 0
    #3
    2025-02-04, 03:42 PM
    (2025-02-04, 03:37 PM)bitmap Wrote: Your first server block you're listening on 443 to redirect to HTTPS. That should be listening on 80, not 443. Check out the config in the docs.

    https://jellyfin.org/docs/general/networking/nginx/


    Thank you ! That seems to work. I guess certbot broke my .conf file.

    But now my subdomain redirects me to another service, not Jellyfin. I guess that's because I didn't specify a root directory in the conf file. Is there any way to do this ? I don't even know where the Jellyfin root directory lands with the install script.
    bitmap
    Offline

    Community Moderator

    Posts: 771
    Threads: 9
    Joined: 2023 Jul
    Reputation: 24
    #4
    2025-02-04, 03:45 PM (This post was last modified: 2025-02-04, 03:48 PM by bitmap. Edited 1 time in total.)
    From the config:

    Code:
    location / {
            # Proxy main Jellyfin traffic
            proxy_pass http://$jellyfin:8096;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;

            # Disable buffering when the nginx proxy gets very resource heavy upon streaming
            proxy_buffering off;
        }

    It's a location block for the root. You also don't seem to be listening on 443 in the main server block, which might be why you're not getting the right service -- it can't hear the doorbell.

    Here's my config, which is only slightly different from the example in the docs:

    Code:
    server {
        listen 80;
        server_name jellyfin.*;

        # Uncomment to redirect HTTP to HTTPS
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        #http2 on;

        server_name jellyfin.*;

        include /config/nginx/ssl.conf;

        client_max_body_size 60M;

        set $jellyfin 192.168.1.3;
        
        add_header X-XSS-Protection "0"; # Do NOT enable. This is obsolete/dangerous
        add_header Origin-Agent-Cluster "?1" always;

        location / {
            include /config/nginx/proxy.conf;
            include /config/nginx/resolver.conf;
            set $upstream_app $jellyfin;
            set $upstream_port 8096;
            set $upstream_proto http;
            proxy_pass $upstream_proto://$upstream_app:$upstream_port;

            proxy_set_header Range $http_range;
            proxy_set_header If-Range $http_if_range;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;

            # Disable buffering when the nginx proxy gets very resource heavy upon streaming
            proxy_buffering off;
        }
        

        location ~ (/jellyfin)?/socket {
            include /config/nginx/proxy.conf;
            include /config/nginx/resolver.conf;
            set $upstream_app $jellyfin;
            set $upstream_port 8096;
            set $upstream_proto http;
            proxy_pass $upstream_proto://$upstream_app:$upstream_port;
            
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;
        }
    }
    Jellyfin 10.10.7 LSIO Docker | Ubuntu 24.04 LTS | i7-13700K | Arc A380 6 GB | 64 GB RAM | 79 TB Storage

    [Image: AIL4fc84QG6uSnTDEZiCCtosg7uAA8x9j1myFaFs...qL0Q=w2400]
    CelianGdfrd
    Offline

    Junior Member

    Posts: 4
    Threads: 2
    Joined: 2025 Feb
    Reputation: 0
    #5
    2025-02-04, 03:50 PM
    Alright, that's how the top of my .conf file looks now :

    Code:
    server {
        server_name REDACTED;

        # Uncomment to redirect HTTP to HTTPS
        return 301 https://$host$request_uri;

        listen [::]:80 ssl; # managed by Certbot
        listen 80 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/REDACTED/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/REDACTED/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    }

    server {
        # Nginx versions prior to 1.25
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        ssl_certificate /etc/letsencrypt/live/REDACTED/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/REDACTED/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    And everything works !

    Thank you so much for your help !
    1
    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode