The project's README from github.com/KuekHaoYang/KVideo. As one markdown file: README.md.
![]()
一个基于 Next.js 16 构建的现代化视频聚合播放平台。采用独特的 "Liquid Glass" 设计语言,提供流畅的视觉体验和强大的视频搜索功能。
在线体验:https://kvideo.pages.dev/
KVideo 是一个高性能、现代化的视频聚合与播放应用,专注于提供极致的用户体验和视觉设计。本项目利用 Next.js 16 的最新特性,结合 React 19 和 Tailwind CSS v4,打造了一个既美观又强大的视频浏览平台。
说明:仓库默认不内置任何视频源、高级源或 IPTV 源。部署者必须自行配置已获授权、可合法使用且允许当前部署方式访问的内容来源。
项目的视觉设计基于 "Liquid Glass" 设计系统,这是一套融合了以下特性的现代化 UI 设计语言:
backdrop-filter 实现的磨砂半透明效果,让 UI 元素如同真实的玻璃材质rounded-2xl 和 rounded-full 两种圆角半径,创造和谐的视觉体验cubic-bezier 曲线,实现自然的加速和减速过渡http-user-agent 和 http-referrer 属性,通过代理传递iptv_access 权限控制谁可以访问 IPTV 功能useTransition 非阻塞渲染,避免大列表卡顿DANMAKU_API_URL 或 NEXT_PUBLIC_DANMAKU_API_URL 为所有用户预设弹幕 API 地址解决 iOS Safari「添加到主屏幕」后 PWA 与浏览器之间 localStorage 不共享的问题(#119),同时实现多设备配置共享(#115)。
工作原理:
/api/user/config API 存储在 Upstash Redis 中,使用 user:config:{profileId} 作为 key。Edge Runtime 兼容,Cloudflare Pages / Vercel 均可部署。useConfigSync hook 从服务端拉取配置,与本地 updatedAt 时间戳比较——服务端更新时自动合并到本地。sources)、高级源 (premiumSources)、订阅列表 (subscriptions)、屏蔽分类 (blockedCategories)、排序偏好 (sortBy)、语言 (locale)。profileId(SHA-256 哈希)隔离,不同账户互不影响。使用前提:
UPSTASH_REDIS_REST_URL 和 UPSTASH_REDIS_REST_TOKEN),与观看历史/收藏同步共用同一 Redis 实例。典型场景:
/premium 即可进入独立的高级视频专区MainActivity.kt 中修改 KVIDEO_URL 常量指向你的部署实例tv-mode CSS 类,激活大屏优化样式ContentView.swift 中修改 kvideoURL 常量指向你的部署实例本应用注重用户隐私:
KVideo 现在支持两套认证模式:
AUTH_SECRET + Upstash Redis 后,登录改为 用户名 + 密码,超级管理员可直接在设置页创建、修改、重置和删除账户。ADMIN_PASSWORD / ACCESS_PASSWORD / ACCOUNTS 进行密码登录。启用条件:
AUTH_SECRETUPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKENMANAGED_AUTH_ENABLED=true 强制优先使用托管账户模式启用后:
强制优先托管模式:设置
MANAGED_AUTH_ENABLED=true只会改变认证模式选择,不会跳过AUTH_SECRET和 Redis 检查。缺少AUTH_SECRET、UPSTASH_REDIS_REST_URL或UPSTASH_REDIS_REST_TOKEN时,托管账户模式仍不会启用。 首次启用时,如果 Redis 里还没有账户,会自动使用ADMIN_PASSWORD和ACCOUNTS作为引导种子创建首批托管账户。
通过 ADMIN_PASSWORD 环境变量设置管理员密码:
# Docker
docker run -d -p 3000:3000 -e ADMIN_PASSWORD=your_password --name kvideo kuekhaoyang/kvideo:latest
登录后自动获得超级管理员权限,可管理所有设置。
向后兼容:
ACCESS_PASSWORD环境变量仍然有效,当ADMIN_PASSWORD未设置时,ACCESS_PASSWORD将作为管理员密码使用。
通过 ACCOUNTS 环境变量配置多个账户,每个账户拥有独立的数据空间(收藏、历史、设置、个人源等)。
兼容格式:
密码:名称[:角色[:权限1|权限2|...]]用户名:密码:名称[:角色[:权限1|权限2|...]]多个账户之间用逗号分隔。
super_admin(超级管理员)、admin(管理员)或 viewer(观众,默认)| 分隔,为该账户添加其角色之外的额外权限# 基本用法
docker run -d -p 3000:3000 \
-e ACCOUNTS="pass1:张三:admin,pass2:李四:viewer,pass3:王五" \
--name kvideo kuekhaoyang/kvideo:latest
# 为观众添加额外权限(如 IPTV 访问和源管理)
docker run -d -p 3000:3000 \
-e ACCOUNTS="pass1:张三:admin,pass2:李四:viewer:iptv_access|source_management" \
--name kvideo kuekhaoyang/kvideo:latest