Tropic Host

VPS에 Jellyfin 설치하기: 나만의 미디어 서버 구축

읽는 데 13분
Tropic
VPS에 Jellyfin 설치하기: 나만의 미디어 서버 구축

VPS에 Jellyfin 설치하기: 나만의 미디어 서버를 만드는 방법

영상이 가득한 폴더는 편리한 미디어 라이브러리와 거리가 먼 경우가 많습니다. 파일 이름이 제각각이고, 자막이 따로 저장되어 있으며, 원하는 에피소드를 직접 찾아야 하기 때문입니다. Jellyfin은 이런 자료 모음을 포스터, 설명, 사용자 프로필, 이어 보기 기능을 갖춘 개인 스트리밍 서비스로 바꿔 줍니다.

다만 Jellyfin은 구독 상품을 판매하지 않으며, 완성된 콘텐츠 카탈로그도 제공하지 않습니다. 사용자가 보유한 파일로 작동하며 가정용 컴퓨터, NAS 또는 VPS에 설치할 수 있습니다. 아래에서는 주요 기능과 서버 요구 사항, 그리고 도메인과 HTTPS를 사용해 Ubuntu에 설치하는 방법을 살펴봅니다.

Jellyfin이란 무엇이며 왜 필요한가

Jellyfin은 무료 오픈 소스 미디어 서버입니다. 서버가 영화, 시리즈, 음악, 사진과 기타 콘텐츠를 색인화하고, 클라이언트 애플리케이션이 이를 휴대전화, 컴퓨터 또는 TV에서 재생합니다.

폴더를 스캔하면 Jellyfin은 포스터와 설명을 내려받고, 시리즈를 시즌별로 정리하며, 재생 진행 상황을 기억하고 “이어 보기” 영역을 표시합니다. 가족 구성원마다 별도의 로컬 프로필을 만들고, 라이브러리 접근 권한을 제한하며, 자녀 보호 기능을 설정할 수 있습니다. Quick Connect를 이용하면 긴 비밀번호를 입력하지 않고 짧은 코드로 TV에 로그인할 수 있습니다.

Android, iOS, Android TV, Roku, webOS, Tizen, Xbox 및 컴퓨터용 클라이언트가 제공됩니다. 웹 인터페이스와 Kodi 연동 기능도 사용할 수 있습니다.

또한 Jellyfin은 음악, IPTV, TV 튜너, 방송 녹화를 지원합니다. SyncPlay는 여러 사용자의 재생을 동기화하며, 플러그인을 통해 자막, 새로운 메타데이터 소스 및 다양한 연동 기능을 추가할 수 있습니다.

Jellyfin은 영화를 스스로 검색하거나 다운로드하지 않습니다. 서버 소유자가 이미 보유한 콘텐츠를 정리하고 전송하는 역할만 합니다.

Jellyfin과 Plex: 주요 차이점

두 솔루션 모두 로컬 컬렉션을 미디어 서비스로 바꾸지만 서로 다른 모델을 사용합니다.

항목JellyfinPlex
소스 코드오픈 소스독점 소프트웨어
프리미엄 기능서버와 공식 클라이언트에 유료 등급이 없음일부 기능은 요금제에 따라 달라짐
중앙 계정필요 없음공급자의 생태계를 사용함
원격 접속소유자가 도메인, 리버스 프록시 또는 VPN을 설정함더 많은 준비된 기능을 제공함
데이터 통제권최대인프라 일부를 공급자가 통제함

Jellyfin은 독립성, 개인정보 보호, 구독료가 없다는 점 때문에 선택됩니다. 반면 최대한 간단한 초기 설정과 모든 기기에서 고르게 완성도 높은 앱이 더 중요하다면 Plex가 편리할 수 있습니다.

Direct Play와 트랜스코딩: 서버에 부하를 주는 요소

Jellyfin의 성능은 라이브러리 크기보다 재생 방식에 더 크게 좌우됩니다.

모드동작 방식부하
Direct Play서버가 원본 파일을 그대로 전송함낮음
Direct Stream컨테이너 또는 개별 트랙을 변경함낮음 또는 중간
Transcoding코덱, 해상도 또는 비트레이트를 실시간으로 변경함높음

TV가 파일의 코덱, 오디오 및 자막을 지원하면 서버는 CPU를 거의 사용하지 않습니다. 클라이언트가 형식을 지원하지 않거나, 연결 상태 때문에 비트레이트를 낮춰야 하거나, 자막을 영상에 입혀야 할 때 문제가 시작됩니다. 이 경우 Jellyfin은 FFmpeg를 실행해 영상을 실시간으로 트랜스코딩합니다.

