Repolode
arabcoders

arabcoders/watchstate

自托管服务,在 Plex、Jellyfin 和 Emby 之间同步播放状态,无需第三方服务。

Star
1,609
Fork
30
未关闭 Issue
2
最近提交
5天前

这是什么?

WatchState 让多台 Plex、Jellyfin 和 Emby 媒体服务器之间的用户播放状态(已看标记和观看进度)保持一致。整个服务运行在自己的环境中,不依赖外部同步服务。

同步支持单向和多对多两种模式。播放状态还可以导出为可移植格式用于备份。通过 identities 功能可以处理多用户,把各服务器上的账号对应起来。

更新既可以通过媒体服务器发来的 webhook 实时获取,也可以依靠定时或手动触发的导入任务补齐遗漏的事件。项目还提供媒体健康检查,用于发现记录问题,并支持搜索后端元数据。以 Docker 镜像形式发布,自带 Web 界面。

核心功能

  • 01在 Plex、Jellyfin 和 Emby 之间单向或多对多同步播放状态。
  • 02接收媒体服务器的 webhook 事件,近实时更新观看进度。
  • 03将播放状态导出为可移植格式进行备份。
  • 04通过 identities 支持多用户。
  • 05提供媒体健康检查,帮助发现记录问题。
  • 06以自托管 Docker 容器运行,并附带 Web 界面。

适用场景

  • 家庭中同时使用 Plex 和 Jellyfin 时,保持已看状态一致。
  • 备份或迁移媒体服务器上的观看记录。
  • 不希望把观看数据交给第三方同步服务的场景。

快速上手

  1. 1

    在数据目录旁创建包含 WatchState 服务的 compose.yaml

  2. 2

    使用 Docker Compose 启动容器

    mkdir -p ./data && docker compose up -d
  3. 3

    打开 http://localhost:8080,首次访问时创建系统用户

使用前须知

  • 1.10.9 之前的版本受 PHP 运行时漏洞影响,请升级到 1.10.9 或更高版本并重新创建容器。
  • 路径匹配现已默认启用,现有记录需要完整导入后才能按路径匹配。
  • Podman 用户需要将容器用户设为 0:0,Unraid 或权限问题可能需要调整用户 ID。

收录于专题

标签

常见问题

watchstate 是什么?
自托管服务,在 Plex、Jellyfin 和 Emby 之间同步播放状态,无需第三方服务。 WatchState 让多台 Plex、Jellyfin 和 Emby 媒体服务器之间的用户播放状态(已看标记和观看进度)保持一致。整个服务运行在自己的环境中,不依赖外部同步服务。
watchstate 可以免费使用吗?用的什么许可证?
watchstate 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
watchstate 还在维护吗?
活跃维护中。watchstate 最近一次提交是在 2026年11月2日。
watchstate 适合用来做什么?
家庭中同时使用 Plex 和 Jellyfin 时,保持已看状态一致。 备份或迁移媒体服务器上的观看记录。 不希望把观看数据交给第三方同步服务的场景。
watchstate 怎么安装和运行?
在数据目录旁创建包含 WatchState 服务的 compose.yaml 使用 Docker Compose 启动容器: mkdir -p ./data && docker compose up -d 打开 http://localhost:8080,首次访问时创建系统用户
在哪里获取 watchstate?
源代码和安装说明在 GitHub 上:https://github.com/arabcoders/watchstate

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目