You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I came across this project because I want to get an idea of what performance I should expect when running jellyfin on my TrueNAS SCALE (Electric Eel with native docker / compose support).
Initially I started off with a bespoke image for this project itself, but was having issues with permissions on /dev/dri. I plan on using the LSIO Jellyfin image, so I figured why not just try that first,
Well, I finally got it working with their docker mod for AMD GPUs, but there's something of a catch. You have to actually let the container start up with their original ENTRYPOINT, which installs a bunch of other libs, scripts, etc. and sets up permissions to get everything working. While not what I originally envisioned (just running a container of the jellybench image, whose ENTRYPOINT is just jellybench), ideally this container shouldn't be run all that often, so if it's a little janky, it's No Big DealTM.
So here's how I do it. All of this assumes you're at least somewhat familiar with docker, and whatever user you're running this as on your SCALE machine has access to docker.
First, the Dockerfile:
FROM ghcr.io/linuxserver/jellyfin:latest RUN apt update \ && apt install -y \ lshw \ python3 \ python3-pip \ python3-venv \ python-is-python3 \ && apt clean \ && rm -rf /var/lib/apt/lists/* ADD --chmod=755 https://github.com/BotBlake/jellybench_py.git /usr/src/jellybench_py WORKDIR /usr/src/jellybench_py # begin hacks; may be unnecessary/broken with future updates# override ffmpeg; just comments out the line to extract the archive, we'll symlink to the included ffmpeg laterRUN sed -e '/unpackArchive(ffmpeg_download\[1\], ffmpeg_files)/s/^/#/' -i jellybench_py/core.py # tidy up results pathRUN sed -i 's|./jellybench_data/{run_dir}|./jellybench_data/results/{run_dir}|' jellybench_py/constant.py # end hacksRUN python -m pip install --break-system-packages /usr/src/jellybench_py RUN bash -c 'mkdir -p /usr/src/jellybench_py/jellybench_data/{ffmpeg,results,videos}'# let's use the ffmpeg that's included with the LSIO imageRUN ln -s /usr/lib/jellyfin-ffmpeg /usr/src/jellybench_py/jellybench_data/ffmpeg/ffmpeg_files
Save this somewhere on your nas as Dockerfile. From that same directory, do the following:
Build the image:
docker build -t jellybench .
Make local data directory (saves time in subsequent runs; you won't have to re-download the video files):
mkdir -p data/{results,videos}
Start the container. Note that this will start jellyfin as well. We aren't providing ports or anything, so it won't be usable, but due to the way LSIO images work, we need to let the original entrypoint do its thing. Also note that I'm using one of their docker mods for jellyfin. Depending on your hardware, you may want to change this:
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
I came across this project because I want to get an idea of what performance I should expect when running jellyfin on my TrueNAS SCALE (Electric Eel with native docker / compose support).
Initially I started off with a bespoke image for this project itself, but was having issues with permissions on
/dev/dri. I plan on using the LSIO Jellyfin image, so I figured why not just try that first,Well, I finally got it working with their docker mod for AMD GPUs, but there's something of a catch. You have to actually let the container start up with their original
ENTRYPOINT, which installs a bunch of other libs, scripts, etc. and sets up permissions to get everything working. While not what I originally envisioned (just running a container of the jellybench image, whoseENTRYPOINTis justjellybench), ideally this container shouldn't be run all that often, so if it's a little janky, it's No Big Deal TM.So here's how I do it. All of this assumes you're at least somewhat familiar with docker, and whatever user you're running this as on your SCALE machine has access to docker.
First, the Dockerfile:
Save this somewhere on your nas as
Dockerfile. From that same directory, do the following:Build the image:
docker build -t jellybench .Make local data directory (saves time in subsequent runs; you won't have to re-download the video files):
mkdir -p data/{results,videos}Start the container. Note that this will start jellyfin as well. We aren't providing ports or anything, so it won't be usable, but due to the way LSIO images work, we need to let the original entrypoint do its thing. Also note that I'm using one of their docker mods for jellyfin. Depending on your hardware, you may want to change this:
As previously mentioned, we have to let the original entrypoint set stuff up. We can use this to see when it's done:
docker logs jellybench --follow 2>/dev/null | grep "Update Plugins Completed"When you see the matching line, hit CTRL+C to stop following the logs.
Then, you can run jellybench, and whatever options you prefer, via
docker exec -it jellybench jellybenchWhen you're done running your tests, stop the container:
docker kill jellybenchBeta Was this translation helpful? Give feedback.
All reactions