Is TrueNAS based on Linux now instead of FreeBSD?
TrueNAS Scale is their project to create a Linux based NAS using KVM for virtual machines and containers using Kubernetes.
This is an alpha version I’m running.
I'm also in the process of setting up a TN scale box. Where you able to get hardware transcoding working? I'm hoping to use quicksync like I do with plex.
Anybody get this working on Scale yet? I've been able to install it. But, I haven't been able to access it from a browser. I don't know if the networking is broken, if the app is running as intended or what.
Running in Scale here now. I posted directions in the Playground section. I hope it helps.
Thanks for taking time to post. For reference, I found your installation steps.
It seems you didn't install it as an app, which could lead to unforeseen issues, possibly performance related like you saw. You basically treated TrueNAS as any Debian install and set it up as a Docker. I would prefer to stay within the TrueCharts App wizard.
My issue atm seems to be network related. I can't be certain that Channels is running correctly, but it appears to be installed just looking at TrueCharts App. For example:
So, I will keep fiddling. But, thanks for your time.
I did not think Channels was in Truecharts yet like your image shows. The last time I looked it was not there. Looking this morning, its not there that I can find.
I would have preferred to make it work as a Docker app but have yet to be able to. I did get Channels to work in TrueNas Core by using the available jail app.
Installing it as a Debian app seemed the best way to go for Truenas when there are no instructions. I don't understand Docker stuff at all and there is little to no Docker instructions for Channels. I gave up after many tries using Portainer on Fedora Linux. Its just a pain. If people are making it work as a Docker app, they aren't helping any one.
Good luck! I will edit my instructions if I can to make sure people know its not a Docker app.
No. It's not an app, but it should be. On the Apps "page", there's a button to install a Docker. That's what I've been using. It provides a "form" or a "wizard" to fill out. I feel like I'm close, but I don't believe I'm populating the "wizard" correctly. So, it's showing up like the screenshot, but I can't access it. That could be because I'm not properly launching the entry point in the container or I just don't have the IP set up correctly.
I'm new to Docker, too. I like the concept. So, I have recently started using some Docker containers elsewhere on other boxes, So, I don't know Docker either. I believe I'll get the hang of it. It just takes time. Solving problems like this is one way I learn.
I've been doing some additional reading since I replied to you. I saw something on the Discord channel today about a docker-compose app that might be able to read the yml file. I'm at work now, so, I'll try to take a few minutes when I get home to try it. I believe the way it works is that you use it as a template and then rename it from docker-compose to whatever you need.
EDIT: Also, another option that I have considered but am trying to avoid is to install another Linux as a VM and then set up docker there. But, I want to stick with containers as I believe the memory and cpu would only be tied up when the container was actually busy, as opposed to, tying up CPU cores, threads and memory all the time. I'm unclear whether those resources become unavailable to host OS when they are defined for the VM. But, the TrueNAS documentation says this: "TrueNAS assigns a portion of system RAM and a new zvol to each VM. While a VM is running, these resources are not available to the host computer or other VMs." which sounds to me like resources are tied up.
EDIT2: There's a "Launch Docker" button on the Apps screen. I tried to get the docker-compose to work. But, I never could. But, using the "Launch Docker" button got it installed. I can browse to my new instance in browser. I feel pretty sure it work okay. But, I haven't migrated my current install because I'm not quite ready to flip the switch to my new server. But, I'll post back once I have a chance to confirm it works as expected. Meanwhile, if you're looking for help, start with the "Launch Docker" button.
So just an update to this its now a TrueCharts app which makes the install even easier I now have it running but its still not working with hardware transcoding. I ran the two permissions commands from the hardware transcoding FAQ post. I was running version 2023.09.15.0559 but also had it pull the beta 2023.10.01.0552 other than that things are working well. Here is the debug info so it still looks like a rights problem.
amf
fork/exec /channels-dvr/2023.10.01.0552/ffmpeg-dl: no such file or directory
nvenc
fork/exec /channels-dvr/2023.10.01.0552/ffmpeg-dl: no such file or directory
vaapi@/dev/dri/card0
no such file or directory
vaapi@/dev/dri/renderD128
no such file or directory
vaapi@/dev/dri/renderD129
no such file or directory
vaapi@/dev/renderD128
no such file or directory
Does this exist and has it been exposed to the container?
root@truenas[/dev/dri]# ls
by-path card0 renderD128
root@truenas[/dev/dri]#
Its there but now I need to figure out how to give the container access to it... I thought the other commands did that but maybe I missed something
These are the commands I tried maybe I did them wrong?
I just tried them again and see the following
root@truenas[~]# sudo adduser $(id -u -n) video
The user root' is already a member of
video'.
root@truenas[~]# sudo adduser $(id -u -n) render
The user root' is already a member of
render'.
I did all of this through the main terminal interface, trying to do the same commands through the PODs shell fail due to not having sudo rights
Did you ever get the access?
My TrueNAS Scale had /dev/dri/renderD128 but it is not visible in the container.
When you create the container, pass --device /dev/dri
on the command line when creating it to give the container access to the device. Or if they use some UI when creating the container, add the path as a device.
(Edited per post below.)
isn't -d
for --detach
?
thought devices were --device
like --device /dev/dri:/dev/dri
I think you may be right. (I always use the long options to keep my scripts legible, and never use the detach option.)
Just checking in on this, has anyone been able to pass through hardware decoding? Trying to decide whether to do my next build with TrueNAS scale on bare metal or put it in Proxmox.
There are plenty of youtube videos that show how to bass the GPU from Proxmox to VMs
For the more-than-a-little technically inclined, Proxmox is something special. So, I'd say yes -- virtualize it, especially if you're running it on a decent hardware platform.
Proxmox is a its best when resources aren't monopolized, but rather are shared, and this is best done with LXC containers. There are times when VMs are the only solution, but where possible CTs are preferred. In addition, when passing resources through, typically you don't want that resource dedicated to a single virtualization.
Unfortunately, much of the of what you'll find on YouTube or through other Googling is inaccurate, incomplete or outdated -- especially if you want to run Channels DVR in an unprivileged container, with hardware transcoding available (but not exclusive) to the container.
There are differences in how to approach this depending on the hardware you're using, so rather than laying out all the options here, the answer to your question is yes.
Here's Channels DVR running as a Docker container, in an unprivileged Proxmox LXC, with Intel QuickSync passed through:
intel-gpu-top - 275/ 275 MHz; 0% RC6; 1.11 Watts; 645 irqs/s
IMC reads: 1136 MiB/s
IMC writes: 641 MiB/s
ENGINE BUSY MI_SEMA MI_WAIT
Render/3D/0 13.69% |███████████▉ | 7% 0%
Blitter/0 0.80% |▋ | 0% 0%
Video/0 6.20% |█████▍ | 0% 0%
VideoEnhance/0 7.70% |██████▋ | 2% 0%
Thanks guys, I do know Proxmox is easy enough to pass through on -- was looking for news specifically on the ability to do this with TrueNAS.
TrueNAS Scale is just Linux, and programs are basically just Docker containers. When you create your container for Channels, you should be able to pass in your device in the same manner: --device /dev/dri:/dev/dri
(or whichever device file represents your GPU).