tubesync — Self-Hosted, Open-Source

tubesync - Self-hosted application

License: AGPL-3.0. Source: https://github.com/meeb/tubesync.

Installation

ghcr.io/meeb/tubesync:latest ``` # Screenshots <details> <summary>Click to expand screenshots</summary> ### Dashboard ![TubeSync Dashboard](docs/dashboard-v0.5.png) ### Sources overview ![TubeSync sources overview](docs/sources-v0.5.png) ### Source details ![TubeSync source details](docs/source-v0.5.png) ### Media overview ![TubeSync media overview](docs/media-v0.5.png) ### Media details ![TubeSync media-details](docs/media-item-v0.5.png) </details> # Requirements For the easiest installation, you will need an environment to run containers such as Docker or Podman. You will also need as much space as you want to allocate to downloaded media and thumbnails. If you download a lot of media at high resolutions this can be very large. # What to expect Once running, TubeSync will download media to a specified directory. Inside this directory will be a `video` and `audio` subdirectories. All media which only has an audio stream (such as music) will download to the `audio` directory. All media with a video stream will be downloaded to the `video` directory. All administration of TubeSync is performed via a web interface. You can optionally add a media server, currently only Jellyfin or Plex, to complete the PVR experience. # Installation TubeSync is designed to be run in a container, such as via Docker or Podman. It also works in a Docker Compose stack. `amd64` (most desktop PCs and servers) and `arm64` (modern ARM computers, such as the Raspberry Pi 3 or later) are supported. Example (with Docker on *nix): First find the user ID and group ID you want to run TubeSync as, if you're not sure what this is it's probably your current user ID and group ID: ```bash $ id # Example output, in this example, user ID = 1000, group ID = 1000 # id uid=1000(username) gid=1000(username) groups=1000(username),129(docker) ``` You can find your local timezone name here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones If unset, `TZ` defaults to `UTC`. Next, create the directories you're going to use for config data and downloads: ```bash $ mkdir /some/directory/tubesync-config $ mkdir /some/directory/tubesync-downloads ``` Finally, download and run the container: ```bash # Pull image $ docker pull ghcr.io/meeb/tubesync:latest # Start the container using your user ID and group ID $ docker run \ -d \ --name tubesync \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -v /some/directory/tubesync-config:/config \ -v /some/directory/tubesync-downloads:/downloads \ -p 4848:4848 \ --stop-timeout 1800 \ ghcr.io/meeb/tubesync:latest ``` Once running, open `http://localhost:4848` in your browser and you should see the TubeSync dashboard. If you do, you can proceed to adding some sources (YouTube channels and playlists). If not, check `docker logs tubesync` to see what errors might be occurring, typical ones are file permission issues. Alternatively, for Docker Compose, you can use something like: ```yml services: tubesync: image: ghcr.io/meeb/tubesync:latest container_name: tubesync restart: unless-stopped stop_grace_period: 30m ports: - 4848:4848 volumes: - /some/directory/tubesync-config:/config - /some/directory/tubesync-downloads:/downloads environment: - TZ=Europe/London - PUID=1000 - PGID=1000

Why self-host tubesync

Self-hosting gives you three things SaaS can’t: data ownership (the files live on disks you control), cost predictability (a one-time setup vs. recurring per-seat fees that grow with your household or team), and longevity (open-source means the app keeps working even if the maintainers move on, since you can pin a working version). The trade-off is that you take on the operational work of running a server, applying updates, and handling backups.

What hardware do you need

Most self-hosted apps run comfortably on modest hardware — a Raspberry Pi 4, a mini PC, a NAS with Docker support, or a small VPS is usually enough for personal or family use. CPU and RAM requirements scale with how many simultaneous users or how much data you push through tubesync. Storage requirements depend on the kind of data you keep; check the README for guidance on data retention.

Where to go from here

Last verified: 2026-04-28