this post was submitted on 16 Sep 2025
20 points (100.0% liked)

Selfhosted

61475 readers
1200 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

I recently upgraded my setup from an RPi running DietPi to a Beelink 14 (N150) running Proxmox. So far it’s been fun screwing around with it, creating VMs and LXCs, and getting to learn the ways of Proxmox.

My latest obstacle, however, was migrating my Plex setup from the RPi to the Beelink, I have created an unprivileged LXC and setup Plex manually. I know there is a Community Helper Script for it but where is the fun in that.

Anyway, I am trying to enable HW acceleration and can’t seem to passthrough the GPU drivers to the LXC without breaking things (thankfully I have a backup that I always restore to once things break).

I looked up tutorials online that might help but I can’t seem to find anything applicable, mostly people suggest to just use the Community Helper Script and get it over with. There isn’t much I can learn doing it the easy way.

Can anyone suggest to me how to go ahead with this or at least point me in the right direction?

Thank you.

top 10 comments
sorted by: hot top controversial new old
[–] Shadow@lemmy.ca 8 points 11 months ago (1 children)

FWIW I did this with jellyfin and ended up just using a vm instead of lxc. This way I could just pass the entire device through, not have to mess with drivers in my proxmox host, and not have to reboot all my vms/lxc just to apply updates.

[–] modeh@piefed.social 2 points 11 months ago (1 children)

I can do that no issue, simply thought it could be a good learning experience to use LXCs as I have never used them before.

[–] rumba@lemmy.zip 1 points 11 months ago

A wprthy cause, but there's no end of other things to host in LXC. It's possible, but unpleasant and can be brittle for updates.

[–] UnpledgedCatnapTipper@piefed.blahaj.zone 3 points 11 months ago (1 children)

It should be the same process as for Jellyfin, aside from the steps to install or change settings in Jellyfin itself.

https://www.reddit.com/r/Proxmox/comments/1c9ilp7/proxmox_gpu_passthrough_for_jellyfin_lxc_with/

[–] modeh@piefed.social 2 points 11 months ago (1 children)

Will give this a look. Thank you.

Good luck! I struggled immensely with getting it to work in an unprivileged container, especially the bind mounts and their permissions for my media file shares. I ended up giving up and running Jellyfin in a privileged container after a few days of fighting with it.

[–] frongt@lemmy.zip 3 points 11 months ago (1 children)

You could read the script and see what it does.

[–] modeh@piefed.social 1 points 11 months ago

First thing I tried doing, it has the relevant parts for setting up the GPU in case the LXC was privileged, but nowhere do I see how it sets it up in case the LXC was unprivileged.

[–] non_burglar@lemmy.world 1 points 11 months ago* (last edited 11 months ago)
  1. Nesting=1. This isn't about virtualizing inside the container, it allows internal resources to access parent resources.

  2. You should only need the cgroup2 entries, but they should be pointing to the correct devices:

  • cgroup2 entries to allow rwm access to the correct device
  • /dev/dri dir and file entries that specify bind,optional,create

Nvidia example, but quicksync is similar:

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
[–] SanguineBrah@lemmy.sdf.org 1 points 11 months ago

I have an N150 proxmox setup as well. I had to enable iommu in the kernel to get pci-e pass through working (intel_iommu=on).