At køre yt-dlp på en VPS giver lange downloads en maskine, der bliver online, efter du lukker din bærbare. Det skaber også en ren vej fra et planlagt kanaltræk til et mediebibliotek, som Jellyfin kan skanne.
Serveren ændrer tre dele af arbejdsgangen: installationen kræver aktuelle YouTube-afhængigheder, videoer bag en konto kræver en sikker cookieoverførsel, og automatisering kræver et bevidst tempo i forespørgslerne. Opsætningen nedenfor håndterer alle tre uden at antage, at enhver download kræver cookies, en webgrænseflade eller en PO Token-udbyder.
TL;DR
- Installer yt-dlp i et virtuelt Python-miljø sammen med ffmpeg, ffprobe, yt-dlp-ejs og en understøttet JavaScript-runtime. Deno er den runtime, projektet aktuelt anbefaler.
- Start uden konto-cookies. Tilføj dem kun til private playlister, aldersbegrænsede videoer, indhold kun for medlemmer eller et andet tilfælde, der kræver en konto.
- Behold yt-dlp's standardadfærd med ét fragment, indtil du har en målt grund til at ændre den. Brug sleep-indstillinger og forskudte tidsplaner for at mindske presset fra forespørgsler.
- Ren CLI plus systemd er den enkleste pålidelige opsætning. Vælg Pinchflat til kanalregler, der passer sig selv, MeTube til en kø i browseren, eller Tube Archivist til en søgbar visningsgrænseflade.
- Behandl lagerplads som den vigtigste variabel, når du dimensionerer. Test en repræsentativ stikprøve, før du køber diskkapacitet til et fuldt arkiv.
Brug yt-dlp ansvarligt
Arkivér kun medier, når du har tilladelse, og din brug overholder platformens vilkår og gældende lov.
- Gode kandidater er dine egne uploads, materiale i det offentlige domæne og indhold, hvor rettighedshaveren har tilladt download.
- Et YouTube Premium-abonnement giver ikke i sig selv lov til at kopiere videoer uden for de funktioner, YouTube stiller til rådighed.
- YouTubes tilladelser og begrænsninger begrænser download og automatiseret adgang, medmindre tjenesten eller de relevante rettighedshavere tillader det.
- Denne vejledning dækker ikke omgåelse af DRM, kommerciel videredistribution eller måder at undvige platformens håndhævelse på.
Hvad du skal bruge, før du går i gang
Basisinstallationen er lille, men mediefilerne er ikke. Forbered serveren og lagerstien, før du henter en hel kanal.
- En VPS med Ubuntu 22.04 eller nyere, eller en aktuel Debian-udgivelse, med SSH-adgang
- Python 3.10 eller nyere
- Nok lagerplads til en repræsentativ stikprøve plus luft til delvise filer og efterbehandling
- En separat lokal browser, kun hvis du har brug for konto-cookies
- Valgfrit: Jellyfin, Emby eller en anden medieserver, der kan læse arkivmappen
Hvorfor lægge yt-dlp på en VPS?
En VPS er nyttig, når opgaven skal blive ved med at køre uafhængigt af din daglige computer. Den giver downloaderen en vedvarende proces, et forudsigeligt filsystem og en planlægger, der ikke stopper, når en bærbar går i dvale eller skifter netværk.
Afvejningerne betyder noget. Din servers månedlige trafikkvote kan blive en grænse, når du streamer arkivet ud igen, og en VPS-IP kan løbe ind i forespørgselsgrænser tidligere end din hjemmeforbindelse. Du står også selv for opdateringer, håndtering af legitimationsoplysninger, backups, oprydning i lageret og sikkerheden på medieserveren. Til en engangsdownload er en bærbar enklere. Til gentagne træk eller et delt mediebibliotek er en VPS lettere at drive.
Dimensionér din VPS ud fra lagerplads og afspilning
yt-dlp henter og remuxer medier; normalt transkoder det ikke hver eneste fil. Det holder downloaderens vedvarende behov for CPU og hukommelse beskedent, mens diskforbruget varierer med videoens længde, opløsning, codec og det valgte format.
Brug disse tildelinger som konservative udgangspunkter, ikke som officielle minimumskrav:
| Opsætning | Startallokering | Tilgang til lagring | Bedst egnet |
|---|---|---|---|
| Rent yt-dlp med systemd | 2 vCPU, 2 GB RAM | Dimensionér ud fra en stikprøve | Planlagte downloads uden brugerflade |
| MeTube eller Pinchflat | 2 vCPU, 4 GB RAM | Dimensionér ud fra en stikprøve | Kø i browseren eller kanalabonnementer |
| Tube Archivist | 4 vCPU, 8 GB RAM | Lokal disk med plads til vækst | Søgbart arkiv med indbygget afspilning |
En lille test kræver omkring 2 GB tilgængelig hukommelse, og en mellemstor til stor installation omkring 4 GB, ifølge Tube Archivists udrulningsguide. At starte over den bundgrænse giver plads til styresystemet, Docker, Elasticsearch-aktivitet og endnu en tjeneste som Jellyfin.
Før du dimensionerer et fuldt arkiv, så simulér eller hent en repræsentativ gruppe i den opløsning, du har valgt. Undersøg den resulterende mappe med du, divider med antallet af færdige videoer, og tag højde for usædvanligt lange uploads.
du -sh ~/archive
find ~/archive -type f \( -name '*.mp4' -o -name '*.mkv' \) | wc -l
df -h ~/archive
Stikprøven er mere nyttig end et generisk skøn i gigabyte pr. video, fordi den afspejler kanalens faktiske længde og blanding af formater.
Installer yt-dlp og dens aktuelle afhængigheder
yt-dlp-projektet understøtter Python 3.10 og nyere. yt-dlp's liste over afhængigheder anbefaler kraftigt ffmpeg, ffprobe, yt-dlp-ejs og en understøttet JavaScript-runtime for fuld YouTube-understøttelse.
Start med systempakkerne og et isoleret Python-miljø:
sudo apt update
sudo apt install -y python3 python3-venv ffmpeg curl nano
python3 -m venv ~/yt-dlp-venv
source ~/yt-dlp-venv/bin/activate
python -m pip install -U --pre "yt-dlp[default]"
Deno er slået til som standard i yt-dlp og er den runtime, som projektets EJS-guide EJS-guide aktuelt anbefaler. Installer den, føj den til din shells sti, og verificér hver komponent:
curl -fsSL https://deno.land/install.sh | sh
export PATH="$HOME/.deno/bin:$PATH"
echo 'export PATH="$HOME/.deno/bin:$PATH"' >> ~/.profile
yt-dlp --version
ffmpeg -version | head -1
deno --version
yt-dlp --simulate --verbose "https://www.youtube.com/watch?v=VIDEO_ID"
Den udførlige udskrift viser de afhængigheder, yt-dlp kan se. Mangler ffmpeg, advarer yt-dlp og kan hverken sammenføje adskilte video- og lydspor i bedste kvalitet eller køre flere efterbehandlingstrin.
Ved en pip-installation opdaterer du ved at køre pip igen inde i det virtuelle miljø. Den indbyggede kommando yt-dlp -U gælder release-binære filer, ikke pip-pakker.
source ~/yt-dlp-venv/bin/activate
python -m pip install -U --pre "yt-dlp[default]"
Opdateringskanalerne er beskrevet i yt-dlp's opdateringsnoter. Kanalerne stable, nightly og master er alle tilgængelige, og nightly er projektets anbefaling til almindelige brugere, fordi rettelser til extractors lander der før den næste stabile udgivelse.
Tilføj kun cookies til indhold, der kræver en konto
Prøv først mål-URL'en uden cookies. yt-dlp's YouTube-guide siger, at cookies kun er nødvendige til indhold, der kræver en konto, herunder private playlister, aldersbegrænsede videoer og indhold kun for medlemmer. Login via OAuth virker ikke længere med yt-dlp.
Når cookies er nødvendige, så eksportér en dedikeret YouTube-session på din lokale computer. Projektets procedure for cookieeksport bruger et privat browservindue, så YouTube ikke udskifter den eksporterede session i en åben almindelig fane:
- Åbn ét privat vindue eller inkognitovindue, og log ind på YouTube.
- Åbn YouTubes robots.txt-fil i den samme fane.
- Eksportér kun cookies fra youtube.com i Netscape-format med en af de udvidelser, der er nævnt i yt-dlp's FAQ.
- Luk det private vindue, og åbn ikke den session igen.
- Kopiér filen til din VPS, og begræns dens rettigheder.
scp cookies.txt your-user@your-vps-ip:~/cookies.txt
ssh your-user@your-vps-ip 'chmod 600 ~/cookies.txt'
Test filen med en URL, der kræver en konto:
~/yt-dlp-venv/bin/yt-dlp \
--cookies ~/cookies.txt \
--simulate \
"https://www.youtube.com/watch?v=VIDEO_ID"
Cookiefiler er sessionslegitimation, og browserudvidelser skal vælges med omhu, ifølge yt-dlp's cookie-FAQ. Guiden til YouTube-extractoren advarer også om, at brug af en konto sammen med yt-dlp kan føre til en midlertidig eller permanent udelukkelse. Brug kun cookies, når målet kræver det, hold filen privat, og brug en separat konto frem for din primære Google-konto.
Sæt ikke --cookies i den globale konfiguration, når de fleste mål er offentlige. Brug en ekstra konfigurationsfil, eller tilføj kun flaget til de jobs, der har brug for det.
Betragt PO Tokens som betinget fejlfinding
Et Proof of Origin Token er ikke et generelt installationskrav. YouTube håndhæver aktuelt disse tokens for visse kombinationer af klient og forespørgsel, og den præcise matrix ændrer sig.
Når standardklienterne fejler, anbefales et provider-plugin til mweb-klienten, ifølge yt-dlp's PO Token-guide. Den nævner bgutil-ytdlp-pot-provider som en af de fremhævede muligheder, men det plugin kræver både en token-udbyder og et yt-dlp-plugin. At installere Python-pakken alene er ikke en komplet opsætning.
Følg denne rækkefølge, når en YouTube-download fejler:
- Opdatér yt-dlp, yt-dlp-ejs og JavaScript-runtimen.
- Reproducér fejlen med --verbose og uden ekstra klient-override.
- Tilføj kun cookies, hvis videoen kræver en konto.
- Peger fejlen på håndhævelse af PO Tokens, så følg de aktuelle udbyderinstruktioner, der linkes til fra den officielle guide.
På den måde holder du en ustabil nødløsning ude af en ellers stabil basisinstallation.
Vælg en frontend efter arbejdsgang
Hovedbeslutningen er ikke, hvilken grænseflade der har den længste funktionsliste. Afgør, om du har brug for en kø i browseren, regelbaserede abonnementer eller et komplet lokalt bibliotek i YouTube-stil.
| Mulighed | Udrulning | Stærk til | Vigtigste afvejning |
|---|---|---|---|
| Ren CLI | Ingen frontend | Scripts, konfigurationsfiler, systemd, præcis kontrol over flag | Ingen browsergrænseflade |
| MeTube | Én Docker-container | Downloads via browseren plus abonnementer på kanaler og playlister | Begrænset bibliotekshåndtering efter download |
| Pinchflat | Én Docker-container | Regler for kanaler og playlister, RSS, opbevaring, output til mediecenter | Bygget til at styre downloads, ikke til at se med i appen |
| Tube Archivist | Containere til app, Redis og Elasticsearch | Søgning, metadata, køer, kanalsider og afspilning | Højeste hukommelses- og driftsbelastning |
Til en let arbejdsgang i browseren understøtter MeTube abonnementer på kanaler og playlister, der jævnligt tjekker for nye elementer og automatisk sætter dem i kø. Det er fortsat det enkleste valg, når du mest af alt vil have en webformular og en downloadkø.
Pinchflat passer bedst til løbende kanalarkivering, som du siden ser via Jellyfin, Plex, Kodi eller en RSS-klient. Den er selvstændig, tjekker kilder jævnligt, understøtter opbevaringsregler og overlader bevidst afspilningen til en anden applikation.
Tube Archivist gør sine ekstra tjenester fortjent, når du vil have, at selve arkivet opfører sig som et søgbart videosite. Hvis Jellyfin allerede leverer din afspilningsgrænseflade, så start med ren CLI eller Pinchflat, og tilføj først Tube Archivist, når dens søge- og metadatamodel løser et problem, du reelt har.
Byg en gentagelig arkivkonfiguration
Hold de varige indstillinger i én fil, og send kanal-URL'en med fra kommandolinjen eller planlæggeren. Eksemplet begrænser output til 1080p, noterer id'er på færdige videoer, spreder forespørgslerne en smule og skriver metadata, der også er nyttige uden for yt-dlp.
Opret mapperne og konfigurationsfilen:
mkdir -p ~/.config/yt-dlp ~/archive
nano ~/.config/yt-dlp/archive.conf
Tilføj disse indstillinger:
-P "~/archive"
-o "%(channel)s/%(upload_date>%Y-%m-%d)s - %(title)s [%(id)s].%(ext)s"
-f "bv*[height<=1080]+ba/b[height<=1080]"
--merge-output-format mp4
--download-archive ~/archive/downloaded.txt
--sleep-requests 1
--sleep-interval 5
--max-sleep-interval 10
--write-info-json
--write-thumbnail
--write-subs
--write-auto-subs
--sub-langs en.*
--embed-subs
--embed-thumbnail
--embed-metadata
--sponsorblock-mark all
Kør en test med én video, før du giver yt-dlp en hel kanal:
~/yt-dlp-venv/bin/yt-dlp \
--config-location ~/.config/yt-dlp/archive.conf \
"https://www.youtube.com/watch?v=VIDEO_ID"
Kør derefter en kanal- eller playliste-URL med den samme konfiguration:
~/yt-dlp-venv/bin/yt-dlp \
--config-location ~/.config/yt-dlp/archive.conf \
"https://www.youtube.com/@CHANNEL/videos"
Filen --download-archive noterer id'er på videoer, der er hentet korrekt, så senere kørsler springer dem over. Behold i starten standardværdien --concurrent-fragments 1. yt-dlp's YouTube-guide anbefaler pauser mellem videoer, når en session rammer forespørgselsgrænser; den offentliggør ikke et universelt sikkert loft for fragment-samtidighed på VPS-IP'er.
Planlæg downloads med systemd
En systemd-timer på brugerniveau giver jobbet vedvarende planlægning og logs uden at lægge en lang kommando i cron. Den tilfældige forsinkelse forhindrer også, at alle planlagte kilder starter i samme sekund. For ikke at læne sig op ad brugermanagerens PATH peger servicen yt-dlp direkte på Denos standardinstallationssted.
Opret servicen:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/yt-dlp-archive.service
[Unit]
Description=Archive a YouTube channel with yt-dlp
[Service]
Type=oneshot
ExecStart=%h/yt-dlp-venv/bin/yt-dlp --js-runtimes deno:%h/.deno/bin/deno --config-location %h/.config/yt-dlp/archive.conf https://www.youtube.com/@CHANNEL/videos
Opret timeren:
nano ~/.config/systemd/user/yt-dlp-archive.timer
[Unit]
Description=Run the yt-dlp archive daily
[Timer]
OnCalendar=*-*-* 04:00:00
RandomizedDelaySec=30m
Persistent=true
[Install]
WantedBy=timers.target
Aktivér timeren, og tillad brugerservicen at køre, når du ikke er logget ind:
systemctl --user daemon-reload
systemctl --user enable --now yt-dlp-archive.timer
sudo loginctl enable-linger "$USER"
systemctl --user list-timers
journalctl --user -u yt-dlp-archive.service -n 100 --no-pager
Ved flere kanaler kan du oprette én serviceinstans pr. kanal eller bruge separate timere. Forskyd dem i tid frem for at sætte flere store træk i gang samtidig.
Forbind arkivet til Jellyfin
Montér eller giv Jellyfin adgang til den samme ~/archive-mappe, og tilføj den derefter som et bibliotek. Til det rå kanal/dato-layout passer Jellyfins Music Videos-bibliotek bibliotek, som accepterer indlejrede mapper og vilkårlige filnavne uden matchning af metadata online. Etiketten passer ikke perfekt til arkiver uden musik, men filstrukturen passer bedre end typen "Shows", der forventer serie- og sæsonmapper med episodenavne i SxxEyy-format. Undgå Mixed Content, medmindre du accepterer Jellyfins advarsel om, at dens metadataresultater kan være upålidelige.
Indstillingerne for metadata, miniature og undertekster i yt-dlp-konfigurationen gemmer nyttige oplysninger ved siden af eller inde i hver fil. Jellyfin kan alligevel kræve manuelle metadatarettelser, fordi en YouTube-kanal ikke passer rent ind i en database over tv-serier.
Vil du have filnavne og metadata, der er skræddersyet til Jellyfin, med mindre manuelt arbejde, så har Pinchflat mediecenter-forudindstillinger til netop den arbejdsgang. Til det bredere valg mellem medieservere behandler vores sammenligning af Jellyfin og Plex artikel afvejningerne omkring afspilning, fjernadgang og transkodning.
Læg stakken på en permanent server
Når arbejdsgangen virker på et lille testsæt, så flyt den over på Cloudzy's Linux VPS , så planlagte downloads og dit mediebibliotek kan blive online uden at binde din daglige computer. Du kan også udrulle Jellyfin som en et-klik-app og pege dets bibliotek mod yt-dlp's outputmappe.
Byg på en Linux VPS med root-adgang, NVMe og AMD EPYC-kraft.
Se Linux-planerOfte stillede spørgsmål
Har yt-dlp brug for en GPU på en VPS?
Nej. yt-dlp kan hente og remuxe medier uden en GPU. En GPU bliver relevant, når Jellyfin eller en anden medieserver skal transkode video til inkompatible klienter eller forbindelser med lavere båndbredde; direkte afspilning kræver ikke den konvertering.
Kan yt-dlp genoptage en afbrudt download?
Ja. yt-dlp har delvise filer og genoptagelse slået til som standard, så en senere kørsel fortsætter normalt med de allerede hentede fragmenter i stedet for at begynde forfra. Tilføj ikke --no-continue, --no-part eller --force-overwrites, hvis du vil have den adfærd.
