LibreSpark /LibreTV

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

★ 24,428⑂ 31,124👁 22⑃ 603● 330▤ 4◈ 19
TypeScriptAGPL-3.0Created 2025-04-06libretv.is-an.org
24,428
stars
31,124
forks
22
watchers
603
prs
330
issues
4
releases
19
discussions

README

LibreTV

LibreTV Next.js 迁移版:免费在线视频聚合搜索与观看平台。基于 Next.js 15(App Router)+ TypeScript + Tailwind CSS,播放内核为 ArtPlayer + hls.js,支持亮暗双主题。

 🏠 官网:LibreTV 官网

 🌐 演示站:tv.bagiinlink.eu.org(访问密码:libretv)

 📖 完整文档:文档首页 · 架构 · 部署 · 配置 · 数据源 · 直播 / IPTV · 首页推荐 · 播放器 · 代理与安全 · FAQ



  


 核心特性

- 聚合搜索:多采集站服务端并行搜索
- 跨源同名聚合:同名影片合并为一张卡片,展开即可比较和选择各来源
- HLS 播放:ArtPlayer + hls.js,广告分片过滤、跳过片段(片头/中段/片尾标记与自动跳过)、自动连播、倍速、快捷键、移动端长按 3 倍速
- 直播 / IPTV:M3U 订阅解析,/live 页面按分组浏览、搜索频道并站内播放(HLS + HTTP-FLV),支持 XMLTV 节目单(EPG)与频道收藏;直播流经专用长连接代理(/api/live/stream)转发
- 进度同步:播放进度与观看历史存于本机 IndexedDB,精确到秒的续播
- 换源测速:跨源搜索同名资源并测速排序,一键切换保留集数位置
- 源测试与订阅:一键探活点播源与直播源(支持批量测活);搜索时自动记录各源健康度,连续失败的源按阶梯时长自动停用(30 分钟 → 24 小时 → 长期),可一键恢复;订阅远程源列表(一份 LibreTV-SourceList JSON 可同时下发点播源与直播源,也可直接填 TVBOX 配置地址,自动导入其中可直接使用的接口),可导出分享
- 首页推荐:豆瓣(电影/剧集分类浏览)、Bangumi 新番放送表或影视榜单(豆瓣周榜 + 百度热播,经 60s API),设置中切换;均服务端直连 + 缓存,Bangumi/榜单免 key 免配置(60S_API_BASE 可指向自部署 60s 实例)
- PWA:可安装到桌面 / 主屏幕,亮暗双主题无首屏闪烁

 部署

 Docker(推荐)

bash
 在 .env 中设置 PASSWORD
echo "PASSWORD=your-password"  .env

 方式一:拉取发布镜像(零构建)
docker compose pull && docker compose up -d

 方式二:源码构建
docker compose up -d --build


 Docker Compose

yaml
services:
  libretv:
    image: ghcr.io/librespark/libretv:latest
    container_name: libretv
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - PASSWORD=change-me    必填:访问密码,务必修改
       - PROXY_SECRET=your-secret           会话/代理签名密钥,多实例部署建议设置
       - DEFAULT_SOURCES=[{"name":"示例源","url":"https://example.com/api.php/provide/vod"}]
       - DEFAULT_LIVE_SOURCES=[{"name":"示例直播源","url":"https://example.com/list.m3u"}]
       - DEFAULT_SUBSCRIPTIONS=["https://example.com/sources.json"]   预置订阅,自动导入点播源+直播源
       - DEFAULT_RECOMMEND_SOURCE=douban   首页推荐数据源默认值(douban/bangumi/hot-list),仅对未主动选择过的用户生效
       - LIVE_ALLOW_PRIVATE=1               自建内网 IPTV 源时开启


 其余可选变量见下方环境变量表;仓库内的 docker-compose.yml 含完整注释版本(含 build: . 源码构建分支)。

bash
docker compose pull && docker compose up -d


 💡 对外提供服务建议套上 HTTPS:登录密码在 POST body 中以明文传输,公网 HTTP 会被中间人看到,推荐用反向代理(Nginx / Caddy / Traefik)或 Cloudflare 终结 TLS。
 登录本身不依赖 HTTPS:会话 cookie 的 Secure 标记按请求协议(x-forwarded-proto)自动推导,http://服务器IP:端口 也能正常登录,不会再出现"密码正确却无法登录"。需要强制指定时用 COOKIE_SECURE。

镜像发布在 GHCR 与 Docker Hub:ghcr.io/librespark/libretv 与 docker.io/bestzwei/libretv
(latest / 主.次 / 完整版本号三个 tag,linux/amd64 与 linux/arm64 双架构,
两个 registry 的镜像 digest 一致)。需要固定版本时在 .env 中设置
LIBRETV_IMAGE=ghcr.io/librespark/libretv:。

 版本号以 package.json 为单一来源,部署后可用 /api/status 返回的 version 字段核对。详见部署文档。

 免 Docker 运行(预构建包)

每个版本都会在 Releases 附一个 libretv--standalone.tar.gz 与对应的 SHA256SUMS,解压后直接用 Node 启动:

bash
 版本号替换为 Releases 中的实际版本(也可用 /api/status 返回的 version 核对)
VER=""
mkdir -p libretv                       包内没有顶层目录,目标目录必须先存在
tar -xzf "libretv-${VER}-standalone.tar.gz" -C libretv
cd libretv
PASSWORD=your-password PORT=8080 node server.js


 不传 PORT 时监听 3000(standalone 的 server.js 默认值),与 Docker 镜像内的 8080 不同,按需显式指定即可。

包内是 Next.js standalone 产物(server.js + public + 静态资源 + 运行时依赖),与 CPU 架构无关,x86_64 / arm64

Top issues

Discussions

Latest release

v2.22.0 v2.22.0 2026-11-08
获取方式

 Docker(多架构 linux/amd64 / linux/arm64)

bash
docker pull docker.io/bestzwei/libretv:2.22.0
docker pull ghcr.io/librespark/libretv:2.22.0


两个 registry 的镜像内容一致(同一组 digest),latest 也指向本版本。

 免 Docker(下方附件,Node 18+)

bash
sha256sum -c SHA256SUMS
tar -xzf libretv-2.22.0-standalone.tar.gz -C libretv
cd libretv && PASSWORD=your-password PORT=8080 node server.js


预构建包与 CPU 架构无关(x86_64 / arm64 / armv7),环境变量与 Docker 部署一致。

 镜像由 docker-publish 工作流在同一 tag 上构建,刚发布时可能还要 5–10 分钟才可拉取。

 变更

完整对比:https://github.com/LibreSpark/LibreTV/compare/v2.21.2...v2.22.0

Snapshot: 2026-11-11T15:31:17Z · Data license Apache-2.0 · JSON