Guest plexman Posted August 5, 2017 Share Posted August 5, 2017 I always had my server's services such as Emby running in bare-metal because I did't like the performance loss in VM/Hypervisor, etc (I know it's little, but it's something). But it's true that having all services in the same OS is a pain in the a** because if you need to change or reboot something, everything goes down. In addition I need VAAPI transcoding for my server so I needed direct access to iGPU through /dev/dri/renderD128 device. After reading a lot about LXC containers and the benefits of isolation and bare-metal peformance they have, I decided to change and go containerize everything. So installed Debian Strech in the server with LXC 2.0.8 (only available in testing repositories) and created an Ubuntu 16.04 container just for the Emby server. In order to get VAAPI working inside the Emby container, you need to "pass" the required device (/dev/dri/renderD128) from the host to the container and have all drivers installed in the host system. So let's do it. (I assume you already created a container and Emby and ffmpeg are installed in it) (All commands are ran in the host, not inside the container) Stop your container if it's running: lxc-stop -n containername Get the required drivers in the host (my server is a Skylake i5-6600) by installing vainfo (it will automatically install intel-i915-driver, etc.): apt install vainfo Check that vainfo outputs something like this (run vainfo in the command line): error: can't connect to X server! libva info: VA-API version 0.40.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_40 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.40 (libva ) vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.8.3 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileH264High : VAEntrypointEncSliceLP VAProfileH264MultiviewHigh : VAEntrypointVLD VAProfileH264MultiviewHigh : VAEntrypointEncSlice VAProfileH264StereoHigh : VAEntrypointVLD VAProfileH264StereoHigh : VAEntrypointEncSlice VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileVP8Version0_3 : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice Now we have to pass the /dev/dri/renderD128 device (which is in charge of VAAPI transcoding) to the container. To do so, we'll write a little script who creates the renderD128 device inside the container everytime this one is started. For that we need to know what kind of device we have and it's minor/major numers, so we run: ls -l /dev/dri Output: total 0 drwxr-xr-x 2 root root 80 ago 5 17:18 by-path crw-rw---- 1 root video 226, 0 ago 5 17:18 card0 crw-rw---- 1 root video 226, 128 ago 5 17:18 renderD128 The info we need is: the letter "c" (in crw-rw----) meaning it's a character device and "226 128" which are the major/minor numbers of the device. Let's create the script then, it will be inside your container's directory but you can place it anywhere changing the paths obviously. Run: nano /var/lib/lxc/containername/autodev And copy inside: #!/bin/bash cd ${LXC_ROOTFS_MOUNT}/dev mkdir dri mknod -m 0666 dri/renderD128 c 226 128 Save, exit and give it privileges with: chmod +x /var/lib/lxc/containername/autodev Perfect, now we have to grant container's access to the device and tell him to run the script when the container starts. To do so, you have to edit the container's configuration file. Run: nano /var/lib/lxc/containername/config And add these two lines at the en of the file: lxc.cgroup.devices.allow = c 226:128 rwm lxc.hook.autodev = /var/lib/lxc/containername/autodev The first line will grant container's access to the device and the second line will run the script which will create the device inside the container. That's all! Now you you can start your container again, attach to it, check the /dev/dri directory and you'll find the renderD128 device inside of it. You can now tell Emby to use it as if you where in a host machine! Enjoy LXC! Referece: https://blog.cavebeat.org/2016/02/how-to-create-tuntap-devices-for-lxc-in-proxmoxve-4-1/ Link to comment Share on other sites More sharing options...
Jdiesel 1169 Posted August 5, 2017 Share Posted August 5, 2017 Very cool Link to comment Share on other sites More sharing options...
mastrmind11 717 Posted August 7, 2017 Share Posted August 7, 2017 well done! Link to comment Share on other sites More sharing options...
Luke 38157 Posted August 7, 2017 Share Posted August 7, 2017 Great work ! Link to comment Share on other sites More sharing options...
Guest plexman Posted August 8, 2017 Share Posted August 8, 2017 Thanks to all!! Link to comment Share on other sites More sharing options...
angusleung 6 Posted October 3, 2017 Share Posted October 3, 2017 (edited) Great!! I am using Proxmox 5.0, by following this post I could now enable VAAPI transcoding in LXC container. The only difference is /var/lib/lxc/containername/config will be rewrited overtime when it boot. In stead of changing /var/lib/lxc/containername/config. In Proxmox, I have changed the following file /etc/pve/lxc/containername.conf Edited October 3, 2017 by angusleung 1 Link to comment Share on other sites More sharing options...
thefloppydisk 2 Posted October 3, 2017 Share Posted October 3, 2017 (edited) I use LXD in Ubuntu 16.04 instead of LXC, but this gave me a great start to get it working on my end. Here's what I did to get it working. Update to stable LXD PPA if you you just installed via APT, LXD needs be newer than 2.5 to work sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable sudo apt-get update Update to FFMPEG-3 from this link: http://ubuntuhandbook.org/index.php/2017/05/install-ffmpeg-3-3-in-ubuntu-16-04-14-04/ and point Emby to the correct package in Transcoding settings. Get the required drivers in the host by installing vainfo (it will automatically install intel-i915-driver, etc.): apt install vainfo Verify vainfo is correct Pass GPU into the container sudo lxc config device add <emby-container-name> gpu gpu Add Emby to the Video group sudo usermod -aG video emby Change permissions to assign GPU to video group (if necessary) sudo chmod :video /dev/dri/* In Emby, point VAAPI Hardware Transcoding to /dev/dri/<device>, for me and my Intel GPU, /dev/dri/renderD128 Edited October 3, 2017 by thefloppydisk Link to comment Share on other sites More sharing options...
opticum 1 Posted October 4, 2017 Share Posted October 4, 2017 (edited) for me i had to add this to the .conf of the ubuntu 16.04 lxc container on Proxmox 5 lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file lxc.mount.entry: /dev/dri/controlD64 dev/dri/controlD64 none bind,optional,create=file lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file lxc.cgroup.devices.allow: c 226:* rwm than add permission inside the container sudo usermod -aG video emby is it normal that a file will play with 100% ffmpeg (not sure if this is a lxc specific thing) usage for a couple of minutes? (2-3 minutes), after that i can skip through the video and cpu usage wont go up again. Edited October 4, 2017 by opticum Link to comment Share on other sites More sharing options...
thefloppydisk 2 Posted October 4, 2017 Share Posted October 4, 2017 @@opticum, I have the same FFMPEG spike in my LXD container, but it uses almost no CPU when I'm looking at top compared to software transcoding. Link to comment Share on other sites More sharing options...
opticum 1 Posted October 4, 2017 Share Posted October 4, 2017 @thefloppydisk: testing various files right now (coming from plex), and it seems to vary alot. HEVC seems to use alot of cpu constantly. (using chrome browser for playback), even though it says "direct play" and no transcoding, ffmpeg will eat 50-100% CPU. Link to comment Share on other sites More sharing options...
thefloppydisk 2 Posted October 4, 2017 Share Posted October 4, 2017 @opticum: my transcoding is almost exclusively for Live TV on my server, so it tends to exhibit the same behavior no matter what I watch. Interesting... Link to comment Share on other sites More sharing options...
Guest plexman Posted October 4, 2017 Share Posted October 4, 2017 Check the transcoding log if ffmpeg it's using VAAPI, it can happen that VA driver is not being loaded. In that case I suggest you to install vainfo inside the container. I discovered it recently, it was not working and figured that you need the driver inside the container. Solved it installing another ffmpeg version which installs all required dependencies. ffmepg version: http://ubuntuhandbook.org/index.php/2017/05/install-ffmpeg-3-3-in-ubuntu-16-04-14-04/ Link to comment Share on other sites More sharing options...
opticum 1 Posted October 4, 2017 Share Posted October 4, 2017 @plexman: thanks, did exactly that. When i turn off transcoding it will not even transcode 1 file (with 1 cpu) on this g7 NUC so i supect its working (also ps aux showing that vaapi options are beeing used) Link to comment Share on other sites More sharing options...
fire@emby 2 Posted February 20, 2018 Share Posted February 20, 2018 A short while ago I never heard about Emby whilst searching for a decent (DLNA) media server. After reading the fora and 3 installation attempts it is time to give feedback on how to successfully install Emby in a LXD container with Intel VAAPI hardware accelerated decoding and transcoding. First thought was that I had to do al kind of tweaks to get it to work. This proved to be a false assumption. Yes, you have to prepare your LXD container but Emby for Ubuntu is a complete software bundle. You do not have to (and realy should not) install any other packages! I used Ubuntu-server LTS with standard kernel and LXD. First check if your (Intel) CPU supports hardware acceleration on this site. https://trac.ffmpeg.org/wiki/Hardware/QuickSync grep name /proc/cpuinfo | sort -u > model name : Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz This is a kaby lake CPU capable of hardware acceleration, nice go on... Host installation: My host is a standard ubuntu server installation: lsb_release -a > Ubuntu 16.04.3 LTS uname -a > Linux server 4.4.0-112-generic #135-Ubuntu SMP Fri Jan 19 11:48:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux lxd –version > 2.0.11 I wont explain how to use LXD but first create a clean container with network capabilities: lxc launch CleanU1604 Emby-container Next add your multimedia share to Emby-container on host. lxc config device add Emby-container md1 disk source=/path/to/my/movies path=/path/inside/container/with/movies Add a “temp” share to Emby-container on host. I do this because my host and the containers are installed on a SSD drive. Caching files on this tmp-share will place these files on a “normal” large disk. lxc config device add Emby-container md2 disk source=/path/to/emby-tmp path=/path/inside/container/emby-tmp Now it is time to pass the hardware video device from the host to the container. This is an essential step for VAAPI. First list the devices on the host with: ls -al /dev/dri > crw-rw---- 1 root video 226, 0 Jan 27 23:03 card0 > crw-rw---- 1 root video 226, 64 Jan 27 23:03 controlD64 > crw-rw---- 1 root video 226, 128 Jan 27 23:03 renderD128 Only the render device is required for VAAPI. Add device D128 to the new container (note your device might have a different name): lxc config device add Emby-container /dev/dri/renderD128 unix-char path=/dev/dri/renderD128 Set the GID correct to “video” for the container: lxc config device set Emby-container /dev/dri/renderD128 gid 44 Next download the latest stable Emby installer and place it in your shared movie drive. This way it is accessible from within the new container. Wait with the installation. Restart the container: lxc restart Emby-container Open a terminal session to the container: lxc exec Emby-container -- /bin/bash Container installation: Update the container: apt-get update apt-get upgrade Now install Emby: dpkg -i emby-server-deb_3.2.70.0_amd64.deb Add user emby to the “video” group: sudo usermod -aG video emby Exit back to the host: exit Restart the container for the last time: lxc restart Emby-container Now the installation is done. No other packages are required inside the new container. Configure the new Emby server. Open a web browser: Container-IP:8096 Make sure to point all paths for temp and metadata files to /path/inside/container/emby-tmp Set hardware acceleration to VAAPI and choose /dev/dri/renderD128 as VAAPI device in the transcode settings. Thats it, enjoy Emby! Does it all work? Yes, VAAPI is used for decoding and transcoding. The standard quality is great on my HD screens and the hardware acceleration saves CPU load. This way the media server has less impact my other LXD containers. 1 Link to comment Share on other sites More sharing options...
Luke 38157 Posted February 20, 2018 Share Posted February 20, 2018 Great info, thanks ! Link to comment Share on other sites More sharing options...
loomes 40 Posted June 2, 2018 Share Posted June 2, 2018 My New Server is a Intel Nuc7i5 with Proxmox5.2 as Host OS. To get the Intel GPU to a LXC Container with running Debian is very simple. On the Proxmox Host: apt install vainfo and all the proposed Packages, check with "vainfo" that its working. Shutdown the Emby lxc and add to config from the lxc: lxc.cgroup.devices.allow = c 226:128 rwmlxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file Startup lxc, activate VAAPI in Emby (newest Stable version) and all is fine 1 Link to comment Share on other sites More sharing options...
Luke 38157 Posted June 2, 2018 Share Posted June 2, 2018 Thanks for the feedback ! Link to comment Share on other sites More sharing options...
esseki 12 Posted January 30, 2020 Share Posted January 30, 2020 (edited) Hi, reviving this topic as after many years using Emby on a dedicated server running with Windows I decided to replace it with a new mini server running with Linux after reading this whole thread full of promises. I did not want to lose HW transcoding capability this is one of the reason why it took me so long to switch from Windows to Linux. And now here we are. I did the switch but I can't get HW transcoding working with my new install. I might be doing something wrong considering how many successes I can read in this thread. Any help or support will be much appreciated Few info about my new setup : CPU is Intel Core i5-8265U 8th Generation Whiskey Lake with Intel Graphics UHD 620 (https://ark.intel.com/content/www/fr/fr/ark/products/149088/intel-core-i5-8265u-processor-6m-cache-up-to-3-90-ghz.html) Host OS installed is Proxmox 6.1-5 Guest OS Debian 10 running in a LXC container Emby 4.3.1.0 for Debian Here is what I did On the Proxmox Host # apt install vainfo # vainfo error: can't connect to X server! libva info: VA-API version 1.4.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_4 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.4 (libva 2.4.0) vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileH264High : VAEntrypointEncSliceLP VAProfileH264MultiviewHigh : VAEntrypointVLD VAProfileH264StereoHigh : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD # ls -la /dev/dri/ total 0 drwxr-xr-x 3 root root 100 Jan 28 21:42 . drwxr-xr-x 20 root root 4620 Jan 30 15:55 .. drwxr-xr-x 2 root root 80 Jan 28 21:42 by-path crw-rw---- 1 root video 226, 0 Jan 28 21:42 card0 crw-rw---- 1 root render 226, 128 Jan 28 21:42 renderD128 # nano /etc/pve/lxc/102.conf #added these two lines at the end lxc.cgroup.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file In the Emby LXC container running Debian # apt-get update # apt-get upgrade # wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.3.1.0/emby-server-deb_4.3.1.0_amd64.deb # dpkg -i emby-server-deb_4.3.1.0_amd64.deb # sudo usermod -aG video emby # ls -la /dev/dri/total 0 drwxr-xr-x 2 root root 60 Jan 30 15:04 . drwxr-xr-x 7 root root 480 Jan 30 15:04 .. crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128 We can see with the latest command that the iGPU has been properly passthrough to the LXC container but my problem is that when I start to transcode a file (from HEVC to H264) the transcoding is done in software and not using the iGPU. Am I missing something ? @@loomes your setup is the most similar to mine and it seems that you succeeded quite easily. Can you spot something wrong in my settings ? Thanks a lot in advance for any help Edited January 30, 2020 by esseki Link to comment Share on other sites More sharing options...
loomes 40 Posted January 30, 2020 Share Posted January 30, 2020 Hmm your render device has wrong group i think: crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128 By me it looks: crw-rw---- 1 root render 226, 128 Dez 4 13:33 renderD128 Link to comment Share on other sites More sharing options...
esseki 12 Posted January 30, 2020 Share Posted January 30, 2020 (edited) Thank you so much @@loomes you solved the problem I was struggling with for the last two nights. chown root:render /dev/dri/* simply did the trick. To summarize and in case somebody would be interested in replicating what I did (with the latest and updated version of Proxmox, Debian and Emby compared to the previous post in this thread that are a couple of years old now), here is a step by step procedure (considering that you have Proxmox installed with a LXC container running Debian 10) : On the Proxmox 6.1 Host # apt install vainfo # vainfo error: can't connect to X server! libva info: VA-API version 1.4.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_4 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.4 (libva 2.4.0) vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileH264High : VAEntrypointEncSliceLP VAProfileH264MultiviewHigh : VAEntrypointVLD VAProfileH264StereoHigh : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD # ls -la /dev/dri/ total 0 drwxr-xr-x 3 root root 100 Jan 28 21:42 . drwxr-xr-x 20 root root 4620 Jan 30 15:55 .. drwxr-xr-x 2 root root 80 Jan 28 21:42 by-path crw-rw---- 1 root video 226, 0 Jan 28 21:42 card0 crw-rw---- 1 root render 226, 128 Jan 28 21:42 renderD128 # nano /etc/pve/lxc/102.conf #added these two lines at the end lxc.cgroup.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file In the Emby LXC container running Debian 10 # apt-get update # apt-get upgrade # wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.3.1.0/emby-server-deb_4.3.1.0_amd64.deb # dpkg -i emby-server-deb_4.3.1.0_amd64.deb # sudo usermod -aG video emby # ls -la /dev/dri/total 0 drwxr-xr-x 2 root root 60 Jan 30 15:04 . drwxr-xr-x 7 root root 480 Jan 30 15:04 .. crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128 # chown root:render /dev/dri/* # ls -la /dev/dri/total 0 drwxr-xr-x 2 root root 60 Jan 30 20:14 . drwxr-xr-x 7 root root 480 Jan 30 20:14 .. crw-rw---- 1 root render 226, 128 Jan 28 20:42 renderD128 Then restart Emby server and everything will work fluently ! I love Emby and its community Edited January 30, 2020 by esseki 1 Link to comment Share on other sites More sharing options...
Luke 38157 Posted January 30, 2020 Share Posted January 30, 2020 Great job, thanks for the info ! Link to comment Share on other sites More sharing options...
loomes 40 Posted January 31, 2020 Share Posted January 31, 2020 Link to comment Share on other sites More sharing options...
plaidstallion 9 Posted March 21, 2021 Share Posted March 21, 2021 (edited) On 1/30/2020 at 9:26 PM, esseki said: # apt-get update # apt-get upgrade # wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.3.1.0/emby-server-deb_4.3.1.0_amd64.deb # dpkg -i emby-server-deb_4.3.1.0_amd64.deb # sudo usermod -aG video emby # ls -la /dev/dri/total 0 drwxr-xr-x 2 root root 60 Jan 30 15:04 . drwxr-xr-x 7 root root 480 Jan 30 15:04 .. crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128 # chown root:render /dev/dri/* # ls -la /dev/dri/total 0 drwxr-xr-x 2 root root 60 Jan 30 20:14 . drwxr-xr-x 7 root root 480 Jan 30 20:14 .. crw-rw---- 1 root render 226, 128 Jan 28 20:42 renderD128 Then restart Emby server and everything will work fluently ! I love Emby and its community Just for some more perspective, in the newest version of proxmox (6.3-6) GID 108, while correctly assigned to the group `render` in Proxmox's Debian hypervisor backend, is associated with a group named `postfix` in the template for Ubuntu 20.10 LXC where I am now running Emby in a Docker container with the iGPU passed through once more. I changed the GID of `postifx` from 108 to something unused (117), after looking at all groups with `less /etc/group', using the following command: groupmod -g 117 postfix Then I changed the GID of `render` to 108, the same as in the Hypervisor: groupmod -g 108 render Finally, I changed group `postifx` to the GID of what `render` was using (107) groupmod -g 107 postfix I hadn't thought to do a `chown` because I figured the way it's all called during container start that it could get reset. I don't know if that is the case or not but figured I would share an alternate method if anyone was interested. Edit: Also, if anyone else is looking to run Emby in a docker container inside an LXC in Proxmox, make sure to add the following to /etc/pve/lxc/<containerid>.conf features: keyctl=1,nesting=1 along with the other two lines mentioned above lxc.cgroup.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file I also had to remove apparmor from the LXC template using the instructions here: https://www.simplified.guide/ubuntu/remove-apparmor I used a privileged LXC but with the other fix listed here: https://discuss.linuxcontainers.org/t/working-install-of-docker-ce-in-lxc-unprivileged-container-in-proxmox/3828 I think it could be done in an unprivileged container. Other than that, I just installed Docker-CE inside the LXC as per the official documentation: https://docs.docker.com/engine/install/ubuntu/ Edited March 23, 2021 by plaidstallion 2 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now