mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.9 KiB
5.9 KiB
SyncTV
SyncTV 是使用 Rust 实现的实时同步观影平台,支持媒体 Provider 集成、直播、HTTP/gRPC API,以及面向 Kubernetes 的横向扩展部署。
核心能力
- 房间内同步播放,实时同步播放状态。
- 媒体 Provider 支持 Bilibili、Alist、Emby 兼容服务(Emby/Jellyfin)和直链。
- 支持 RTMP 推/拉流、HLS 和 HTTP-FLV 直播。
- 提供 HTTP REST、公开 gRPC、WebSocket、management gRPC、metrics、RTMP 和 STUN 等运行时入口。
- PostgreSQL 持久化业务数据,可选 Redis 作为共享状态、缓存、限流和集群协调层。
- 提供 Docker Compose 和 Helm 部署模板。
- 内置 management CLI,可选 OpenAPI/Swagger UI。
- 使用 Astro Starlight 构建中英文文档站。
快速开始
开发环境需要完整源码仓库:
# 使用内置的本地开发配置。
docker compose -f docker-compose.dev.yml up -d
生产 Compose 可以在仓库根目录执行,也可以在只包含 docker-compose.yml、.env.postgres.example、.env.redis.example、.env.synctv.example 和 scripts/init-compose-env.sh 的部署目录执行。它需要显式配置 PostgreSQL、Redis 和应用鉴权/加密 secret:
# 需要 Docker Compose、openssl 和 python3。
./scripts/init-compose-env.sh
# 启动前编辑 .env.synctv 中的 SYNCTV_BOOTSTRAP_ROOT_PASSWORD。
docker compose config
docker compose up -d
校验配置:
cargo run -p synctv --bin synctv -- config validate
可选 migration 预检。服务启动阶段也会自动执行 embedded SQLx migrations:
cargo run -p synctv --bin synctv -- db migrate
本地启动:
cargo run -p synctv --bin synctv -- serve
文档
主文档站位于 docs/,包含完整配置参考、部署文档、运维手册、CLI 参考、开发文档和 OpenAPI 入口说明。
cd docs
npm install
npm run dev
构建静态文档站:
cd docs
npm run build
如果生成站点部署在子路径下,构建时设置 SYNCTV_DOCS_BASE。SYNCTV_DOCS_SITE 用于 canonical URL 和 sitemap 的公开域名。
cd docs
SYNCTV_DOCS_SITE=https://example.com SYNCTV_DOCS_BASE=/synctv npm run build
重要入口:
- 快速开始
- 文档导览
- 架构总览
- 认证与安全模型
- 管理员操作手册
- 房间、权限与用户偏好
- 客户端集成指南
- 配置文件如何工作
- 完整配置示例
- 配置总索引
- 环境变量
- Runtime settings 参考
- Docker Compose 部署
- Helm 部署
- 生产部署清单
- 备份与恢复
- 升级与迁移
- 数据、隐私与保留策略
- 观测与运行手册
- 排障入口
- CLI 参考
- OpenAPI 文档入口
- gRPC 调试
- 开发指南
仓库流程文档:
工作区结构
synctv:应用二进制和 CLI。synctv-core:核心业务逻辑、配置、服务和 repository。synctv-api:HTTP/gRPC API 层。synctv-livestream:RTMP/HLS/HTTP-FLV 直播能力。synctv-cluster:集群协调。synctv-proxy:媒体代理和 slice cache。synctv-proto:protobuf 定义。synctv-media-providers:Provider 集成支持。synctv-management:management 客户端/控制面支持。synctv-common:共享工具。synctv-xiu:整合后的直播组件。helm/synctv:Kubernetes Helm chart。docs:Astro Starlight 文档站。
License
MIT。见 LICENSE。