Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLUGIN] Stream Viewer

Featured Replies

still nothing

Screenshot 2026-04-08 234214.png

  • Replies 102
  • Views 3.5k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • NachoServer
    NachoServer

    Dude, love the plugin, thanks for all the awesome work! Easy to setup, miles ahead of the previous deprecated plugin I was using, and looking forward to checking out the stats after I have some data

  • Lazaros Chalkidis
    Lazaros Chalkidis

    Hello @NachoServer, thanks for the kind words, really appreciate it! Yes, the server name badge color was changed intentionally in this update. It used to match the server type color (orange for Plex,

  • Hello @Lazaros Chalkidis , thank's for this plugin. Working fine and easy to configure. Just a detail, I'm french and I noticed that a character (quote) is not shown correctly:

Posted Images

  • Author

I think I found the issue. Can you quickly run:

php -r "var_dump(realpath('/mnt/user/appdata/Stream-Viewer'));"

3 minutes ago, Lazaros Chalkidis said:

I think I found the issue. Can you quickly run:

php -r "var_dump(realpath('/mnt/user/appdata/Stream-Viewer'));"

Screenshot 2026-04-08 234853.png

  • Author

That's the bug. Your system resolves the path to /mnt/app_data/ instead of /mnt/user/ which fails a security check in the plugin. I'll fix this in the next update.

For now there's a quick workaround. What path does your Docker appdata actually use? Check with:

cat /boot/config/docker.cfg | grep DIR

1 minute ago, Lazaros Chalkidis said:

That's the bug. Your system resolves the path to /mnt/app_data/ instead of /mnt/user/ which fails a security check in the plugin. I'll fix this in the next update.

For now there's a quick workaround. What path does your Docker appdata actually use? Check with:

cat /boot/config/docker.cfg | grep DIR

that didnt output anything for me but i put all my appdata on ssds in raid 1 seperate for everything else so it would be /mnt/app_data/appdata/

it would still show as /mnt/user/appdata

Screenshot 2026-04-08 235714.png

  • Author

That confirms it. The path is correct but PHP resolves it through the FUSE layer to your actual SSD pool which was failing a security check. The fix is ready and will be in the next update. No need to change anything on your end, it will just work after the update.

Thanks for taking the time to troubleshoot this with me, it helped improve the plugin for everyone with custom pool setups.

2 minutes ago, Lazaros Chalkidis said:

That confirms it. The path is correct but PHP resolves it through the FUSE layer to your actual SSD pool which was failing a security check. The fix is ready and will be in the next update. No need to change anything on your end, it will just work after the update.

Thanks for taking the time to troubleshoot this with me, it helped improve the plugin for everyone with custom pool setups.

no worries thanks for the plugin!!

I had an issue with my mounts/shares not coming up since today (I shutdown my server each night and start every morning).

I get errors like this in syslog, nothing else obvious I can spot;

Apr 10 09:05:50 GotGeeks emhttpd: error: malloc_share_locations, 8649: Operation not supported (95): getxattr: /mnt/user/appdata

Clearly a symptom of the array not coming up properly, not a cause.

Rebooted to safe mode, and all was fine (sigh of relief :)). Removed this plugin and started normal mode again and everything was restored.
I only have a syslog of this happening (with as far as I can tell has nothing problematic, except for the error above), since I rebooted the server (and this was the only log I pulled before).

So not 100% positive this plugin is to blame...

Edited by joz

  • Author

Hey @joz, you were right, this was caused by the plugin.

The poll daemon was starting during boot before user shares were fully mounted, which interfered with share initialization.

This is fixed in v2026.04.10. The daemon no longer starts from the plugin install script. Instead it uses Unraid's event system and only starts after the array is fully up and shares are properly mounted.

Also added automatic cleanup for any orphaned directories left behind from failed boots.

Update through Community Applications and let me know if the issue is resolved on your end.

Thanks for reporting this, it was a tricky one.

  • Author

v2026.04.12 is out

Bug Fixes