특히 4K, HEVC, HDR 및 HDR에서 SDR로의 변환은 많은 자원을 요구합니다. 그래픽 카드가 없는 일반 VPS는 가상 코어가 많아도 처리하지 못할 수 있습니다. 따라서 호환되는 형식과 Direct Play를 활용하면 상위 요금제로 변경하는 것보다 더 많은 비용을 절약할 수 있습니다.

Jellyfin에 필요한 서버 사양

일반적인 설치에 대한 공식 권장 사항은 약 8 GB RAM입니다. 그래픽 인터페이스가 없는 Linux에서는 소형 서버가 4 GB로도 작동할 수 있습니다. 운영체제, 데이터베이스, 이미지, 캐시 및 임시 파일에는 빠른 디스크가 필요합니다. 미디어 라이브러리는 별도로 저장되며 보통 전체 공간의 대부분을 차지합니다.

사용 시나리오시작 사양설명
음악과 1080p Direct Play 스트림 1개2 vCPU, 4 GB RAM네트워크와 디스크 속도가 더 중요함
소규모 가족용 미디어 라이브러리4 vCPU, 8 GB RAM호환되는 형식 사용을 권장함
간헐적인 1080p 트랜스코딩고성능 4–8 vCPU 또는 GPU부하는 코덱에 따라 달라짐
여러 개의 4K/HDR 스트림최신 Intel iGPU 또는 그래픽 카드일반적인 CPU 전용 VPS는 적합하지 않음

트래픽도 고려해야 합니다. 20 Mbps 스트림은 시간당 약 9 GB의 데이터를 전송합니다. 매일 시청하면 월 사용량이 빠르게 수백 GB에 도달합니다.

가정용 서버와 VPS 중 무엇을 선택할까

수 TB 규모의 컬렉션과 정기적인 하드웨어 트랜스코딩에는 가정용 미니 PC나 NAS가 더 경제적입니다. 대용량 디스크를 설치하고 Intel Quick Sync를 지원하는 프로세서를 선택할 수 있지만, 원격 접속은 전력 공급, 가정용 인터넷, 공인 IP 보유 여부에 영향을 받습니다.

VPS는 공인 주소와 안정적인 네트워크를 갖추고 24시간 작동합니다. 음악, 소규모 영상 라이브러리, Direct Play, 서로 다른 장소의 사용자에게 편리합니다. 일반 요금제에서는 저장 공간 비용과 GPU 부재가 제한 요소입니다.

혼합형 구성도 가능합니다. 파일은 집에 두고 VPS를 보호된 진입점으로 사용하는 방식입니다. 공인 IPv4가 없을 때 유용하지만, 재생 속도는 여전히 가정용 인터넷의 업로드 대역폭에 제한됩니다.

Docker Compose로 Ubuntu에 Jellyfin 설치하기

아래 구성에서는 Jellyfin과 Caddy가 동일한 Docker 네트워크에서 실행됩니다. 포트 8096은 인터넷에 직접 노출하지 않고, Caddy가 HTTPS 연결을 수신하며 인증서를 자동으로 발급받습니다.

먼저 media.example.com과 같은 도메인의 A 레코드를 서버 IP 주소로 지정합니다.

1. Docker를 설치하고 디렉터리를 생성합니다

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker

sudo mkdir -p /opt/jellyfin/{config,cache,caddy-data,caddy-config}
sudo mkdir -p /srv/media/{movies,series,music}
cd /opt/jellyfin

2. /opt/jellyfin/compose.yaml을 생성합니다

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /srv/media:/media:ro
    networks: [media]

  caddy:
    image: caddy:2
    container_name: jellyfin-caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config
    networks: [media]

networks:
  media:

:ro 옵션은 미디어 라이브러리를 읽기 전용으로 마운트해 Jellyfin에서 원본 파일이 실수로 삭제되는 것을 방지합니다.

3. /opt/jellyfin/Caddyfile을 생성합니다

media.example.com {
    reverse_proxy jellyfin:8096
}

도메인을 자신의 도메인으로 바꾸고, 컨테이너를 시작한 뒤 필요한 포트를 엽니다.

sudo docker compose up -d

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable

SSH가 다른 포트를 사용한다면 ufw enable을 실행하기 전에 별도의 규칙으로 해당 포트를 허용하십시오.

인증서가 발급되면 https://media.example.com을 엽니다. 외부 접근 제한이 올바르게 작동하도록 Jellyfin 네트워크 설정에서 리버스 프록시를 신뢰할 수 있는 프록시 목록에 추가하십시오.

미디어 라이브러리 초기 설정

설정 마법사에서 언어를 선택하고, 관리자 계정을 만든 뒤 라이브러리를 추가합니다.

  • 영화 — /media/movies;
  • 시리즈 — /media/series;
  • 음악 — /media/music.

