>
Business Tech

YT Zero turns a Synology NAS into a Google-free YouTube inbox

Most of the public web is hostile to the idea of paying attention on purpose. The big video site in particular has spent a decade making the act of “watch one video from a creator you actually like” into a slot machine pull. The recommendations column keeps filling with strangers, the mid-roll ads keep arriving at the worst moment, and the autoplay queue keeps deciding what comes next even when you closed the tab hours ago. I do not want any of that. I want a feed reader for video, full stop, and I want it running on hardware I own.

That is exactly what YT Zero does. It is a small self-hosted project that pulls the public RSS feeds of channels you choose, stores them in a SQLite database on your own disk, and serves them back to you in the order they were published. No Google account, no API key, no algorithm. If you already run a Synology NAS (a network-attached storage device popular for home servers) with Docker and Portainer, you can have the whole thing up in under an hour, and that hour is mostly waiting for images to download.

Here is the install path I followed, with the rough edges called out so you do not have to discover them on your own.

What it is, and what it is not

YT Zero is not a YouTube replacement. It is a personal YouTube inbox. Behind the scenes it does the simplest possible thing: each channel you subscribe to has a public RSS feed at youtube.com/feeds/videos.xml?channel_id=..., and the app polls those feeds, normalizes the entries, and writes them into a local database. The web UI (user interface) you load in your browser is just a clean reader on top of that database. There is no video player competing with the official one, no fancy transcoding, and no “for you” shelf.

The optional yt-dlp integration (a popular command-line tool that downloads videos from many sites, including YouTube) is where the project gets interesting. Turn it on, and any video in your inbox can be downloaded for offline playback in the built-in player, which means the same NAS that holds your family photos also becomes your personal archive. That is the deal I have been looking for.

The feature list aimed at actual households is the other thing I appreciate. There are per-user profiles so family members do not share watch histories, optional locks so younger viewers do not escape into the wider feed, SponsorBlock support (a community-maintained system that skips paid promotion segments in videos) to skip the mid-roll pitch, and DeArrow support (a community project that replaces sensationalist clickbait thumbnails with cleaner titles and frames) to replace the most obnoxious thumbnails with cleaner ones. None of that is on by default in the standard YouTube client, and none of it requires trusting Google to ship it.

What you are giving up, honestly:

  • Discovery. There is no algorithm suggesting creators you have never heard of. You add the channels yourself.
  • Comments and likes. The app is a reader, not a social client.
  • Live premieres and community posts. RSS does not cover those formats well.
  • The recommendation shelf that occasionally surfaces a gem you would have missed. If that is important to you, this is the wrong tool.

What you need on the NAS

Three things have to be true before you start. First, you need a Synology NAS on a recent DSM (DiskStation Manager, Synology’s operating system) version that still supports Container Manager (the Docker successor on modern DSM). Older DSM versions use the original Docker package, and the same compose file works on both, but the menus look different.

Second, you need Portainer already deployed and connected via the Live connect flow. If you have never done this, take the thirty minutes to do it first. The rest of this guide assumes Portainer is reachable and that the Stacks menu can talk to your Docker engine.

Third, you need a folder for the app’s data. I used /volume1/docker/ytzero, matching the convention in Marius Hosting’s walkthrough, so future upgrades and updates line up with the published examples.

Worth confirming before you paste the stack:

  • The DSM Container Manager package is current, or the legacy Docker package is current, depending on your DSM version.
  • Portainer was deployed with a known admin password and the Live connect toggle is on.
  • You have at least 2 GB of free RAM for the container plus headroom for SQLite writes during peak sync.
  • Your NAS has a static or reserved IP (a fixed local address that your router always hands to the same device), so the URL you bookmark today is the same one you reach next month.

None of those is a hard requirement. They are the things I wish I had double checked on the first attempt.

The Portainer stack, step by step

Open Portainer, sign in, click Stacks on the left rail, then Add stack. Name it yt-zero, paste the compose snippet from the project README into the web editor, and adjust the volume mount to point at the folder you created above. The image tag is published on Docker Hub, and the example compose file is short enough to read in one sitting, which I recommend doing instead of just pasting.

Click Deploy the stack. When the success banner appears, give the container about thirty seconds to write its initial database, then point a browser at the published port on your NAS. The first page you see is a clean sign-in screen with a “create your admin” prompt. That is your cue to pick a real password, because the database on disk is the only thing protecting your watch history from anyone who can reach the URL.

The thing I like most about this project is that there is no second step. There is no “now go fetch an API key” or “now create an OAuth app.” Once the container is up and the admin account exists, you are done with infrastructure. The rest of the time is spent adding channels to your feed, which is the entire point.

Family features, in plain English

The household features are the part I did not expect to care about and now rely on. Each family member gets a profile with its own subscription list and watch history, which sounds small until you live with it. My partner and I have wildly different taste in long-form video, and the official site insists on blending everything into a single mush. With per-user profiles, the recommendations do not bleed across, the watch history is genuinely private, and the “continue watching” shelf actually makes sense.

The lock feature is a thin safety net rather than a parental control system. It keeps a profile pinned to the subscribed channels list with no escape hatch to search, recommendations, or trending. It is not a substitute for actually talking to your kids about what they watch, but it is a useful second line of defense.

SponsorBlock and DeArrow are community projects that work by sending your player a list of timestamps or alternative titles contributed by other viewers. They are not perfect, and they occasionally skip too aggressively on smaller channels where the data is thin. They are, however, dramatically better than nothing, and the project supports them out of the box.

Trade-offs

YT Zero is the right size for a household that already knows which creators it cares about. It is the wrong size for a casual viewer who leans on discovery to find new things to watch, and it will not pretend otherwise.

  • It is a reader, not a replacement. The actual playback still happens in your browser using the public embed (or a downloaded file if you turn on yt-dlp).
  • RSS does not cover every YouTube feature. Live premieres, community posts, and shorts metadata are partial or missing.
  • It is small enough to be maintained by one person. That is a feature, and a single point of failure, and you should hold both in your head at once.
  • It is dependent on the public RSS feeds staying public. YouTube has throttled them before. There is no contract that says it will not do so again.
  • Per-user profiles are real, but they are not a parental control system. The lock feature is a soft guardrail, not a fence.

What I would tell past me

The whole thing took me about forty-five minutes including reading the README twice. The actual deploy was maybe five minutes. The rest was waiting for the initial database sync and adding channels one at a time to my subscription list.

If you already have Portainer running and you already know which creators you want to follow, you are an afternoon away from a private YouTube inbox that does not require Google’s permission. If you do not already have that creator list, spend a week keeping notes on whose videos you actually finish before you start, because the value of this app scales directly with how well you curate your own feed.

Leave a comment