📌 项目地址LibreSpark/LibreTV | ⭐ 13,612 颗星 | 🔧 JavaScript | 📜 Apache-2.0

先搞清楚这是什么东西

LibreTV 是一个免费在线视频搜索与观看平台,后端代理多个视频源的 API,把搜索结果和播放流整合到一个前端页面里。你不用注册账号,部署到自己能控制的服务器或免费托管商(Vercel、Netlify、Cloudflare Pages、Render)就能用。项目基于 bestK/tv 重构,目前 13612 个 Star。

入口网站:libretv.is-an.org,你可以先上去看一眼功能,再决定要不要自己搭。

部署方式对比:哪个最省事

README 给了四种部署方式,我把关键区别和踩过的坑列出来。

一键部署(Vercel / Netlify / Render)—— 推荐新手

点一下按钮,连上你的 GitHub 仓库,几秒就能跑起来。三个平台都支持一键部署:

  • Vercel:https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FLibreSpark%2FLibreTV
  • Netlify:https://app.netlify.com/start/deploy?repository=https://github.com/LibreSpark/LibreTV
  • Render:https://render.com/deploy?repo=https://github.com/LibreSpark/LibreTV

最关键的步骤:部署完成后,一定要在环境变量里加上 PASSWORD。如果在部署面板里没找到环境变量设置入口,等部署完成后再去项目的 Settings → Environment Variables 里添加。不加的话,页面打开只会让你设置密码,什么都看不了。

Cloudflare Pages —— 免费额度很足,但步骤略多

  1. Fork 仓库到你的 GitHub。
  2. 登录 Cloudflare Dashboard → Pages → 创建项目 → 连接你的 fork 仓库。
  3. 构建命令和输出目录都留空(默认根目录),直接部署。
  4. 必须在 Settings → Environment Variables 里添加 PASSWORD
  5. 部署完就能访问。

注意:Cloudflare Pages 默认会给你一个 xxx.pages.dev 的域名,也可以绑自己的域名。免费版每天 500 次构建请求,如果你 fork 后经常自动同步触发构建,可能会耗尽额度。

Docker / Docker Compose —— 适合自己有 VPS 的人

一条命令启动:

docker run -d 
  --name libretv 
  --restart unless-stopped 
  -p 8899:8080 
  -e PASSWORD=your_password 
  bestzwei/libretv:latest

内部端口是 8080,映射到宿主机 8899。如果你想要其他端口,改 -p 左边就行。

Docker Compose 更清晰,把下面的内容存成 docker-compose.yml

services:
  libretv:
    image: bestzwei/libretv:latest
    container_name: libretv
    ports:
      - "8899:8080"
    environment:
      - PASSWORD=${PASSWORD:-111111}
    restart: unless-stopped

然后 docker compose up -d 启动,访问 http://localhost:8899。默认密码是 111111,建议改成你自己的。

注意:如果你改了端口映射,比如改成 -p 3000:8080,访问时就用 http://localhost:3000。环境变量优先从宿主机的 PASSWORD 环境变量读取,如果没有才用 111111

本地开发 —— 不能偷懒用静态服务器

项目包含后端代理功能,视频播放依赖这个代理。如果你图省事,用 python -m http.servernpx http-server 启动,视频播放会失败。README 明确写了这一点。

正确的本地开发步骤:

cp .env.example .env      # 可选,不复制也能运行
npm install
npm run dev

启动后访问 http://localhost:8080。端口可以在 .env 文件里用 PORT 变量修改。npm run dev 是带热重载的,改代码页面自动刷新。

必须设置密码,不是玩笑

所有部署方式都强制要求设 PASSWORD 环境变量。如果你不设置,页面会显示提示让你输入密码——但这个密码是第一次访问时你设置的,实际上代码逻辑里没有设密码就拒绝服务。为什么这么严?README 声明项目只能用于学习和个人使用,不能公开分享。设置密码就是一道门,防止被滥用。你把实例公开了,产生的版权纠纷你自己扛。

同步 fork 仓库的坑

主仓库会持续更新,如果你 fork 了自己的副本,想同步最新代码。README 专门写了一节警告:不要用 Pull Bot。Pull Bot 会反复发送无效 PR 和垃圾邮件,作者可能会拉黑所有用 Pull Bot 的仓库所有者。

推荐的做法有两种:

  1. 启用自带 GitHub Actions:在你的 fork 仓库里,找到 .github/workflows/sync.yml,这个 workflow 会自动同步主仓库更新。不需要你自己配置,默认是开启的。
  2. 手动同步:GitHub 官方提供了“Sync fork”按钮,点击后选择更新即可。

如果同步后页面出现报错,先备份设置(在页面设置面板里导出配置),然后清除浏览器 Cookie,再用 Ctrl + F5 强制刷新页面。我遇到过一次,清 Cookie 确实解决了问题。

如何添加自己的视频源

LibreTV 支持苹果 CMS V10 API 格式。如果你有自己的资源站,只要它兼容这个协议,就能接入。

添加路径:打开 LibreTV 页面 → 设置面板 → 选择“自定义接口” → 填写接口地址,比如 https://example.com/api.php/provide/vod

系统会自动识别两个接口:

  • 搜索接口:https://example.com/api.php/provide/vod/?ac=videolist&wd=关键词
  • 详情接口:https://example.com/api.php/provide/vod/?ac=detail&ids=视频ID

注意:很多公开的 CMS 源不稳定,可能跑几个月就失效了。你可以自己搭建一个 CMS 后端,或者找一些长期维护的公开源。但老实说,公开源的质量参差不齐,卡顿、字幕不对是常事。

播放器快捷键

播放视频时可以用键盘:

  • 空格:播放/暂停
  • 左右箭头:快退/快进
  • 上下箭头:音量增减
  • M:静音/取消静音
  • F:全屏/退出全屏
  • Esc:退出全屏

没有特别之处,算是标准操作。

法律声明不是套话

README 里有一条“重要声明”,写得直接:

  • 仅供学习和个人使用
  • 不能用于商业或公开服务
  • 如果公开分享导致侵权问题,用户自己负责

部署时设密码就是满足“个人使用”的一部分。别想着搭一个公共站给别人用,版权风险是真实的,而且作者已经明确撇清责任了。

技术栈

README 里列了 ` `(空?),实际从代码可以看到前端是用 Vue(或类似框架),后端是 Node.js 代理。但具体版本信息 README 没给,我就不瞎写了。

这篇文章对你有帮助吗?

发表回复