정확한 인식을 위해 알아보기 쉬운 이름을 사용하십시오.

/media/movies/영화 제목 (2024)/영화 제목 (2024).mkv
/media/series/시리즈 제목 (2024)/Season 01/시리즈 제목 S01E01.mkv

시청용 일반 프로필을 별도로 만들고 로그인 화면에서는 관리자 계정을 숨기십시오. 사용자에게 필요한 라이브러리만 허용하고, 꼭 필요한 경우가 아니라면 파일 삭제 권한을 부여하지 마십시오.

업데이트와 백업

Jellyfin 구성에는 사용자, 설정, 데이터베이스 및 재생 진행 상황이 포함됩니다. 업데이트하기 전에 컨테이너를 중지하고 config 디렉터리를 저장합니다.

cd /opt/jellyfin
sudo docker compose stop jellyfin
sudo tar -czf /root/jellyfin-config-$(date +%F).tar.gz config
sudo docker compose start jellyfin

생성한 압축 파일은 VPS 외부로 옮기십시오. 미디어 파일은 별도로 백업해야 합니다.

업데이트하려면 다음 명령을 실행합니다.

sudo docker compose pull
sudo docker compose up -d

포트 8096을 직접 노출하지 마십시오. HTTPS 또는 VPN을 사용하고, 업데이트를 정기적으로 설치하며, 디스크 여유 공간을 확인하십시오.

tropic.host VPS에서 Jellyfin 사용하기

주로 Direct Play를 사용하는 소규모 미디어 라이브러리라면 4 GB RAM의 Linux VPS로 시작할 수 있습니다. 여러 사용자, 큰 데이터베이스, 추가 서비스를 운영한다면 8 GB를 선택하는 편이 합리적입니다.

tropic.host에서 VPS를 선택할 때는 디스크 용량, 월간 트래픽, 트랜스코딩 필요성을 각각 평가하십시오. 가상 서버는 공인 IP와 HTTPS를 갖춘 상시 접속 지점으로 편리하지만 GPU 서버를 대체하지는 못합니다. 형식 변환이 필요한 여러 개의 4K/HDR 스트림을 운영하려면 Intel iGPU가 있는 가정용 서버, 전용 서버 또는 그래픽 카드가 포함된 특수 요금제가 더 적합합니다.

작은 컬렉션으로 시작하고 Jellyfin 대시보드에서 Direct Play 세션의 비율을 확인한 다음, 실제 부하에 따라 CPU, RAM 또는 저장 공간을 늘릴 수 있습니다.

요약

Jellyfin은 자신이 보유한 컬렉션을 필수 구독이나 중앙 계정이 필요 없는 개인 스트리밍 서비스로 바꿉니다. 성공적으로 구축하려면 저장 공간, 트래픽, 트랜스코딩 발생 가능성을 미리 계산하는 것이 중요합니다.

Direct Play를 사용하는 소형 서버는 4–8 GB RAM으로 충분한 경우가 많습니다. 4K/HDR을 정기적으로 재생하려면 하드웨어 영상 처리가 필요합니다. 구성과 관계없이 외부 접속은 HTTPS 또는 VPN으로 보호하고, 설정과 미디어 라이브러리는 별도로 백업하십시오.

FAQ

Jellyfin은 완전히 무료인가요?

네. 서버와 클라이언트는 프리미엄 요금제 없이 사용할 수 있습니다. 비용이 필요한 것은 하드웨어, VPS, 디스크, 도메인 및 트래픽뿐입니다.

Jellyfin에 바로 볼 수 있는 영화와 시리즈가 포함되어 있나요?

아니요. 사용자가 자신의 미디어 파일을 직접 추가해야 합니다.

그래픽 카드가 없는 VPS에서도 Jellyfin을 실행할 수 있나요?

네. 대부분의 파일이 Direct Play로 재생된다면 가능합니다. 4K와 HDR을 자주 트랜스코딩하려면 적절한 iGPU 또는 그래픽 카드가 있는 서버가 필요합니다.

Jellyfin에는 RAM이 얼마나 필요한가요?

소형 Linux 서버는 4 GB RAM으로 작동할 수 있습니다. 가족용 미디어 라이브러리와 여러 사용자를 위해서는 8 GB를 기준으로 잡는 것이 좋습니다.

인터넷을 통해 Jellyfin을 안전하게 이용하려면 어떻게 해야 하나요?

도메인과 리버스 프록시를 통한 HTTPS 또는 VPN을 사용하십시오. 포트 8096을 직접 노출하지 말고, 최소 권한을 가진 별도의 사용자 계정을 만드십시오.