Fixed poll daemon not restarting after a live plugin update. The daemon now auto-starts if the array is already running, so a reboot is no longer needed after updating.

New Features

Dashboard Widget:

Time remaining indicator next to progress bar (e.g. "47m left", "1h 12m left")

Resolution conversion in transcode badge (e.g. "TRANSCODE 1080p > 720p 2.4x")

Last activity display when no streams are active (e.g. "Last stream 2h ago by user - Movie Title")

Statistics - Graphs tab (10 new charts):

Plays by day of week

Monthly plays (always displays all 12 months)

Top devices and platforms

Library activity (plays per server and content type)

Concurrent streams per day (peak simultaneous streams)

Source resolution distribution

Stream resolution distribution

Watch completion histogram (0-25%, 25-50%, 50-75%, 75-100%)

Plays by country (GeoIP lookup via ip-api.com)

Top locations by city

Improvements

Standardized bar chart thickness across all graphs to match Peak viewing hours

Improved footer timestamp styling and readability

Increased progress bar width by 20%

Fixed Cancel button sizing and alignment in Plex OAuth sign-in flow

  • 4 weeks later...

hi great plugin! been using since the older plex streams doesnt seem to work well. and the dynamix doesnt have updates anymore.

just a little picky, cause its been nagging on my ocd. haha. the font is not bold as the others in the plugin section

image.png

also, is it possible to implement a stream viewer in the streams viewer statistics ( tools > stream viewer statistics ) as well?
like all the current playing streams in a bigger view, everything in one place.

again, thank you for the great plugin!

image.png

  • Author

Hello @i1mran92.

Thanks for the kind words, really glad Stream Viewer's been useful!

Good catch on the bold font in the plugin list, that's a small bug on my side. I'll get it sorted in the next release so it shows properly alongside the others.

On the live streams view inside Stream Viewer Statistics, that's a great idea. Having the active sessions next to the historical stats in one place would tie things together nicely. I'll add it to the roadmap and figure out the cleanest layout when I get to it, probably either a dedicated Live tab or an active streams panel at the top of the dashboard.

Appreciate the feedback, this is exactly the kind of input that helps the plugin get better.

3 hours ago, Lazaros Chalkidis said:

Hello @i1mran92.

Thanks for the kind words, really glad Stream Viewer's been useful!

Good catch on the bold font in the plugin list, that's a small bug on my side. I'll get it sorted in the next release so it shows properly alongside the others.

On the live streams view inside Stream Viewer Statistics, that's a great idea. Having the active sessions next to the historical stats in one place would tie things together nicely. I'll add it to the roadmap and figure out the cleanest layout when I get to it, probably either a dedicated Live tab or an active streams panel at the top of the dashboard.

Appreciate the feedback, this is exactly the kind of input that helps the plugin get better.

3 hours ago, Lazaros Chalkidis said:

Hello @i1mran92.

Thanks for the kind words, really glad Stream Viewer's been useful!

Good catch on the bold font in the plugin list, that's a small bug on my side. I'll get it sorted in the next release so it shows properly alongside the others.

On the live streams view inside Stream Viewer Statistics, that's a great idea. Having the active sessions next to the historical stats in one place would tie things together nicely. I'll add it to the roadmap and figure out the cleanest layout when I get to it, probably either a dedicated Live tab or an active streams panel at the top of the dashboard.

Appreciate the feedback, this is exactly the kind of input that helps the plugin get better.

great! really looking forward to the next big update!

thank you again for the great pluginhi.,

On 5/11/2026 at 1:59 PM, Lazaros Chalkidis said:

Hello @i1mran92.

Thanks for the kind words, really glad Stream Viewer's been useful!

Good catch on the bold font in the plugin list, that's a small bug on my side. I'll get it sorted in the next release so it shows properly alongside the others.

On the live streams view inside Stream Viewer Statistics, that's a great idea. Having the active sessions next to the historical stats in one place would tie things together nicely. I'll add it to the roadmap and figure out the cleanest layout when I get to it, probably either a dedicated Live tab or an active streams panel at the top of the dashboard.

