当前位置: 首页 > 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.dtcms.com/a/267286.html

相关文章:

  • React Native 亲切的组件们(函数式组件/class组件)和陌生的样式
  • 百度开源文心一言4.5:论文解读和使用入门
  • 闲庭信步使用SV搭建图像测试平台:第三十二课——系列结篇语
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
  • MySQL(118)如何使用SSL进行加密连接?
  • 前端进阶之路-从传统前端到VUE-JS(第三期-VUE-JS配套UI组件的选择)(Element Plus的构建)
  • vscode remote-ssh 拓展免密访问 linux虚拟机
  • 二分查找,乘法口诀表,判断闰年,判断素数,使用函数实现数组操作
  • CSS02:四种CSS导入方式
  • 动手实践OpenHands系列学习笔记7:前端界面设计
  • Flyway 介绍以及与 Spring Boot 集成指南
  • CppCon 2018 学习:Surprises In Object Lifetime
  • Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
  • xformers--Transformer优化加速器使用
  • 暑假算法日记第一天
  • App爬虫工具篇-appium配置
  • Spring Boot中POST请求参数校验的实战指南
  • bean注入的过程中,Property of ‘java.util.ArrayList‘ type cannot be injected by ‘List‘
  • 虚拟机网络编译器还原默认设置后VMnet8和VMnet1消失了
  • 第三方软件测试费用受啥影响?规模和测试类型了解下?
  • Python 训练营打卡 Day 53-对抗生成网络
  • Linux关机指令详解:shutdown命令的使用指南
  • Linux:多线程---深入互斥浅谈同步
  • 动手实践OpenHands系列学习笔记5:代理系统架构概述
  • java中,stream的filter和list的removeIf筛选速度比较
  • 力扣网编程55题:跳跃游戏之逆向思维
  • 虚拟机与容器技术详解:VM、LXC、LXD与Docker
  • 【内存】Linux 内核优化实战 - net.ipv4.tcp_max_tw_buckets
  • [创业之路-474]:企业经营层 - 小米与华为多维对比分析(2025年视角),以后不要把这两家公司放在同一个维度上 进行比较了
  • Springboot应用WebSocket服务测试