Jellyfin 소개
Jellyfin은 영상 미디어 파일을 보관, 관리 공유하는 멀티미디어 서버, 애플리케이션입니다. 쉽게 말해 웹으로 서비스되는 사진, 영상, 도서 등의 미디어를 재생할 수 있는 애플리케이션입니다. 오픈소스이며, 윈도우즈, 맥, 리눅스 등에 설치하여 서비스를 제공할 수 있습니다.
동영상 강의를 저장하고 편리하게 재생할 수 있는 방법을 찾다가 알게 된 애플리케이션인데요, 웹을 통해 서비스되기 때문에 플랫폼(기기)의 제한 없이 접근 가능하며, 또한 위치와 시간에 상관 없이 접근할 수 있다는 장점이 마음에 들었습니다.
Jellyfin은 미디어 서버 애플리케이션인 emby의 포크로, 2018년 첫 릴리즈를 발표했고 2024년 12월 현재 10.10.3 버전까지 출시되었습니다.
- 미디어 관리 애플리케이션
- 웹을 통해 서비스 됨
- 오픈소스
- 리눅스, 윈도우즈, 맥 등 다양한 플랫폼에 설치해 서빙 가능
https://en.wikipedia.org/wiki/Jellyfin
설치
들어가기 전에
이번 포스팅에서 Jellyfin의 설치는 리눅스, 도커 등을 이용합니다.
설치 환경
- OS : Rocky9.4
- Docker : 27.3.1
- Docker Compose : 2.29.2
참고 - 리눅스에 docker 설치
참고 - 리눅스에 docker compose 설치
설치준비
- 도커허브에서
docker pull
을 통한 설치 - https://hub.docker.com/r/linuxserver/jellyfin
- Jellyfin 버전 : 10.10.3
(1) docker pull
docker pull
명령어를 통해 도커허브에 올라와있는 jellyfin 의 이미지를 받아옵니다. 보통은 latest
버전을 받으면 됩니다. 제 경우엔 명확한 버전이 태그된 것을 선호하여, 가장 최신 버전을 지정하여 pull을 하였습니다.
1
2
3
4
5
6
7
# docker pull
docker pull linuxserver/jellyfin:10.10.3
# 확인
docker images | grep jellyfin
>> REPOSITORY TAG SIZE
>> linuxserver/jellyfin 10.10.3 .. 763MB
(2) 미디어 저장 디렉토리 만들기
미디어 데이터의 휘발을 방지하기 위해서 바인드 마운트를 사용할 것입니다. 바인드 마운트를 설정하면 미디어는 호스트에 저장되고, 도커 컨테이너에서는 호스트의 파일시스템에서 미디어를 읽어올 것입니다. 따라서 도커 컨테이너가 종료된다고 하더라도 미디어는 호스트에 남아있게 되죠.
jellyfin 도커 컴포즈 설명을 보면 총 세 개의 폴더를 바인드마운트 하는 예시를 볼 수 있습니다. 이에 대응하는 3 개의 디렉터리들을 호스트에 미리 만들어줍니다.
1
2
3
4
mkdir /jellyfin/라이브러리/디렉터리
mkdir /jellyfin/미디어/저장/경로
mkdir /jellyfin/영상/저장/경로
# 경로는 사용자의 상황에 맞춰 지정한다.
(3) docker compose 작성
docker compose 는 도커 컨테이너를 구동하는 설정들을 명세한 명세서입니다. 여기에 컨테이너 구동 옵션들을 명세해놓으면, 간단한 명령어 (docker compose up
)로 한 번에 서비스(들)를 구동시킬 수 있습니다.
docker-compose 파일에 작성해야 하는 내용은 도커허브에 자세히 나와있으므로, 복사하여 사용자 환경에 맞게 일부만 수정해주면 됩니다.
1
vi ./docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---
services:
jellyfin:
image: /linuxserver/jellyfin:10.10.3 # 원하는 버전
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
# - JELLYFIN_PublishedServerUrl=http://192.168.0.5 #optional
volumes:
- /path/to/jellyfin/library:/config
- /path/to/tvseries:/data/tvshows
- /path/to/movies:/data/movies
ports:
- 8096:8096
# - 8920:8920 #optional
# - 7359:7359/udp #optional
# - 1900:1900/udp #optional
restart: unless-stopped
# volumes의 /path/to/~ 에 직전에 만든 디렉터리 경로를 넣어주면 된다.
(4) 구동하기
docker-compose.yml
파일을 저장하고 편집기에서 빠져나와, 애플리케이션을 구동해 보겠습니다. docker-compose.yml 파일이 존재하는 디렉터리에서 아래 명령어를 실행합니다.
1
2
# 애플리케이션 구동
sudo docker compose up -d
1
2
3
4
# 실행 확인
sudo docker ps | grep jellyfin
>> CONTAINER ID IMAGE ... NAMES
>> e58a5ff46550 linuxserver/jellyfin:10.10.3 jellyfin
사용하기
(1) 웹 브라우저로 접속해보기
웹 브라우저 주소창에 IP주소:8096
을 입력하여 jellyfin 서버로 접속을 시도해보겠습니다. 처음 접속하면 몇 가지 간단한 설정과 계정정보 등록을 진행하게 됩니다.
(2) 로그인하고 둘러보기
로그인 화면
로그인 후 메인 페이지
메인 페이지에서는 내 미디어를 볼 수 있습니다. 아직 어떠한 미디어도 없기 때문에 보여지는 게 없네요.
설정 페이지
설정 페이지는 우측 상단의 프로필 아이콘 클릭 -> 대시보드 를 통해 들어갈 수 있습니다.
메뉴는 아래와 같습니다.
메뉴 | 설명 |
---|---|
대시보드 | 서버의 현재 상태와 최근 활동을 한눈에 볼 수 있는 페이지로, 현재 실행 중인 스트림, 최근 추가된 미디어, 서버 리소스 사용량 등의 정보를 제공합니다. |
일반 | 서버 이름, 언어 설정, 로고 및 사용자 인터페이스와 관련된 기본 옵션을 설정할 수 있는 메뉴입니다. |
사용자 | 사용자 계정을 생성, 삭제하거나 관리할 수 있는 메뉴로, 각 사용자에게 권한 및 접근 제한을 설정할 수 있습니다. |
라이브러리 | 미디어 라이브러리를 추가, 수정, 삭제할 수 있는 메뉴입니다. 각 라이브러리의 이름, 폴더 경로, 콘텐츠 유형 등을 지정할 수 있습니다. |
재생 | 스트리밍 및 재생 품질, 트랜스코딩 설정 등을 조정할 수 있는 메뉴로, 클라이언트 장치에서의 재생 경험을 최적화할 수 있습니다. |
실시간 TV | 실시간 TV 설정 메뉴로, TV 튜너를 추가하거나 EPG(전자 프로그램 가이드)를 설정할 수 있습니다. |
DVR | Digital Video Recorder 로, 실시간 TV 방송을 녹화해 나중에 시청할 수 있도록 하는 기능입니다. |
플러그인 | Jellyfin에 추가 기능을 설치하고 관리할 수 있는 메뉴로, 지원되는 플러그인을 설치하거나 업데이트할 수 있습니다. |
네트워킹 | 서버 네트워크 설정을 관리할 수 있는 메뉴로, 포트 포워딩, 원격 액세스 설정 및 HTTPS 인증서를 설정할 수 있습니다. |
API 키 | API 키 발급과 관리에 대한 메뉴입니다. |
로그 | 서버의 로그 데이터를 확인하고 문제를 진단할 수 있는 메뉴입니다. |
예약 작업 | 서버에서 예약된 작업(예: 메타데이터 스캔, 라이브러리 동기화)을 확인하고 관리할 수 있는 메뉴입니다. |
(3) 미디어 라이브러리
미디어 라이브러리는 “사용자가 정의하는 특정 주제와 관련된 미디어 모음” 으로 생각할 수 있습니다. 설정 메뉴 > 라이브러리 메뉴에서 미디어 라이브러리 생성과 관리가 가능합니다.
미디어 라이브러리의 종류는 아래와 같습니다.
미디어 라이브러리 | 설명 |
---|---|
영화 | 영화 컬렉션을 관리하며, 포스터, 줄거리, 출연진 등의 메타데이터를 지원합니다. |
음악 | 아티스트, 앨범, 트랙 등의 정보를 포함한 음악 컬렉션을 관리합니다. |
시리즈 | 시즌과 에피소드로 구성된 TV 시리즈를 관리하며, 자동으로 시즌별로 정렬됩니다. |
도서 | 전자책, 만화, 잡지 등의 문서 파일을 관리하며, 표지 이미지와 메타데이터를 지원합니다. |
홈 비디오 및 사진 | 이미지 파일을 관리하며, 앨범별로 정리하고 슬라이드쇼 기능을 제공합니다. |
뮤직비디오 | 뮤직 비디오에 특화된 메타데이터를 활용하여 아티스트, 앨범, 장르 등의 정보를 체계적으로 관리. |
영화 및 쇼 혼합 | 여러 종류의 미디어 파일이 혼합된 폴더를 관리하며, 일반적인 폴더 뷰로 모든 파일을 표시합니다. 그러나 메타데이터 처리의 신뢰성이 떨어질 수 있어, 가능하면 전용 라이브러리 유형을 사용하는 것이 좋습니다. |
라이브러리를 만들 때에는, 미디어가 포함된 디렉터리(폴더) 또한 지정해줘야 합니다. 폴더 옆 +
버튼을 클릭한 뒤, 도커 내부의 미디어 저장 경로를 선택해주면 됩니다.
(4) 미디어 업로드
jellyfin 에는 아쉽게도 “영상 업로드” 기능이 없습니다. 따라서 서버에 직접 미디어를 업로드해줘야 합니다.
-윈도우즈, 맥, GUI 리눅스의 경우
드래그앤드랍, 복사 및 붙여넣기 등의 방법으로 미디어를 넣어주면 됩니다.
-CLI 리눅스의 경우
그래픽 인터페이스가 있는 로컬 컴퓨터에서 미디어를 다운받은 후 SCP나 FTP를 통해 리눅스로 파일을 전송하는 방법을 추천합니다. 그 외로는 wget 등의 방법으로 CLI 리눅스에서 직접 미디어를 다운로드 할 수도 있습니다.
(5) 미디어 스캔
미디어 라이브러리를 생성하고 미디어가 저장된 디렉터리를 지정했다면, 라이브러리 스캔을 진행합니다.
스캔은 라이브러리 폴더(미디어가 저장된 폴더) 에서 컨텐츠들을 탐색하여 목록을 만들고, 각 미디어들의 메타데이터를 불러오는 작업을 합니다.