DS918+의 Celeron J3455에는 QuickSync가 내장되어 있다. 이걸 켜면 트랜스코딩 시
CPU 사용률이 300~400%에서 20~50%로 떨어진다.
원래 단독 컨테이너로 돌고 있어 Portainer 스택 목록에 없었다.
장치 추가를 계기로 스택으로 옮겼다.
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
ports:
- "8096:8096"
devices:
- /dev/dri:/dev/dri
group_add:
- "937" # ls -ln /dev/dri 로 확인한 GID
environment:
- TZ=Asia/Seoul
volumes:
- /volume1/docker/jellyfin/config:/config
- /volume1/docker/jellyfin/cache:/cache
- /volume1/010_MV:/media:ro
- /volume1/020_MS:/music:ro
- /volume1/001_PIC:/photo:ro
| 항목 | 이유 |
|---|---|
restart: no → unless-stopped |
NAS 재부팅하면 Jellyfin이 안 떴다 |
익명 볼륨 → /volume1/docker/jellyfin/cache |
관리·백업 가능. 캐시는 재생성되므로 안전 |
devices: /dev/dri 추가 |
QuickSync |
/config 경로가 같으면 계정·라이브러리·시청 기록이 그대로 유지된다.
sudo docker stop jellyfin
sudo docker rename jellyfin jellyfin-old # 지우지 말고 이름만 변경
→ 스택 배포 → 동작 확인 → 며칠 뒤 docker rm jellyfin-old
ls -ln /dev/dri
crw-rw---- 1 0 937 226, 0 ... card0
crw-rw---- 1 0 937 226, 128 ... renderD128
세 번째 열(937)이 렌더 그룹 GID. 장치가 없으면 NAS 재부팅.
공식 jellyfin/jellyfin 이미지는 root로 실행되어 group_add 없이도 되지만,
linuxserver/jellyfin 처럼 PUID/PGID를 쓰는 이미지에는 필수다.
관리 → 대시보드 → 재생 → 트랜스코딩
하드웨어 가속: Intel QuickSync (QSV)
VA-API 장치: /dev/dri/renderD128
디코딩: H.264 / HEVC / HEVC 10bit / VP9 8bit
하드웨어 인코딩 활성화: ON
톤 매핑: OFF ← 이 세대에선 불안정
J3455(Apollo Lake, Gen9) 지원 범위:
sudo docker exec jellyfin ls -l /dev/dri # renderD128 보이면 OK
sudo docker exec jellyfin ps aux | grep ffmpeg # 재생 중 qsv 문자열 확인
sudo docker stats jellyfin --no-stream # CPU 20~50%면 하드웨어
관리 → 대시보드 → 활성 장치 에서 직접 재생 / 트랜스코딩 여부도 확인 가능.
주의: CPU가 낮다고 곧바로 QSV가 도는 건 아니다.
원본 그대로 재생(Direct Play) 중이면 어차피 CPU를 안 쓴다.
클라이언트가 원본 코덱을 그대로 재생하면 변환이 필요 없다. 트랜스코딩이 자주 발생하면:
하드웨어 가속은 그래도 변환이 필요할 때의 보험이다.