If you have not already, we suggest setting your Plex username to something else rather than email which is displayed on your posts in forum. You can change the username at https://app.plex.tv/desktop#!/account
Welcome to our forums! Please take a few moments to read through our Community Guidelines (also conveniently linked in the header at the top of each page). There, you'll find guidelines on conduct, tips on getting the help you may be searching for, and more!

Plex for Android TV on Sony Bravia not showing artwork, but can play content fine

gdobgdob Posts: 19Members, Plex Pass Plex Pass
edited November 2017 in Android TV & Amazon Fire TV

Hi,

I have Plex configured behind Nginx reverse proxy and everything is working fine (iOS, Roku, PS4, Chromecast, Web), but on my new Sony Bravia TV Plex isn’t showing any artwork when browsing the app. I have my custom access URLs set as http://plex.example.com:80,https://plex.example.com:443 and Secure Connetions set to Preferred.

EDIT: Forgot to add that I’m using Plex Media Server v1.9.6.4429 and Plex for Android v6.7.1.2498.

This is how it looks on the TV:

And this is my nginx config:

upstream plex_backend {
    server 127.0.0.1:32400;
    keepalive 32;
}

server {
    listen 144.xx.xx.xxx:80;
    server_name plex.example.com;
    send_timeout 2h;

    location / {
        add_header X-Frame-Options SAMEORIGIN always;
        add_header X-Content-Type-Options nosniff always;
        add_header X-XSS-Protection "1; mode=block" always;
        add_header X-Robots-Tag none;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_buffering off;
        proxy_pass http://plex_backend;
    }

    location ^~ /.well-known/acme-challenge/ {
        root /opt/certbot/temp;
    }

    location = /.well-known/acme-challenge/ {
        return 404;
    }

    if ($host !~* ^plex\.example\.com$) {
        return 444;
    }
}

server {
    listen 144.xx.xx.xxx:443 ssl http2;
    server_name plex.example.com;
    send_timeout 2h;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DES-CBC3-SHA;
    ssl_ecdh_curve P-256;
    ssl_session_timeout 24h;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets on;
    ssl_buffer_size 16k;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    location / {
        add_header Strict-Transport-Security "max-age=63072000" always;
        add_header X-Frame-Options SAMEORIGIN always;
        add_header X-Content-Type-Options nosniff always;
        add_header X-XSS-Protection "1; mode=block" always;
        add_header X-Robots-Tag none;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_buffering off;
        proxy_pass http://plex_backend;
    }

    if ($host !~* ^plex\.example\.com$) {
        return 444;
    }
}

Any suggestions?

Thanks.

Best Answer

  • gdobgdob Posts: 19Members, Plex Pass Plex Pass
    edited January 14 Accepted Answer

    This was either fixed by Plex or was fixed by removing the following headers:

    add_header Strict-Transport-Security "max-age=63072000" always;
    add_header X-Frame-Options SAMEORIGIN always;
    add_header X-Content-Type-Options nosniff always;
    add_header X-XSS-Protection "1; mode=block" always;
    

    The fix happened at the same time when I removed the headers, then I saw the Android TV app updated. :sweat_smile:
    Anyway, it’s working fine now!

    The updated nginx config (tested and working with Android TV, iOS, Roku, Chromecast, Plex Web, PS4, Plex for Sony (Opera TV) and Plexamp):

    server {
        listen 144.xx.xx.xxx:80;
        server_name plex.example.com;
        send_timeout 2h;
    
        location / {
            gzip off;
            add_header X-Robots-Tag none;
            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_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_buffering off;
            proxy_pass http://127.0.0.1:32400;
        }
    }
    
    server {
        listen 144.xx.xx.xxx:443 ssl;
        server_name plex.example.com;
        send_timeout 2h;
    
        ssl_certificate /etc/nginx/ssl/plex.example.com/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/plex.example.com/key.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DES-CBC3-SHA;
        ssl_ecdh_curve P-256;
        ssl_session_timeout 24h;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/ssl/plex.example.com/ca.pem;
        resolver 8.8.8.8 8.8.4.4 valid=300s;
        resolver_timeout 5s;
    
        location / {
            gzip off;
            add_header X-Robots-Tag none;
            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_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_buffering off;
            proxy_pass http://127.0.0.1:32400;
        }
    }
    

Answers

  • evertzevertz Posts: 7Members, Plex Pass Plex Pass

    I have same issue on Android TV box and Android 7 phones. But on Android 6 phone artwork is showing

  • tom80Htom80H Posts: 2,082Members, Plex Pass Plex Pass

    @gjorgji.d sorry... no idea how to fix this and where to look for details on the network and potential communication issues.
    @evertz: it doesn't appear to be a general issue... working fine for me on my Sony Android TV (latest version Plex, still on Marshmallow for the TV -- thanks Sony :'( ).

  • gdobgdob Posts: 19Members, Plex Pass Plex Pass

    @evertz said:
    I have same issue on Android TV box and Android 7 phones. But on Android 6 phone artwork is showing

    Is that using nginx reverse proxy? The artwork shows on my TV but only if I directly connect to Plex (bypassing the reverse proxy).

  • gdobgdob Posts: 19Members, Plex Pass Plex Pass
    edited January 14 Accepted Answer

    This was either fixed by Plex or was fixed by removing the following headers:

    add_header Strict-Transport-Security "max-age=63072000" always;
    add_header X-Frame-Options SAMEORIGIN always;
    add_header X-Content-Type-Options nosniff always;
    add_header X-XSS-Protection "1; mode=block" always;
    

    The fix happened at the same time when I removed the headers, then I saw the Android TV app updated. :sweat_smile:
    Anyway, it’s working fine now!

    The updated nginx config (tested and working with Android TV, iOS, Roku, Chromecast, Plex Web, PS4, Plex for Sony (Opera TV) and Plexamp):

    server {
        listen 144.xx.xx.xxx:80;
        server_name plex.example.com;
        send_timeout 2h;
    
        location / {
            gzip off;
            add_header X-Robots-Tag none;
            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_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_buffering off;
            proxy_pass http://127.0.0.1:32400;
        }
    }
    
    server {
        listen 144.xx.xx.xxx:443 ssl;
        server_name plex.example.com;
        send_timeout 2h;
    
        ssl_certificate /etc/nginx/ssl/plex.example.com/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/plex.example.com/key.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DES-CBC3-SHA;
        ssl_ecdh_curve P-256;
        ssl_session_timeout 24h;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/ssl/plex.example.com/ca.pem;
        resolver 8.8.8.8 8.8.4.4 valid=300s;
        resolver_timeout 5s;
    
        location / {
            gzip off;
            add_header X-Robots-Tag none;
            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_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_buffering off;
            proxy_pass http://127.0.0.1:32400;
        }
    }
    
  • a3rosola3rosol Posts: 17Members, Plex Pass Plex Pass

    Was it the headers or the update? Having the same problem on Fire TV Stick right now, but don't want to remove the HSTS...

  • gdobgdob Posts: 19Members, Plex Pass Plex Pass

    @a3rosol I have no idea, honestly.

    I was trying to replicate how Plex Cloud servers are configured. They do not pass any additional headers nor they have HSTS enabled, and the SSL ciphers they use are the same on my config (mine are just rearranged). They do not serve content over HTTP/2, only HTTP/1.1.

    As for HSTS, I don’t think you need it unless you’re accessing https://plex.example.com directly in your browser and you want your browser to cache the information that your site is available over encrypted connection. Besides web browsers, I don’t think other Plex clients keep information about HSTS policies.

  • a3rosola3rosol Posts: 17Members, Plex Pass Plex Pass

    @gdob
    This is really annoying me :dizzy: everything about this is weird. movies and shows are played instantly, theme music is played just fine, but once it comes to images, things don't work? urgh. I tried your proposed fix, but that didn't do it for me. Thanks for your help anyway!

  • gdobgdob Posts: 19Members, Plex Pass Plex Pass

    @a3rosol Did you have Secure Connetions set to Preferred and Custom Access URLs set to http://plex.example.com:80,https://plex.example.com:443 on your Plex Media Server along with the config I posted? My PMS works over both unencrypted and encrypted connections. I’m not forcing encrypted connections only.

  • gdobgdob Posts: 19Members, Plex Pass Plex Pass

    I just wish Plex would officially support using reverse proxy. This whole thing feels like a hack.

Sign In or Register to comment.