← All articles
grayscale photo of black and white wooden sign

Invidious: Self-Hosted Private YouTube Frontend

Media 2026-03-04 · 3 min read invidious youtube privacy self-hosted docker video open-source streaming
By Selfhosted Guides Editorial TeamSelf-hosting practitioners covering open source software, home lab infrastructure, and data sovereignty.

YouTube is the world's largest video platform, but it comes with pervasive tracking, algorithm-driven recommendations, and ads. Invidious is an alternative frontend that proxies YouTube content through your own server — no Google account required, no tracking, no ads, and no algorithmic feed.

Photo by Tim Mossholder on Unsplash

What Invidious Does

Docker Compose Setup

Invidious requires a PostgreSQL database:

services:
  invidious:
    image: quay.io/invidious/invidious:latest
    container_name: invidious
    restart: unless-stopped
    ports:
      - 3000:3000
    environment:
      INVIDIOUS_CONFIG: |
        db:
          dbname: invidious
          user: invidious
          password: changeme
          host: invidious-db
          port: 5432
        check_tables: true
        external_port: 3000
        domain: invidious.yourdomain.com
        https_only: false
        statistics_enabled: false
        registration_enabled: false
        login_enabled: true
    depends_on:
      - invidious-db

  invidious-db:
    image: docker.io/library/postgres:14
    container_name: invidious-db
    restart: unless-stopped
    volumes:
      - invidious-db:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: invidious
      POSTGRES_USER: invidious
      POSTGRES_PASSWORD: changeme

volumes:
  invidious-db:

Navigate to http://your-server:3000. The UI mirrors YouTube's layout but without ads or tracking.

Key Configuration Options

Set these in the INVIDIOUS_CONFIG block:

# Privacy: don't proxy videos by default (saves bandwidth) — users can toggle
default_user_preferences:
  proxy_videos: false
  quality: hd720
  dark_mode: dark

# Rate limiting and performance
pool_size: 100
use_quic: false

# Automatically refresh subscriptions
feed_menu: ["Subscriptions", "Playlists", "History"]

For a private instance (single household), set registration_enabled: false and login_enabled: true — create accounts manually.

Features

Subscriptions Without a Google Account

Create an account on your Invidious instance → subscribe to channels. Invidious stores subscriptions locally in PostgreSQL. Your subscription list never reaches Google.

Export/import subscriptions as OPML files for migration.

Channel RSS Feeds

Every channel has an RSS feed via Invidious:

https://invidious.yourdomain.com/feed/channel/UC...

Add these to your RSS reader (Miniflux, FreshRSS) for a clean, algorithm-free subscription feed.

Download via yt-dlp Integration

With yt-dlp installed on the same host, Invidious can offer download links for videos. Add to config:

yt_dlp:
  enabled: true

Playlist Support

Import and subscribe to YouTube playlists. Useful for following curated content without the recommendation noise.

Bandwidth Considerations

By default, videos still stream from YouTube's CDN — Invidious proxies metadata and the initial request but video data comes from Google. With proxy_videos: true, all traffic routes through your server:

For home use without exposing to the internet, proxy-off is usually fine.

Reverse Proxy with Caddy

invidious.yourdomain.com {
    reverse_proxy localhost:3000
}

Or with Nginx:

server {
    listen 443 ssl;
    server_name invidious.yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Limitations

Invidious depends on YouTube's internal API — when Google changes their API structure, Invidious breaks until updated. This happens several times per year. The community-maintained codebase typically patches within days to weeks.

Age-restricted content: Requires a Google account configured as a token on the instance. Not ideal for privacy.

Live streams: Limited support. Works for some, not all live content.

Shorts: YouTube Shorts have inconsistent support across versions.

Comparison: Invidious vs Using a VPN

Invidious VPN
Removes tracking Yes (from Google) Partial
Removes ads Yes No (YouTube serves from same domain)
Google account needed No Optional
Kills recommendation algorithm Yes No
Self-hosted Yes VPN provider

An ad blocker removes YouTube ads in a browser. Invidious removes the entire tracking layer — even without an ad blocker.

Use Cases

Privacy-conscious household: Watch YouTube without Google building a profile of viewing habits.

Child accounts: Create Invidious accounts for kids with specific channel subscriptions, bypassing YouTube's algorithm-driven recommendations.

RSS-based workflow: Subscribe to all YouTube channels via RSS in your feed reader — no algorithm, no shorts, no notifications.

Slow/unreliable internet: Some configurations cache video segments, improving playback stability.

The Invidious project is at github.com/iv-org/invidious. For households wanting YouTube access without the surveillance, running a private instance is the most thorough solution.

Get free weekly tips in your inbox. Subscribe to Self-Hosted Weekly