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.
synctv/README.zh-CN.md

5.9 KiB

SyncTV

SyncTV

English

Rust Tokio Axum gRPC PostgreSQL Redis Docker Helm Kubernetes OpenAPI Astro Starlight License

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

重要入口:

仓库流程文档:

工作区结构

  • 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。