cnstarz 19 Posted August 27, 2019 Share Posted August 27, 2019 (edited) I was able to install Emby on Docker with NVIDIA hardware acceleration without too much fuss, though I had to rely on a few different instructionals. Below are the steps I took get it to work (assuming you already have docker installed) on Ubuntu 19.04, for any other noobs trying to piece this all together: Step 1: Install container directly from Docker Hub (assuming Docker is already installed) docker pull emby/embyserver:latest Step 2: Install nvidia-container-toolkit and nvidia-container-runtime curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install nvidia-container-toolkit nvidia-container-runtime Step 3: Register the nvidia runtime with docker sudo tee /etc/docker/daemon.json <<EOF { "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } EOF Step 4: Restart Docker daemon configuration sudo pkill -SIGHUP dockerd Step 5: Create directories that will host the Emby container's directories sudo mkdir -p /opt/docker/volumes/emby/config Step 6: Create Emby container docker container create \ --name="emby-server" \ --network="host" \ --volume /opt/docker/volumes/emby/config:/config \ --volume /mnt/media:/mnt/media \ --device /dev/dri:/dev/dri \ --runtime=nvidia \ --publish 8096:8096 \ --publish 8920:8920 \ --env UID=997 \ --env GID=997 \ --env GIDLIST=997 \ --env NVIDIA_VISIBLE_DEVICES=all \ --env NVIDIA_DRIVER_CAPABILITIES=compute,utility,video \ emby/embyserver:latest Step 7: Start the Emby container docker start emby Step 8: Create /etc/systemd/system/docker-emby-server.service file with the following text: [Unit] Description=Docker Emby Container Requires=docker.service After=docker.service [Service] ExecStart=/usr/bin/docker start -a emby-server ExecStop=/usr/bin/docker stop -t 2 emby-server Restart=always RestartSec=2 [Install] WantedBy=default.target Step 9: Give the docker-emby-server.service file execute permission: sudo chmod +x /etc/systemd/system/docker-emby-server.service Step 10: Enable docker-emby-server.service sudo systemctl enable docker-emby-server Notes: Step 2: curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list |sudo tee /etc/apt/sources.list.d/nvidia-docker.list 'ubuntu18.04' was originally $(. /etc/os-release;echo $ID$VERSION_ID), but ubuntu19.04 is a no-go, so I forced it to ubuntu18.04. Step 5: You can create this directory wherever you want, it doesn't have to be exactly what I used Step 6: --name="emby-server" This names the container on the host for easy identification. You can call it whatever you want. --volume /opt/docker/volumes/emby/config:/configThis maps the directory (on the physical system) on the left side of the ":" to the directory (on the docker container) on the right side. This is the same directory you created in Step 5, and is absolutely required. --volume /mnt/media:/mnt/mediaSame concept as above. In my case, this is where all my media is stored. --env UID=997This is the UID of the 'emby' user on my system --env GID=997This is the GID of the 'emby' group on my system --env GIDLIST=997Same as above Steps 8-10: These are optional and only used to ensure my emby-server container starts on boot. I decided to go the route of a systemd service because for all intents and purposes, Emby provides a service and is therefore a service. If you don't want to go this route, you can instead add --restart unless-stopped \ somewhere into Step 6. Edited August 27, 2019 by cnstarz 4 1 Link to comment Share on other sites More sharing options...
Luke 37060 Posted August 27, 2019 Share Posted August 27, 2019 @@cnstarz that's great info, thanks ! @@Happy2Play can you break that post out into it's own topic. Thanks ! Link to comment Share on other sites More sharing options...
Happy2Play 8281 Posted August 27, 2019 Share Posted August 27, 2019 @@cnstarz that's great info, thanks ! @@Happy2Play can you break that post out into it's own topic. Thanks ! Split into its own topic, may need to update the Title. Link to comment Share on other sites More sharing options...
alucryd 216 Posted August 27, 2019 Share Posted August 27, 2019 Wait, that means our regular docker image works fine, we don't even need to extend any of the nvidia cuda images! I had created a tag specifically for nvidia using one of their images as base. I'll update the instructions on dockerhub asap, and add both nvidia env variables in our dockerfile so they're enabled by default. Link to comment Share on other sites More sharing options...
clynch 0 Posted September 1, 2019 Share Posted September 1, 2019 Was looking at adding my Nvidia GPU to an Emby docker. From everything I can tell, the Nvidia Card is being loaded into the docker however I dont seem to be able to use it. Was wondering if someone could help point me in the right direction. I have attached the log file for hardware transcoding. I also verified that --env NVIDIA_VISIBLE_DEVICES=all; --env NVIDIA_DRIVER_CAPABILITIES=compute,utility,video; --runtime=nvidia and --device /dev/dri:/dev/dri were all added EmbyError.txt Link to comment Share on other sites More sharing options...
Luke 37060 Posted September 1, 2019 Share Posted September 1, 2019 Was looking at adding my Nvidia GPU to an Emby docker. From everything I can tell, the Nvidia Card is being loaded into the docker however I dont seem to be able to use it. Was wondering if someone could help point me in the right direction. I have attached the log file for hardware transcoding. I also verified that --env NVIDIA_VISIBLE_DEVICES=all; --env NVIDIA_DRIVER_CAPABILITIES=compute,utility,video; --runtime=nvidia and --device /dev/dri:/dev/dri were all added Hi there, did you do everything mentioned in the first post? Link to comment Share on other sites More sharing options...
clynch 0 Posted September 1, 2019 Share Posted September 1, 2019 Yeah, i ran through it twice. It must be something with how I have my docker environment set up. Because I installed Emby on my actual machine not in the containers and it worked just fine. Link to comment Share on other sites More sharing options...
D34DC3N73R 18 Posted September 3, 2019 Share Posted September 3, 2019 FYI, docker 19.03 has an integrated gpu option. https://github.com/NVIDIA/nvidia-docker Note that with the release of Docker 19.03, usage of nvidia-docker2 packages are deprecated since NVIDIA GPUs are now natively supported as devices in the Docker runtime. switch out --env NVIDIA_VISIBLE_DEVICES=all \ --env NVIDIA_DRIVER_CAPABILITIES=compute,utility,video \ with --gpus all \ See usage and install instructions in link above. 1 Link to comment Share on other sites More sharing options...
Luke 37060 Posted September 3, 2019 Share Posted September 3, 2019 Great info, thanks ! Link to comment Share on other sites More sharing options...
D34DC3N73R 18 Posted September 3, 2019 Share Posted September 3, 2019 (edited) I should also note that the integrated gpu option isn't available in docker-compose yet. Docker-Compose users should continue to use the nvidia specific environment variables along with editing /etc/docker/daemon.json. Also note that the runtime option is not supported with docker-compose 3.x+. Docker-Compose users should edit daemon.json so that nvidia becomes the default runtime (until docker-compose can make use of the new gpu option). /etc/docker/daemon.json { "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } example of docker-compose emby: image: emby/embyserver container_name: emby network_mode: host restart: unless-stopped environment: - TZ=$TZ - UID=$PUID - GID=$PGID - GIDLIST=44 - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=all volumes: - /.config/emby:/config - /media/Video/TV:/media/Video/TV - /media/Music:/media/Music - /media/Video/Movies:/media/Video/Movies Edited September 3, 2019 by D34DC3N73R Link to comment Share on other sites More sharing options...
bigverm23 2 Posted September 4, 2019 Share Posted September 4, 2019 hmmm...far as I can tell, this wont work on Archlinux. emby: image: emby/embyserver:latest container_name: emby hostname: emby volumes: - /mnt/embyraid/tvshows:/tv - /mnt/embyraid/movies:/movies - ${USERDIR}/docker/shared:/shared - /mnt/embyraid/4kmovies:/4kmovies - "/etc/localtime:/etc/localtime:ro" - ${USERDIR}/docker/emby:/config ports: - "8096:8096" - "8920:8920" restart: always # runtime: nvidia environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} - GIDLIST=964 - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=all networks: - traefik_proxy labels: - "traefik.enable=true" - "traefik.backend=emby" - "traefik.frontend.rule=Host:emby.${DOMAINNAME}" - "traefik.port=8096" - "traefik.docker.network=traefik_proxy" - "traefik.frontend.headers.browserXSSFilter=true" - "traefik.frontend.headers.contentTypeNosniff=true" - "traefik.frontend.headers.SSLProxyHeaders=X-Forwarded-Proto:https" - "traefik.frontend.headers.forceSTSHeader=true" - "traefik.frontend.headers.SSLRedirect=true" - "traefik.frontend.headers.STSSeconds=315360000" - "traefik.frontend.headers.SSLHost=*.domain-us.net" - "traefik.frontend.headers.STSIncludeSubdomains=true" - "traefik.frontend.headers.STSPreload=true" Link to comment Share on other sites More sharing options...
D34DC3N73R 18 Posted September 7, 2019 Share Posted September 7, 2019 hmmm...far as I can tell, this wont work on Archlinux. Won't work how? Doesn't start, or doesn't pass though the GPU? For what it's worth, the runtime variable is not supported in docker-compose 3.x+. I do see it's commented out. The nvidia runtime must be set as default in /etc/docker/daemon.json. Are you positive nvidia drivers have been installed on the host system as well as the nvidia container toolkit? Link to comment Share on other sites More sharing options...
bigverm23 2 Posted November 24, 2019 Share Posted November 24, 2019 (edited) Won't work how? Doesn't start, or doesn't pass though the GPU? For what it's worth, the runtime variable is not supported in docker-compose 3.x+. I do see it's commented out. The nvidia runtime must be set as default in /etc/docker/daemon.json. Are you positive nvidia drivers have been installed on the host system as well as the nvidia container toolkit? yeah it's not passing through the GPU Docker 19.03 Compose 1.24.1 and yes nvidia drivers are installed and working on host as well as nvidia container runtime and toolkit do i need --device /dev/dri:/dev/dri \ in my compose.yml ? Edited November 24, 2019 by bigverm23 Link to comment Share on other sites More sharing options...
bigverm23 2 Posted November 24, 2019 Share Posted November 24, 2019 ls -la /dev/dri looks like this drwxr-xr-x 3 root root 100 Nov 23 20:48 .drwxr-xr-x 21 root root 3840 Nov 23 20:48 ..drwxr-xr-x 2 root root 80 Nov 23 20:48 by-pathcrw-rw----+ 1 root video 226, 0 Nov 23 20:48 card0crw-rw-rw- 1 root render 226, 128 Nov 23 20:48 renderD128 ID of the video group above is 986, so should that be my GIDLIST=986 ? Link to comment Share on other sites More sharing options...
D34DC3N73R 18 Posted November 25, 2019 Share Posted November 25, 2019 (edited) ls -la /dev/dri looks like this drwxr-xr-x 3 root root 100 Nov 23 20:48 . drwxr-xr-x 21 root root 3840 Nov 23 20:48 .. drwxr-xr-x 2 root root 80 Nov 23 20:48 by-path crw-rw----+ 1 root video 226, 0 Nov 23 20:48 card0 crw-rw-rw- 1 root render 226, 128 Nov 23 20:48 renderD128 ID of the video group above is 986, so should that be my GIDLIST=986 ? `grep video /etc/group` should let you know the group number for video. If that's 986, then yes GIDLIST=986 is correct. FWIW, you shouldn't need the GIDLIST variable or have to pass /dev/dri when using the nvidia container toolkit. Have you edited /etc/docker/daemon.json to make nvidia the default runtime? (requires restart of the docker service after edit). Does your card work with any other containers? Edited November 25, 2019 by D34DC3N73R Link to comment Share on other sites More sharing options...
TallBoiDez 8 Posted November 10, 2021 Share Posted November 10, 2021 this isn't working for me, im running linuxserver/emby image through docker portainer and i keep getting this error "Failure OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/moby/eefe35c9593b87cc05ae0cd97700959d2cd09a0ca62ab55f4edade8bbc83a729/log.json: no such file or directory): fork/exec /usr/bin/nvidia-container-runtime: no such file or directory: unknown" some please help Link to comment Share on other sites More sharing options...
Luke 37060 Posted November 10, 2021 Share Posted November 10, 2021 2 hours ago, TallBoiDez said: this isn't working for me, im running linuxserver/emby image through docker portainer and i keep getting this error "Failure OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/moby/eefe35c9593b87cc05ae0cd97700959d2cd09a0ca62ab55f4edade8bbc83a729/log.json: no such file or directory): fork/exec /usr/bin/nvidia-container-runtime: no such file or directory: unknown" some please help Hi there, have you tried our official docker container? https://emby.media/docker-server.html Link to comment Share on other sites More sharing options...
TallBoiDez 8 Posted November 10, 2021 Share Posted November 10, 2021 1 hour ago, Luke said: Hi there, have you tried our official docker container? https://emby.media/docker-server.html Yes, even with the official docker I get the error message Link to comment Share on other sites More sharing options...
TallBoiDez 8 Posted November 10, 2021 Share Posted November 10, 2021 @Luke i get the same error with official emby docker container I'm running docker through open media vault and when I try the ssh method run the commands below it tells me "-bash command not found" I've also included a picture of the message it give me. Link to comment Share on other sites More sharing options...
Luke 37060 Posted November 12, 2021 Share Posted November 12, 2021 On 11/10/2021 at 8:44 AM, TallBoiDez said: @Luke i get the same error with official emby docker container I'm running docker through open media vault and when I try the ssh method run the commands below it tells me "-bash command not found" I've also included a picture of the message it give me. Did you figure this out? You may have to install something in omv in order for those commands to be available. Link to comment Share on other sites More sharing options...
TallBoiDez 8 Posted November 12, 2021 Share Posted November 12, 2021 11 minutes ago, Luke said: Did you figure this out? You may have to install something in omv in order for those commands to be available. @Luke no I'm still trying to figure it all out Link to comment Share on other sites More sharing options...
TallBoiDez 8 Posted November 14, 2021 Share Posted November 14, 2021 (edited) @Luke by following the steps in this guide i was able to get Emby to recognize my Nvidia graphics card. https://forum.openmediavault.org/index.php?thread/38013-howto-nvidia-hardware-transcoding-on-omv-5-in-a-plex-docker-container/ Edited November 14, 2021 by TallBoiDez Link to comment Share on other sites More sharing options...
Luke 37060 Posted November 16, 2021 Share Posted November 16, 2021 On 11/14/2021 at 12:00 AM, TallBoiDez said: @Luke by following the steps in this guide i was able to get Emby to recognize my Nvidia graphics card. https://forum.openmediavault.org/index.php?thread/38013-howto-nvidia-hardware-transcoding-on-omv-5-in-a-plex-docker-container/ Thanks for the feedback ! Link to comment Share on other sites More sharing options...
jscoys 143 Posted November 21, 2021 Share Posted November 21, 2021 Hello! Im running Debian Bullseye, do you think I can follow the same guide you posted @TallBoiDez? Link to comment Share on other sites More sharing options...
TallBoiDez 8 Posted November 21, 2021 Share Posted November 21, 2021 16 minutes ago, jscoys said: Hello! Im running Debian Bullseye, do you think I can follow the same guide you posted @TallBoiDez? Yes, it should also work for you as well just follow the exactly as they are and definitely click on the links too 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