WatchState is a tool that can sync your play state cross your media backends, without relying on 3rd party services,
this tool support Jellyfin
, Plex Media Server
and Emby
. It's also come with some features, like
finding mis-identified
or unmatched
items, and the ability to
search
your backend for specific item id
or title
.
create your docker-compose.yaml
file:
version: '3.3'
services:
watchstate:
image: ghcr.io/arabcoders/watchstate:latest
container_name: watchstate
restart: unless-stopped
# For information about supported environment variables visit FAQ page.
# works for both global and container specific environment variables.
environment:
- WS_UID=${UID:-1000} # Set container user id.
- WS_GID=${GID:-1000} # Set container group id.
ports:
- "8081:80" # webhook listener port.
volumes:
- ${PWD}:/config:rw # mount current directory to container /config directory.
After creating your docker compose file, start the container.
$ docker-compose pull && docker-compose up -d
After starting the container you should start adding your backends and to do so run the following command:
$ docker exec -ti watchstate console config:add [BACKEND_NAME]
This command is interactive and will ask you for some questions to add your backend.
To edit backend settings run
$ docker exec -ti watchstate console config:manage [BACKEND_NAME]
To import your current play state from backends that have import enabled, run the following command:
$ docker exec -ti watchstate console state:import -v
This command will pull your play state from all your backends. To import from specific backends use
the [-s, --select-backends]
flag which accept comma seperated list of backend names. For example,
$ docker exec -ti watchstate console state:import -v --select-backends 'home_plex,home_jellyfin'
Now that you have imported your current play state enable the import task by adding the following environment variables
to your docker-compose.yaml
file WS_CRON_IMPORT=1
. By default, we have it disabled. for more environment variables
please refer to Environment variables list.
- Scheduled Task.
- On demand.
- Webhooks.
Even if all your backends support webhooks, you should keep import task enabled. This help keep healthy relationship. and pick up any missed events.
To export your current play state to backends that have export enabled, run the following command
$ docker exec -ti watchstate console state:export -v
This command will export your current play state to all of your export enabled backends. To export to
specific backends use the [-s, --select-backends]
flag which accept comma seperated list of backend names. For
example,
$ docker exec -ti watchstate console state:export -v --select-backends 'home_plex,home_jellyfin'
Now that you have exported your current play state, enable the export task by adding the following environment variables
to your docker-compose.yaml
file WS_CRON_EXPORT=1
. By default, we have it disabled. for more environment variables
please refer to Environment variables list.
Take look at this frequently asked questions page. to know more about this tool and how to enable webhook support and answers to many questions.