- Create your LXC (Host: PVE 8.3, LXC: Debian 12). For hardware I went with 4 cores, 8GB RAM, 32GB storage.
- In LXC: Create non-root user:
adduser foo
- Add to sudo:
usermod -aG sudo foo
- Set up SSH (see Arch wiki)
- Install Docker: https://docs.docker.com/engine/install/debian/
- Setup non-root Docker management: https://docs.docker.com/engine/install/linux-postinstall/
- 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). - In LXC: Instead of step 3 in the above post, install
libva2
from the Debian repo. - Mount your shares using this method [Archive Link]
- 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
- In LXC: Start the Jellyfin Docker container and exec into it with bash:
docker exec -it jellyfin bash
- In Docker: Add the
render
group to/etc/group
:echo "render:x:104:abc" >> /etc/group
- In LXC: Restart the container:
docker compose restart jellyfin
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):