Appreciate the feedback, this is exactly the kind of input that helps the plugin get better.



hi @Lazaros Chalkidis

just an update, i'm not sure why the plex server keep saying unreachable. is there anything i can do to try and resolve this?
i keep needing to sign in with plex everytime this happens. it will work the first time i click sign in, but eventually it says unreachable. thanks!

image.png

  • Author

Hey @i1mran92, the badge lights up when SV cannot get a clean response from your Plex server, but without seeing the exact error it would be guessing. The reason re-auth temporarily fixes it is that the sign-in flow also re-runs Plex discovery and picks a fresh server URL, so whatever the real cause is, the new sign-in masks it for a while.

The most useful thing you can do is run one command the next time the badge shows unreachable, from the terminal:

TOKEN=$(grep -oP 'SERVER1_TOKEN="?\K[^"]+' /boot/config/plugins/streamviewer/streamviewer.cfg)
URL=$(grep -oP 'SERVER1_URL="?\K[^"]+' /boot/config/plugins/streamviewer/streamviewer.cfg)
echo "URL: $URL"
time curl -v -m 10 -k -H "X-Plex-Token: $TOKEN" "$URL/status/sessions" 2>&1 | grep -E "^[<>*]|HTTP|real" | head -30

Post the output here (the token is stripped, the URL is safe to share). Depending on what comes back we will know whether it is a slow response under load, a stale URL pointing at the wrong IP, a revoked token, or the Plex container being down at that moment. Each of those has a different fix and right now we cannot tell them apart.

If the badge clears before you get a chance to run it, no worries, just catch the next occurrence.

1 hour ago, Lazaros Chalkidis said:

Hey @i1mran92, the badge lights up when SV cannot get a clean response from your Plex server, but without seeing the exact error it would be guessing. The reason re-auth temporarily fixes it is that the sign-in flow also re-runs Plex discovery and picks a fresh server URL, so whatever the real cause is, the new sign-in masks it for a while.

The most useful thing you can do is run one command the next time the badge shows unreachable, from the terminal:

TOKEN=$(grep -oP 'SERVER1_TOKEN="?\K[^"]+' /boot/config/plugins/streamviewer/streamviewer.cfg)
URL=$(grep -oP 'SERVER1_URL="?\K[^"]+' /boot/config/plugins/streamviewer/streamviewer.cfg)
echo "URL: $URL"
time curl -v -m 10 -k -H "X-Plex-Token: $TOKEN" "$URL/status/sessions" 2>&1 | grep -E "^[<>*]|HTTP|real" | head -30

Post the output here (the token is stripped, the URL is safe to share). Depending on what comes back we will know whether it is a slow response under load, a stale URL pointing at the wrong IP, a revoked token, or the Plex container being down at that moment. Each of those has a different fix and right now we cannot tell them apart.

If the badge clears before you get a chance to run it, no worries, just catch the next occurrence.


Hey @Lazaros Chalkidis , thanks for the fast response!
so it happen again. when i replied earlier i just click to sign in with plex again, and it became unreachable just now.

here's the output from unraid terminal.



root@Vault:~# TOKEN=$(grep -oP 'SERVER1_TOKEN="?\K[^"]+' /boot/config/plugins/streamviewer/streamviewer.cfg)

URL=$(grep -oP 'SERVER1_URL="?\K[^"]+' /boot/config/plugins/streamviewer/streamviewer.cfg)

echo "URL: $URL"

time curl -v -m 10 -k -H "X-Plex-Token: $TOKEN" "$URL/status/sessions" 2>&1 | grep -E "^[<>*]|HTTP|real" | head -30

URL: https://175-137-221-159.7e799ac6f1ce4d88992940d95ad117c2.plex.direct:32400

* Host 175-137-221-159.7e799ac6f1ce4d88992940d95ad117c2.plex.direct:32400 was resolved.

* IPv6: (none)

* IPv4: 175.137.221.159

* Trying 175.137.221.159:32400...

* Connection timed out after 10002 milliseconds

* closing connection #0

real 0m10.009s

user 0m0.006s

sys 0m0.003s

image.png

thanks for having a look at it!

Edited by i1mran92

  • Author

@i1mran92, thanks for the output, that gave me what I needed.

The URL saved on your end resolves to your public IP, so SV was reaching Plex by going out to your router and looping back in. That round trip is unstable under load, which is the 10 second timeout you were hitting.

The root cause is on my side. When you signed in with Plex, the connection picker preselected a remote URL even though a local one was available. I am pushing a fix shortly that addresses this specific case. Will post here when it is up.

11 hours ago, Lazaros Chalkidis said:

@i1mran92, thanks for the output, that gave me what I needed.

The URL saved on your end resolves to your public IP, so SV was reaching Plex by going out to your router and looping back in. That round trip is unstable under load, which is the 10 second timeout you were hitting.

The root cause is on my side. When you signed in with Plex, the connection picker preselected a remote URL even though a local one was available. I am pushing a fix shortly that addresses this specific case. Will post here when it is up.

@Lazaros Chalkidis glad i could help abit. will wait for the new update. thank you!

  • Author

v2026.05.14 is out

Bug Fixes

Plex local plex.direct hostnames were being treated as remote, breaking the auto-rediscover logic for OAuth-configured servers

Widget RAM stat for media containers was inflated by file cache; now reports real working-set memory matching the Unraid dashboard

Emby/Jellyfin transcode reason badges showed garbled text like "Audio $2odec $2ot $2upported" instead of "Audio Codec Not Supported"

Light/dark theme detection treated Azure as light and forgot Gray entirely. All four official Unraid themes (Black, White, Azure, Gray) now render with the correct contrast

New Features

OAuth discovery detects Plex containers running on the same Unraid host and offers their direct LAN address as a top-priority "Local Container" option in the connection dropdown

Settings page shows a one-click "Switch to local" banner when a configured Plex server is reachable as a local container but stored with a non-local URL

Stop stream confirmation and Reset to defaults notification now use styled in-plugin modals instead of the native browser dialogs

Improvements

- Credits modal redesigned to match the Logs Viewer layout

Note: the next update will be focused on the Statistics page, with new features and improvements. It's going to be a big one, so it may take a bit longer to land.

  • Author

v2026.05.20 is out

Bug Fixes

Statistics page was being constrained by Unraid's main content container width, leaving large gutters on 2K and 4K monitors.

New Features

New Active Stream/s tab in statistic page

Bandwidth chart per stream card.

New "Network bandwidth capacity" setting in Widget settings controls the ceiling of the Total BW bar in the footer

Statistics retention dropdown gains an "Unlimited" option (sentinel value 0) that disables the daily prune entirely

New "Erase data on uninstall" toggle in Statistics settings (default off).

New "Wipe statistics database" button in Statistics settings

Improvements

"Show Docker stats" description changed from "CPU/RAM in footer" to "CPU/RAM/Total BW in footer"

Screenshots

widget1.png

widget-full.png

Active1.png

In the new version, I can't see the entire dashboard and settings.

Auswahl_054.png

Auswahl_055.png

  • Author
1 hour ago, Thorsten said:

In the new version, I can't see the entire dashboard and settings.

Auswahl_054.png

Auswahl_055.png

A new update will be out shortly with a fix for this issue.

  • Author

v2026.05.20a is out

Bug Fixes

Fix width on settings and statistics pages

  • Author
6 minutes ago, Eisi2005 said:

I'm kind of at a loss right now—how am I supposed to install this? When I go to the Apps section and search for it, it doesn't show up.

unraid.jpg

Stream Viewer is a plugin, not a Docker container. In Community Applications, make sure you're either on the "All" or "Plugins" category, not filtering for Docker containers only.

Thanks for this great tool. I have a question about the dashboard view. In the “Most Watched” view, it seems that if you pause a movie or TV show while watching it and then resume it, it shows up as having been watched three times instead of once. But in reality, only one person actually watched that episode. Is there any way to work around this? I hope you understand what I mean?

stream viewer.jpg

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.