
Was ist UnTube eigentlich?
Ein selbst gehosteter YouTube-Downloader mit eigenem Web-Player. Du abonnierst Channels, UnTube checkt regelmäßig auf neue Uploads und lädt sie automatisch runter. Alles lokal, alles werbefrei, kein Tracking. Kein Algorithmus, der dir drei Stunden später irgendeine komische Doku über Aliens in den Feed spült.
Das Projekt hat Tom Friart komplett via KI-Prompting mit Claude gebaut – null Zeilen selbst geschrieben. Funktioniert trotzdem. Darunter laufen yt-dlp, Flask und React, also durch und durch Open-Source-Komponenten.
Docker-Setup: 10 Zeilen, dann läuft’s
Das ist der Teil, der mich ehrlich überrascht hat. Ich hab die docker-compose.yaml zusammenkopiert, docker compose up -d gemacht, und zwei Minuten später war das Ding da. So sieht meine Config aus:
services:
untube:
image: tomfriart/untube:latest
container_name: untube
ports:
- "3987:80"
volumes:
- ./data:/app/data
- /mnt/8TB/samba/Videos/untube:/app/downloads
restart: always
Port 3987 ist der Webserver, den du dann mit http://DEINE-IP:3987 im Browser aufrufst. ./data speichert die SQLite-DB, Thumbnails und Storyboards. Der zweite Volume-Pfad geht bei mir auf einen 8TB-NAS-Share – wenn du keine dicke externe Platte dranhängen willst, tut’s auch einfach ./downloads:/app/downloads.
Der Player ist besser als erwartet
Ich hab ehrlich gesagt mit was minimalistischem gerechnet, aber der eingebaute Player kann: Kapitelmarken, Playback-Speed, Untertitel, Qualitätsauswahl und SponsorBlock (automatisch Sponsoren-Segmente, Intros und Outros überspringen). Sogar Storyboard-Seek-Previews – diese kleinen Vorschaubilder beim Scrubbing, die man von YouTube kennt. Fand ich overengineered für ein Hobbyprojekt, aber hey, ich beschwer mich nicht.
Dazu Playlists, Watch-Progress der über Sessions erhalten bleibt, und ein Tag-System für Channels. Du kannst deinen Feed nach „ungesehen“, Tags oder einzelnen Channels filtern. Dark/Light-Theme-Umschalter ist auch an Bord.
Die Haken
Erstens: UnTube hat null Authentifizierung. Kein Login, keine User-Trennung. Das Teil gehört ins lokale Netz oder hinter ein VPN. Nach außen exposed du das besser nicht.
Zweitens: yt-dlp. YouTube schraubt ständig an seinen Internals rum und bricht damit yt-dlp. Passiert alle paar Wochen. Lösung: docker compose pull untube && docker compose up -d und gut ist. Das ist kein UnTube-Bug, sondern das übliche Katz-und-Maus-Spiel mit YouTube.
Und das Auto-Delete-Feature in den Settings solltest du im Auge behalten: höhere Qualität = größere Files. Wenn dein Speicher knapp ist, schmeißt er die ältesten Videos raus. Praktisch, aber man sollte wissen dass es passiert.
Ein reines KI-Projekt, und das ist der Punkt
Tom schreibt im README: „This project was built entirely through AI prompting using Claude – no manual code was written by the author.“ Ich find das faszinierend. Ein Full-Stack-Projekt mit React-Frontend, Flask-Backend, yt-dlp-Integration, Docker-Packaging – komplett aus Prompts zusammengesetzt. Klar, der Code ist nicht perfekt und Bugs sind eingeplant, aber das Ding funktioniert.
Ich nutze UnTube seit ein paar Wochen, hauptsächlich um Channels zu archivieren, bei denen ich kein Bock hab dass sie plötzlich gelöscht werden oder hinter Bezahlschranken verschwinden. Für den Zweck ist es ideal. Repo: github.com/tomfriart/untube