{"id":1,"date":"2026-05-02T11:54:35","date_gmt":"2026-05-02T11:54:35","guid":{"rendered":"https:\/\/rosenberger.st\/?p=1"},"modified":"2026-05-03T20:05:44","modified_gmt":"2026-05-03T18:05:44","slug":"hello-world","status":"publish","type":"post","link":"https:\/\/rosenberger.st\/index.php\/2026\/05\/02\/hello-world\/","title":{"rendered":"Using Proxmox Host to run an LCX Container as Plex Server with working hardware transcoding"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This blog post is a guide to install a Plex server on an Proxmox LCX Container with working hardware transcoding.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Background<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Until changing to this setup, i ran my Plex Server on my Synology NAS. It was gettings slower and slower as my library grows also there is an NAS update in planning in near future, so moving the Plex Server to another hardware was the logical choice.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">My setup<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">AceMagic Vista Mini V1<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Intel N150 Processor<\/li>\n\n\n\n<li>16 GB DDR4 RAM<\/li>\n\n\n\n<li>512 GB NVMe Harddrive<\/li>\n\n\n\n<li>Proxmox 9.x (at the time of writing: 9.1.9)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Guide<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Assumptions<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">This guide asumes, that you already have an up and running Proxmox system.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Downloading the CT template<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Goto your storage (local or external) and choose CT Templates. Next click on &#8220;Templates&#8221; and search for debian-13. Select the debian-13-standard template  and download it to your storage.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"411\" src=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_download_debian-13_lxc_template-1024x411.png\" alt=\"\" class=\"wp-image-18\" srcset=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_download_debian-13_lxc_template-1024x411.png 1024w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_download_debian-13_lxc_template-300x120.png 300w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_download_debian-13_lxc_template-768x308.png 768w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_download_debian-13_lxc_template-1200x481.png 1200w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_download_debian-13_lxc_template.png 1209w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Download Debian 13 LXC template<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Create the container<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Click on the &#8220;Create CT&#8221; button top right of the Proxmox webinterface. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set a hostname and password<\/li>\n\n\n\n<li>Important: uncheck the &#8220;unprivilidged container&#8221; checkbox<\/li>\n\n\n\n<li>Choose the Debian 13 template you downloaded in the step before<\/li>\n\n\n\n<li>allocate at least 40 GB of disk space<\/li>\n\n\n\n<li>allocate as many cores as you whish (i assigned2)<\/li>\n\n\n\n<li>assign memory as you wish (i assigned 6144 MB)<\/li>\n\n\n\n<li>setup the network\/DNS as needed for your infrastructure<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Setup repositories and install packages<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">After creating the container and starting it, install the latest updates and some tools.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sduo apt update\nsudo apt install curl gnupg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Open \/etc\/apt\/sources.list and check if all required repositories exist. Add missing ones.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">deb http:\/\/deb.debian.org\/debian trixie main contrib non-free non-free-firmware                                                                                                                                                                                                     deb http:\/\/deb.debian.org\/debian trixie-updates main contrib non-free non-free-firmware                                                                                                                                                                                             deb http:\/\/security.debian.org trixie-security main contrib non-free non-free-firmware<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add Plex repository<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In order to use the repository, you need to import the signing key first<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -L https:\/\/downloads.plex.tv\/plex-keys\/PlexSign.v2.key | sudo gpg --yes --dearmor -o \/etc\/apt\/keyrings\/plexmediaserver.v2.gpg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then add the repository<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"deb &#91;signed-by=\/etc\/apt\/keyrings\/plexmediaserver.v2.gpg] https:\/\/repo.plex.tv\/deb\/ public main\" | sudo tee \/etc\/apt\/sources.list.d\/plex.list<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Install packages<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Now that you have added the plex repository, you can install the plex server + all required packages for hardware transcoding. (If you use an NVidia or AMD card, you have to install the drivers for your card, not the intel ones)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\napt install plexmediaserver vainfo i965-va-driver intel-media-va-driver firmware-misc-nonfree nfs-common intel-gpu-tools<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add the Plex user to the render group<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In order for Plex to access the GPU, the plex user needs access to the render device.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>usermod -a -G render plex<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Map the GPU from host to container<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In order to use the GPU as transcoding device, you have to map the GPU from Host into the Container.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First you need some informations about the Plex user, run the following command inside your Plex container.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cat \/etc\/passwd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Note the UID and GID for the plex user (in my case they are 999 and 996)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the host run the following command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -l \/dev\/dri\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This should display the available Direct Rendering Infrastructure (dri) devices. Ignore the &#8220;by-path&#8221; entry and note the others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Proxmox Webinterface, go to  your plex server container, choose  resources, and add the found devices. Check the &#8220;Advanced&#8221; checkbox and enter the UID and GID for the plex user.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"256\" src=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_container_settings_dri_path.png\" alt=\"\" class=\"wp-image-19\" srcset=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_container_settings_dri_path.png 575w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_container_settings_dri_path-300x134.png 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><figcaption class=\"wp-element-caption\">Add the found dri devices to the containers resources<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Without this mapping, the plex server will not be able to use the GPU as transcoding device<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verify setup<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Reboot your container, then check if the GPU is visible to the system. (if you use an AMD or NVidia card, you have to search for those drivers when using the lsmod command)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vainfo\nlsmod | grep i915<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"716\" height=\"1017\" data-id=\"21\" src=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_plex-container-vainfo-output.png\" alt=\"\" class=\"wp-image-21\" srcset=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_plex-container-vainfo-output.png 716w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_plex-container-vainfo-output-211x300.png 211w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"532\" height=\"155\" data-id=\"20\" src=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_plex-container-lsmod-output.png\" alt=\"\" class=\"wp-image-20\" srcset=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_plex-container-lsmod-output.png 532w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/proxmox_plex-container-lsmod-output-300x87.png 300w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/figure>\n<figcaption class=\"blocks-gallery-caption wp-element-caption\">The outputs of the above commands<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Plex Setup<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">I will not guide you through the plex setup here, but after the setup is completed, you should be able to select the Hardware transcoding device in the plex server settings<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"508\" height=\"63\" src=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/plex-transcoder-settings.png\" alt=\"\" class=\"wp-image-22\" srcset=\"https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/plex-transcoder-settings.png 508w, https:\/\/rosenberger.st\/wp-content\/uploads\/2026\/05\/plex-transcoder-settings-300x37.png 300w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><figcaption class=\"wp-element-caption\">If everything is configured correctly, you will be able to choose the transcoding device in plex settings<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog post is a guide to install a Plex server on an Proxmox LCX Container with working hardware transcoding. Background Until changing to this setup, i ran my Plex Server on my Synology NAS. It was gettings slower and slower as my library grows also there is an NAS update in planning in near [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,5,4],"tags":[10,8,9,7],"class_list":["post-1","post","type-post","status-publish","format-standard","hentry","category-linux","category-plex","category-proxmox","tag-guide","tag-linux","tag-plex","tag-proxmox"],"_links":{"self":[{"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":8,"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":34,"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/posts\/1\/revisions\/34"}],"wp:attachment":[{"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rosenberger.st\/index.php\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}