my-homelab-configs/infra/youtube-backup
juvdiaz 6b673e3bdd Add YouTube backup runtime packages 2026-06-27 14:28:17 -06:00
..
.env.example Add YouTube backup helper 2026-06-27 12:55:35 -06:00
README.md Add YouTube backup runtime packages 2026-06-27 14:28:17 -06:00
backup-youtube.sh Add YouTube backup helper 2026-06-27 12:55:35 -06:00
playlists.example.txt Add YouTube backup helper 2026-06-27 12:55:35 -06:00

README.md

YouTube Backup

Standalone helper for backing up your own uploaded YouTube videos with yt-dlp. It is intentionally outside lab.sh, OpenTofu, Argo CD, and the homelab deployment pipeline.

The backup root defaults to /data/youtube-backup.

Install

pipx install yt-dlp

The Debian host bootstrap installs yt-dlp, ffmpeg, and nodejs for this helper. On another machine, install those tools before running the backup.

Configure

sudo mkdir -p /data/youtube-backup/{videos,logs}
sudo chown -R "$USER:$USER" /data/youtube-backup
cp infra/youtube-backup/playlists.example.txt /data/youtube-backup/playlists.txt
cp infra/youtube-backup/.env.example infra/youtube-backup/.env

Edit /data/youtube-backup/playlists.txt and add one playlist, channel, or video URL per line.

For private or unlisted uploads, export browser cookies and set:

YOUTUBE_BACKUP_COOKIES_FILE=/data/youtube-backup/cookies.txt

Alternatively, when running on a desktop with a browser profile:

YOUTUBE_BACKUP_COOKIES_FROM_BROWSER=firefox

Run

infra/youtube-backup/backup-youtube.sh

The script uses:

--download-archive /data/youtube-backup/archive.txt

so repeated runs skip videos that were already backed up.

Downloaded videos and sidecar metadata are written under:

/data/youtube-backup/videos

Each run also writes a timestamped log under:

/data/youtube-backup/logs