Allows for synchronous watching of online-videos with other humans.
Supports YouTube videos as well as videos from many other websites.
Provides a queue to watch multiple videos one after another.
Go to https://vsync.randomerror.de/
and share the generated link for others to join.
All connected humans can queue, play/pause or seek in the video, the control is not limited to the creator of the room. For YouTube videos the YouTube player, including all its shortcuts, can be utilized fully. No pop-ups asking you to create/join a room, no strange external control bar.
Queue videos by Link, Youtube-Id or any query. When entering a query the first YouTube result will be added to the queue, use at your own risk.
- playback speed synchronization
- not sure what happens for people without an ad blocker
- playlist support
- handle unplayable videos
Pre-built docker images are available at ghcr.io/iyzana/yt-sync-backend:latest
and
ghcr.io/iyzana/yt-sync-frontend:latest
for the backend and fronted respectively.
An example docker-compose file if provided at docker-compose.yml
.
This file assumes that an docker network named nginx_default
already exists and that another
container serves as a reverse proxy for both services.
An example nginx server {}
-block is provided at nginx-docker.conf
for how to configure nginx as
a reverse proxy for these services.
The backend is a Kotlin application, a Java 17 installation is required to compile and run it.
To compile the backend on Linux run the following commands:
cd backend
./gradlew shadowJar
The Jar-file of the application will be written to build/libs/yt-sync-all.jar
.
Copy it to your preferred location and then run it using java -jar yt-sync-all.jar
.
The application requires yt-dlp
to be installed for fetching video information.
Building the fronted requires a recent nodejs, as well as yarn installation.
To build the frontend on Linux run the following commands:
cd frontend
yarn
yarn build
The build output will be written to the build
directory.
To serve the frontend a webserver is required.
An example configuration for the webserver nginx is included at
nginx.conf
.
You will need to update the Content-Security-Policy
header in the nginx.conf
as per the comment
above that line.
The provided nginx configuration expects the build output to be available at /data/dist