홈미디어 구축하기 Emby

시작하며
- Emby는 개인이 보유한 영화, 드라마, 음악, 사진 등의 미디어 파일을 라이브러리로 구성하고, 웹 브라우저/스마트 TV/모바일 앱 등에서 재생할 수 있도록 제공하는 개인 미디어 서버입니다.
- Emby는 영상 파일이나 상용 OTT 콘텐츠를 제공하는 서비스가 아닙니다.
- 사용자가 직접 보유하고 관리할 권한이 있는 미디어 파일을 서버에 저장한 뒤, 해당 파일의 메타데이터를 정리하고 여러 기기에서 재생하는 용도로 사용할 수 있습니다.
- 클라이언트가 원본 코덱/해상도/자막을 지원하면 원본을 그대로 전송하는 Direct Play 방식으로 재생할 수 있습니다. 지원하지 않는 환경에서는 서버가 영상을 클라이언트 환경에 맞게 변환하는 트랜스코딩(Transcoding)을 수행할 수 있습니다.
Warning
emby는 미디어를 재생해주는 platform의 역활을 수행하기만 합니다. 재생에 필요한 컨텐츠를 제공해주진 않습니다.
주요 기능
-
개인 미디어 라이브러리 구성
- 영화, TV 프로그램, 음악, 사진 등 콘텐츠 유형별로 라이브러리를 구성할 수 있습니다.
- 파일명과 폴더 구조를 기준으로 포스터, 줄거리, 출연진, 장르 등의 메타데이터를 수집하고 정리할 수 있습니다.
-
다양한 클라이언트에서 재생
- 웹 브라우저를 비롯해 모바일, 스마트 TV, 셋톱박스 등 지원되는 Emby 클라이언트에서 콘텐츠를 재생할 수 있습니다.
- 서버와 클라이언트의 지원 조건이 맞으면 Direct Play를 우선 사용하므로 서버 자원 사용량을 줄일 수 있습니다.
-
사용자/시청 권한 관리
- 가족 구성원별 사용자 계정을 만들 수 있습니다.
- 사용자별 라이브러리 접근 권한, 원격 접속 여부, 자녀 보호 기능 등을 설정할 수 있습니다.
-
원격 접속
- 내부망에서는
http://서버주소:8096으로 접근할 수 있습니다. - 외부에서 사용할 때는 포트를 직접 공개하기보다는 도메인과 HTTPS 리버스 프록시를 사용하는 방식을 권장합니다.
- 내부망에서는
-
Emby Premiere 기능
- 다운로드 및 동기화, 하드웨어 가속 트랜스코딩, DVR/Live TV 관련 기능 등 일부 기능은 Emby Premiere 구독이 필요합니다.
- 다운로드/동기화는 기기에 오프라인 재생용 미디어를 복사하는 기능이며, 서버 폴더 동기화에는 별도 플러그인이 필요할 수 있습니다. Emby Premiere 기능표를 확인하세요.
장점과 고려할 점
| 구분 | 내용 |
|---|---|
| 장점 | 개인 서버, NAS 또는 클라우드 인스턴스만 있으면 개인 미디어 라이브러리를 구축할 수 있습니다. |
| 장점 | 여러 기기에서 재생 위치와 시청 상태를 동기화하고, 메타데이터 기반으로 콘텐츠를 탐색할 수 있습니다. |
| 장점 | 클라이언트가 원본 파일을 지원하는 경우 Direct Play로 CPU 사용량을 최소화할 수 있습니다. |
| 고려 사항 | 라이브러리 파일 수가 많거나 저장소 I/O 성능이 낮으면 최초 스캔 및 메타데이터 수집 시간이 길어질 수 있습니다. |
| 고려 사항 | 원본 코덱/해상도/비트레이트/자막을 클라이언트가 지원하지 않으면 서버 트랜스코딩이 발생하며 CPU 또는 GPU 자원이 필요합니다. |
| 고려 사항 | Docker 컨테이너의 UID/GID와 미디어 파일의 소유권/권한이 맞지 않으면 라이브러리 스캔 또는 재생에 실패할 수 있습니다. |
| 고려 사항 | 외부에 서버를 공개할 경우 계정 보안, TLS 인증서, 원격 접근 제한, 정기 업데이트 및 플러그인 관리가 필요합니다. |
사전 준비
이 문서는 Docker Engine이 설치된 Linux 서버를 기준으로 작성했습니다.
- Docker Engine 및 Docker Compose Plugin 설치
- 미디어 파일 저장 경로 준비
- Emby 설정 데이터 저장 경로 준비
- 컨테이너가 읽을 수 있도록 미디어 디렉터리 권한 확인
- 외부 접근이 필요하다면 도메인, HTTPS 인증서, 리버스 프록시 구성 계획 수립
예시 디렉터리 구조는 다음과 같습니다.
/data/emby/
├── config/ # Emby 서버 설정, 데이터베이스, 메타데이터
├── cache/ # 선택 사항: 캐시 및 트랜스코딩 임시 데이터
└── contents/ # 영화, 드라마, 음악 등 실제 미디어 파일
Info
config 디렉터리는 Emby의 핵심 설정과 라이브러리 정보를 포함하므로 정기 백업을 권장합니다.
컨테이너 기반의 설치 작업
Docker Compose로 설치하기
-
운영 환경에서는 latest tag 대신 검증한 이미지 버전을 고정해서 사용하는 것을 권장합니다. 새 버전은 테스트 환경 또는 백업 후 검증을 거쳐 반영하세요.
-
먼저 미디어 파일 소유자와 그룹 ID를 확인합니다.
$> id -u <media-user> $> id -g <media-group> # 또는 파일/디렉터리의 소유권 확인 $> ls -ln /data/emby/contents -
예를 들어 UID와 GID가 모두 1000이라고 가정하고 docker-compose.yaml 파일을 작성합니다.
services: emby: image: emby/embyserver:<검증한_버전> container_name: emby restart: unless-stopped ports: - "8096:8096" environment: TZ: Asia/Seoul UID: "1000" GID: "1000" volumes: - /data/emby/config:/config - /data/emby/contents:/data:ro devices: # Intel 또는 AMD iGPU 기반 하드웨어 트랜스코딩을 사용할 경우 검토 # - /dev/dri:/dev/dri -
컨테이너를 시작합니다.
$> docker compose up -d $> docker compose ps $> docker compose logs -f emby -
공식 Docker 이미지는
UID,GID, 그리고 필요한 경우 추가 그룹 권한을 위한GIDLIST를 지원합니다. - 특히 VAAPI/NVDEC/NVENC 등의 하드웨어 가속을 구성할 때는 렌더링 디바이스에 접근할 수 있도록 적절한 추가 그룹 ID 설정이 필요할 수 있습니다. 자세한 내용은 Emby 공식 Docker Hub 이미지 문서를 참고하세요.
docker run 방식
- Docker Compose를 사용하지 않는다면 다음과 같이 실행할 수 있습니다.
$> docker run -d \ --name emby \ --restart unless-stopped \ -p 8096:8096 \ -e TZ=Asia/Seoul \ -e UID=1000 \ -e GID=1000 \ -v /data/emby/config:/config \ -v /data/emby/contents:/data:ro \ emby/embyserver:<검증한_버전>
Info
cpu / memory 같은 자원 제한은 모든 환경에 필수는 아닙니다. 여러 사용자의 동시 트랜스코딩을 제한하거나 다른 워크로드를 보호해야 하는 환경에서 서버 사양과 사용 패턴을 고려해 설정하세요.
초기 설정과 라이브러리 등록
-
웹 브라우저에서 다음 주소로 접속합니다.
http://서버IP:8096/ -
예를 들어 Docker 호스트의 8096 포트를 8800으로 매핑했다면 다음과 같이 접속합니다.
http://서버IP:8800/ -
최초 실행 시 표시되는 설정 마법사에서 언어, 관리자 사용자명, 비밀번호를 직접 생성합니다.
Warning
기본 관리자 계정이나 기본 비밀번호를 전제로 운영하지 마세요.
-
관리자 계정으로 로그인한 후 우측 상단 설정 메뉴로 이동합니다.
-
서버 → 라이브러리에서 새 라이브러리를 선택합니다.

