当前位置: 首页 > news >正文

cloudflare配合github搭建免费开源影视LibreTV一个独享视频网站 详细教程

一、项目简介

LibreTV 是一个开源的 IPTV/影视聚合前端项目,支持 M3U 播放列表、EPG 电子节目单等。它本身是纯前端项目,非常适合用 GitHub Pages + Cloudflare 免费托管。


二、准备工作

  1. GitHub 账号

注册并登录 GitHub

  1. Cloudflare 账号

注册并登录 Cloudflare

  1. 一个自己的域名

    (可选,但推荐,后续可接入 Cloudflare)


三、Fork 或下载 LibreTV 项目

  1. 打开 LibreTV 仓库

  1. 点击右上角 Fork,将项目复制到你的 GitHub 账号下

  1. 或者点击 Code → Download ZIP 下载到本地


四、部署到 GitHub Pages

1. 新建仓库(如果是 Fork 可跳过)

  • 登录 GitHub,点击右上角 + → New repository

  • 填写仓库名(如 libretv),选择 Public,点击 Create repository

2. 上传项目代码

  • 如果是 Fork,代码已在你仓库,无需上传

  • 如果是本地下载,上传到你的仓库

3. 启用 GitHub Pages

  • 进入你的仓库 → Settings → Pages

  • Source 选择 main 分支(或 master,以实际为准),目录选择 / (root)

  • 保存后,GitHub 会分配一个访问地址,如:

https://你的用户名.github.io/仓库名/

4. 访问测试

  • 打开上面的地址,应该可以直接访问 LibreTV 页面

五、绑定自定义域名(Cloudflare 配合)

1. 域名接入 Cloudflare

  • 登录 Cloudflare,添加你的域名,按提示更换 DNS 到 Cloudflare 提供的服务器

2. 添加 CNAME 解析

  • 进入 Cloudflare → DNS → 添加记录

  • 类型选 CNAME

  • 名称填你想用的前缀(如 tv),目标填 你的用户名.github.io

  • 例如:tv.yourdomain.com → 你的用户名.github.io

3. GitHub Pages 绑定自定义域名

  • 仓库 → Settings → Pages → Custom domain,填写你的域名(如 tv.yourdomain.com),保存

  • GitHub 会自动生成 CNAME 文件

4. Cloudflare 开启 HTTPS

  • Cloudflare → SSL/TLS → 选择“完全”或“灵活”模式,确保 HTTPS 可用


六、LibreTV 配置与使用

1. 配置 M3U 播放列表

  • LibreTV 支持自定义 M3U 播放列表(可用开源 IPTV 源或自建)

  • 你可以在页面设置里添加自己的 M3U 链接

2. 配置 EPG 电子节目单(可选)

  • 支持自定义 EPG 链接,提升节目体验

3. 个性化定制

  • 你可以修改 index.html、config.js 等文件,定制界面和功能

  • 修改后推送到 GitHub,几分钟后自动生效

七、常见问题

  1. 页面打不开/404?
  • 检查 GitHub Pages 设置是否正确,分支和目录是否选对

  • 检查 CNAME 解析和 Cloudflare 配置

  1. HTTPS 不生效?
  • Cloudflare SSL/TLS 设置为“完全”或“灵活”

  • 等待 DNS 生效

  1. M3U/EPG 无法加载?
  • 检查链接是否可用,是否支持跨域(CORS)

http://www.lryc.cn/news/580370.html

相关文章:

  • vue3 el-input el-select 非空校验
  • 每日学习问题记录
  • DVWA靶场通关笔记-验证码绕过reCAPTCHA(High级别)
  • vue中添加原生右键菜单
  • 【零基础学AI】第24讲:卷积神经网络(CNN)架构设计
  • 【无标题】Go语言中的反射机制 — 元编程技巧与注意事项
  • 3dmax物理材质转换标准材质,物理材质转VR材质,VR材质转标准材质3dmax物理材质转标准材质插件
  • 电脑休眠设置
  • c++ python 共享内存
  • 后端树形结构
  • STM32F103RCTx的PWM输出控制电机
  • js游戏简单修改
  • React Native 开发环境搭建--mac--android--奔溃的一天
  • Hinge×亚矩云手机:以“深度连接”为名,重构云端社交的“真实感”
  • CSS02:四种CSS导入方式
  • pyspark大规模数据加解密优化实践
  • Python小工具之PDF合并
  • 数据结构:多维数组在内存中的映射(Address Mapping of Multi-dimensional Arrays)
  • IDEA中application.yml配置文件不自动提示解决办法
  • 如何在IntelliJ IDEA中设置数据库连接全局共享
  • 从“电话催维修“到“手机看进度“——售后服务系统开发如何重构客户体验
  • CppCon 2018 学习:Surprises In Object Lifetime
  • Kotlin 协程:Channel 与 Flow 深度对比及 Channel 使用指南
  • 【ES6】Latex总结笔记生成器(网页版)
  • Jenkins Pipeline(二)
  • 【Elasticsearch】深度分页及其替代方案
  • 【openp2p】 学习2:源码阅读P2PNetwork和P2PTunnel
  • 【STM32实践篇】:GPIO 详解
  • 网络资源模板--基于Android Studio 实现的极简天气App
  • Excel 数据透视表不够用时,如何处理来自多个数据源的数据?