Skip to content

Instantly share code, notes, and snippets.

@alimbada
Last active September 11, 2025 14:43
Show Gist options
  • Save alimbada/bb562388c375ff3eeb876acb8c4577a6 to your computer and use it in GitHub Desktop.
Save alimbada/bb562388c375ff3eeb876acb8c4577a6 to your computer and use it in GitHub Desktop.
Jellyfin on Docker on Unprivileged LXC on Proxmox with Hardware Transcoding using AMD iGPU πŸ˜¬πŸ˜±πŸ˜–
  1. Create your LXC (Host: PVE 8.3, LXC: Debian 12). For hardware I went with 4 cores, 8GB RAM, 32GB storage.
  2. In LXC: Create non-root user: adduser foo
  3. Add to sudo: usermod -aG sudo foo
  4. Set up SSH (see Arch wiki)
  5. Install Docker: https://docs.docker.com/engine/install/debian/
  6. Setup non-root Docker management: https://docs.docker.com/engine/install/linux-postinstall/
  7. Follow step 2 here. [Archive Link]
    Note: Probably don't need to add group 44 (video) as Jellyfin (or more accurately, ffmpeg) uses the render group only (104).
  8. In LXC: Instead of step 3 in the above post, install libva2 from the Debian repo.
  9. Mount your shares using this method [Archive Link]
  10. In LXC: Docker Compose for Jellyfin:
services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    group_add:
      - '104'
      - '44' # not sure if needed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - JELLYFIN_PublishedServerUrl=jellyfin.example.com #optional
    volumes:
      - ~/.jellyfin/config:/config
      - ~/.jellyfin/cache:/cache
      - /mnt/media:/data/videos
    ports:
      - 8096:8096
      - 8920:8920 #optional
      - 7359:7359/udp #optional
      - 1900:1900/udp #optional
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    restart: unless-stopped
    healthcheck:
      test: curl -i http://jellyfin:8096/health
  1. In LXC: Start the Jellyfin Docker container and exec into it with bash: docker exec -it jellyfin bash
  2. In Docker: Add the render group to /etc/group: echo "render:x:104:abc" >> /etc/group
  3. In LXC: Restart the container: docker compose restart jellyfin
@alimbada
Copy link
Author

alimbada commented Sep 11, 2025

To backup Jellyfin config from another machine:

tar --exclude='.jellyfin/config/cache' -czvf jellyfin-config-2025-09.tar.gz .jellyfin/config/

To restore (in the directory you want to restore it to):

tar -zxvf jellyfin-config-2025-09.tar.gz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment