GitHub

LibreSpark/LibreTV — 一分钟搭建影视站,支持Docker等部署方式

LibreTV — Docker로 배포하는 자체 호스팅 영상 검색·재생 플랫폼

LibreTV는 Next.js 15와 TypeScript로 만든 영상 검색·재생 플랫폼입니다. 여러 공개 영상 소스를 검색하고 결과를 묶어 재생하며, IPTV와 프로그램 안내도 지원합니다. Docker로 배포할 수 있고 HTTPS, 접근 비밀번호, SSRF 방어 설정을 제공합니다.

에디터 노트

LibreTV의 배포 편의성은 소스 등록과 운영을 함께 다루는 구성에서 나옵니다. 구독 목록을 원격 JSON으로 관리하고 상태가 나쁜 소스를 자동 비활성화하는 방식은 여러 제공처를 관리하는 수고를 줄입니다. 반면 검색과 재생은 사용자가 등록한 제3자 소스에 의존하며 프로젝트가 콘텐츠를 제공하지 않습니다. 운영 부담은 줄여도 소스의 가용성과 권리는 별도로 남습니다. 보안 설명도 배포 조건과 연결됩니다. HTTPS를 쓰지 않으면 Secure 쿠키가 저장되지 않아 로그인에 실패할 수 있고, 내부망 주소를 허용하면 SSRF 방어 예외가 생깁니다. 따라서 Docker 컨테이너가 실행된다는 사실만으로 운영 준비가 끝나는 구조는 아닙니다. 접근 비밀번호와 TLS, 프록시의 주소 제한 설정이 실제 배포에 함께 필요합니다.

AI 요약

LibreTV는 여러 공개 영상 소스와 IPTV 목록을 검색하고 재생하는 자체 호스팅 웹 애플리케이션입니다. Next.js 15 App Router, TypeScript, Tailwind CSS를 사용하며 플레이어는 ArtPlayer와 hls.js로 구성합니다. Docker 이미지로 실행하거나 소스를 빌드할 수 있고, Node.js 환경에서 직접 실행하는 방법도 제공합니다.

검색과 재생

검색 요청은 서버에서 여러 소스로 병렬 전송합니다. 서로 다른 소스에서 찾은 동명 작품은 한 카드로 합쳐 결과를 비교하고, 재생 중 다른 소스로 바꿀 때는 회차 위치를 유지합니다. HLS 재생과 자동 연속 재생, 배속, 키보드 단축키를 지원합니다. 모바일에서는 화면을 길게 눌러 3배속으로 재생합니다. 재생 위치와 시청 기록은 서버가 아니라 기기 내 IndexedDB에 저장하며, 위치는 초 단위로 기록합니다. 재생 중 다음 세그먼트를 로컬에 캐시하는 기능과 회차 다운로드 기능도 안내합니다.

IPTV와 소스 관리

M3U 구독을 읽어 채널을 그룹별로 탐색하고 검색할 수 있습니다. 라이브 재생은 HLS와 HTTP-FLV를 지원하며, XMLTV EPG 주소를 연결하면 현재와 다음 프로그램을 표시합니다. 채널 즐겨찾기와 표준 M3U 내보내기도 제공합니다. 점검 기능은 소스 상태를 확인하고, 검색 과정에서 수집한 상태를 바탕으로 연속 실패한 소스를 30분, 24시간, 장기 순으로 비활성화합니다. 관리자는 실패한 소스를 직접 복구할 수 있습니다.

소스는 LibreTV-SourceList 형식의 JSON이나 TVBOX 단일 저장소 설정으로 구독합니다. 설정을 처음 불러온 뒤 24시간마다 조용히 동기화하며, 구독에서 삭제된 항목은 동기화 시 반영합니다. Apple CMS 계열 영상 API와 M3U 라이브 목록을 가져오지만, TVBOX의 Spider 엔진이 필요한 항목이나 XML 인터페이스는 가져오지 않습니다. 소스 주소는 서버가 직접 요청하므로 CORS 설정이 필요하지 않습니다.

배포와 보안

Docker 배포는 GHCR 또는 Docker Hub 이미지를 내려받아 실행하는 방식과 소스에서 빌드하는 방식으로 나뉩니다. 필수 환경 변수 PASSWORD로 사이트 접근 비밀번호를 지정합니다. 운영 환경에서는 HTTPS를 사용해야 합니다. HTTPS가 아니면 브라우저가 Secure 쿠키를 저장하지 않아 비밀번호가 맞아도 로그인이 유지되지 않을 수 있습니다. 로그인 요청에는 IP별 속도 제한이 있고, 프록시는 내부망과 예약 주소를 DNS 확인 뒤에도 차단하는 SSRF 방어를 적용합니다. 예외적으로 자체 내부망 IPTV를 연결할 때는 LIVE_ALLOW_PRIVATE=1을 설정합니다.

프로젝트는 영상이나 채널 목록을 내장하지 않고, 사용자가 지정한 제3자 소스를 검색하고 재생하는 기능을 제공합니다. 설치와 운영 전에 각 소스의 주소와 콘텐츠 이용 조건을 별도로 확인해야 합니다.

원문: GitHub / 번역·요약: Trawling