-
콘텐츠 유형을 선택합니다. 예를 들어 영화, TV 프로그램, 음악, 사진 등으로 분리하면 메타데이터 인식과 탐색 품질이 좋아집니다.
-
컨테이너 내부의 미디어 경로를 선택합니다.
- 위 예시처럼 호스트의 /data/emby/contents 를 컨테이너의 /data 에 연결했다면, Emby 화면에서는 /data 경로를 선택해야 합니다.

- 위 예시처럼 호스트의 /data/emby/contents 를 컨테이너의 /data 에 연결했다면, Emby 화면에서는 /data 경로를 선택해야 합니다.
-
라이브러리 스캔이 완료되면 콘텐츠와 메타데이터를 확인합니다.

-
콘텐츠를 선택하여 재생합니다.

운영 및 보안 권장사항
외부 공개 전 확인 사항
- 내부망 전용 서버라면 Emby의 원격 접속을 비활성화합니다.
- 외부 접속이 필요하다면 HTTP 포트를 인터넷에 직접 공개하기보다 리버스 프록시와 HTTPS를 구성합니다.
- Emby는 서버 네트워크 설정에서 원격 접속 허용 여부와 허용/차단할 IP 또는 대역을 설정할 수 있습니다.
- 공개 서버는 강력한 비밀번호를 사용하고, 불필요한 관리자 계정을 제거하거나 권한을 최소화합니다.
- 플러그인은 신뢰할 수 있는 출처에서만 설치하고, 설치 전 유지보수 상태와 권한 범위를 확인합니다.
- /config 디렉터리는 계정/라이브러리/설정 정보가 포함되므로 주기적으로 백업합니다.
- 이미지 업데이트 전에는 설정 백업 후 테스트 또는 변경 내역 검토를 권장합니다.
- Emby 공식 문서도 내부망 전용인 경우 원격 접근을 끄고, 외부 연결에는 HTTPS 사용을 권장합니다.
- 리버스 프록시를 사용하는 경우에는 서버 네트워크 설정의 보안 연결 모드를
Handled by reverse proxy에 맞게 구성해야 합니다.
Reference
- Emby 공식 웹사이트
- Emby Server Docker 이미지
- Emby Premiere 기능표
- Emby 원격 연결 설정 문서
- Emby 서버 보안 가이드
- Emby 네트워크 및 HTTPS 설정 문서