Beachte: Aktuell wird kein API-KEY und https-Support bereitgestellt. Daher nur in sicheren Netzwerk Zuhause betreiben.
TubeVault läuft komplett auf deinem eigenen Raspberry Pi, Mac (oder jedem anderen Linux-Server).
- Keine Cloud
- kein Tracking
- keine Werbung
Videos herunterladen & archivieren - YouTube-Videos in gewünschter Qualität lokal speichern. Automatisch Thumbnails, Metadaten und Untertitel mitziehen.
Kanäle abonnieren - RSS-Feeds deiner Lieblingskanäle verfolgen. Neue Videos erscheinen im Feed, optional mit Auto-Download.
Lokales Streaming - Alle gespeicherten Videos direkt im Browser abspielen. Kapitelmarken, Wiedergabeposition, Lyrics-Anzeige.
Bibliothek verwalten - Kategorien, Playlists, Favoriten, Tags, Bewertungen. Volltextsuche über Titel, Beschreibungen und Notizen.
Eigene Videos einbinden - Lokale Videodateien scannen, indexieren und in die Bibliothek aufnehmen.
Backup & Export - Datenbank-Backups erstellen, wiederherstellen und herunterladen.
- MiniPlayer in der Sidebar
- Kapitelmarken & Ad-Marker
- Lyrics-Erkennung & -Anzeige
- Stream-Analyse (verfügbare Qualitäten/Formate)
- Kanal-Playlists synchronisieren
- Video-Archiv mit Mount-Unterstützung
- Like/Dislike-Daten via Return YouTube Dislike API
- Thumbnail-AI Anbindung (optional)
- Live-Log Terminal im Browser
- Statistik-Dashboard
- Dark Mode
| Komponente | Technologie |
|---|---|
| Backend | Python 3.12, FastAPI, SQLite, pytubefix, FFmpeg |
| Frontend | Svelte 5, Vite, Vanilla CSS |
| Reverse Proxy | Nginx (im Frontend-Container) |
| Deployment | Docker Compose |
| Zielplattform | Raspberry Pi 4/5 (ARM64), Linux-Server, macOS |
- Hardware: Raspberry Pi 4 (4 GB RAM+), Pi 5, beliebiger Linux-Server oder Mac
- OS: Raspberry Pi OS (64-bit), Debian, Ubuntu, macOS (mit Docker Desktop)
- Software: Docker + Docker Compose Plugin (auf macOS: Docker Desktop)
- Speicherplatz: Mindestens 10 GB frei (mehr für Video-Downloads)
Linux (Raspberry Pi / Debian / Ubuntu):
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp dockermacOS:
Docker Desktop herunterladen und installieren. Docker Compose ist enthalten.
git clone https://github.com/HalloWelt42/TubeVault.git
cd TubeVaultchmod +x setup.sh
./setup.shDas Script erstellt alle Datenverzeichnisse, legt die .env-Konfiguration an und prüft ob Docker bereit ist.
docker compose up -d --buildDer erste Build dauert je nach Hardware 5–15 Minuten.
http://<DEINE-IP>:8032
Die IP findest du mit hostname -I. Die API-Dokumentation (Swagger) erreichst du unter http://<DEINE-IP>:8031/docs.
Alle Einstellungen liegen in der .env Datei (wird beim Setup aus .env.example erzeugt):
nano .env| Variable | Default | Beschreibung |
|---|---|---|
TUBEVAULT_BACKEND_PORT |
8031 |
Backend API Port |
TUBEVAULT_FRONTEND_PORT |
8032 |
Frontend Web-UI Port |
MAX_CONCURRENT_DOWNLOADS |
1 |
Gleichzeitige Downloads (Pi 4: besser 1) |
DEFAULT_QUALITY |
720p |
Standard-Qualität: 360p 480p 720p 1080p best |
Nach Änderungen neu starten:
docker compose up -dStandardmäßig landen alle Daten im Projektordner unter ./data/. Für größere Sammlungen kannst du einzelne Verzeichnisse auf eine externe Platte auslagern.
Beispiel: USB-Festplatte unter /mnt/usb gemountet:
# In docker-compose.yml die Zeile ersetzen:
- ./data/videos:/app/data/videos
# Durch:
- /mnt/usb/tubevault/videos:/app/data/videosDas geht für jeden Unterordner einzeln - du kannst z.B. Videos und Audio auf die Platte legen, Thumbnails und DB aber auf der schnelleren SD-Karte lassen.
# Status
docker compose ps
# Logs verfolgen
docker compose logs -f tubevault-backend
# Neustart
docker compose restart
# Stoppen
docker compose down
# Update nach Dateiänderungen
docker compose up -d --build
# Manuelles DB-Backup
cp data/db/tubevault.db data/backups/tubevault-$(date +%Y%m%d).dbTubeVault/
├── backend/ # FastAPI Backend
│ ├── app/
│ │ ├── main.py # App-Einstieg
│ │ ├── config.py # Pfade, Ports, Versionen
│ │ ├── database.py # SQLite Schema & Queries
│ │ ├── routers/ # API-Endpunkte (26 Module)
│ │ ├── services/ # Business-Logik (16 Module)
│ │ ├── models/ # Pydantic Request/Response Models
│ │ └── utils/ # Hilfsfunktionen
│ ├── Dockerfile
│ ├── entrypoint.sh
│ └── requirements.txt
├── frontend/ # Svelte 5 SPA
│ ├── src/
│ │ ├── lib/
│ │ │ ├── api/ # API Client + WebSocket
│ │ │ ├── components/ # UI-Komponenten
│ │ │ ├── router/ # SPA Router
│ │ │ └── stores/ # Svelte Stores
│ │ ├── routes/ # Seiten-Komponenten
│ │ └── main.js
│ ├── Dockerfile
│ ├── nginx.conf # Reverse Proxy Config
│ └── package.json
├── data/ # Persistente Daten (per .gitignore ausgeschlossen)
│ ├── db/ # SQLite Datenbanken
│ ├── videos/ # Heruntergeladene Videos
│ ├── audio/ # Audio-Dateien
│ ├── thumbnails/ # Thumbnails
│ └── ... # avatars, banners, metadata, subtitles, exports, etc.
├── config/ # App-Konfiguration
├── docker-compose.yml
├── .env.example # Vorlage für .env
├── setup.sh # Erstinstallation
├── LICENSE
└── .gitignore
| Service | Port | Beschreibung |
|---|---|---|
| Frontend | 8032 |
Web-UI (Nginx → Svelte SPA) |
| Backend | 8031 |
REST API (FastAPI + Swagger Docs) |
Das Frontend leitet /api/*-Anfragen intern per Nginx an das Backend weiter. Von außen muss nur Port 8032 erreichbar sein.
| Setup | Kapazität |
|---|---|
| 32 GB SD-Karte | ~50 Videos (720p, 10 Min.) |
| 64 GB SD-Karte | ~150 Videos |
| 128 GB SD-Karte | ~400 Videos |
| 1 TB USB-Platte | ~3.000 Videos |
Für ernsthafte Sammlungen: Externe Festplatte anschließen (siehe oben).
TubeVault ist ein privates Open-Source-Projekt aus Sachsen-Anhalt. Kein Tracking, keine Werbung, keine Kompromisse.
Wenn dir das Projekt gefällt, kannst du über den ❤️-Button in der Sidebar "Danke sagen" - oder direkt hier:
Crypto:
| Coin | Adresse |
|---|---|
| BTC | bc1qnd599khdkv3v3npmj9ufxzf6h4fzanny2acwqr |
| DOGE | DL7tuiYCqm3xQjMDXChdxeQxqUGMACn1ZV |
| ETH | 0x8A28fc47bFFFA03C8f685fa0836E2dBe1CA14F27 |
Nicht-kommerzielle Nutzung - Siehe LICENSE
✅ Private Nutzung, Installation, persönliche Anpassungen, Teilen mit Quellenangabe
❌ Kommerzielle Nutzung, Verkauf, Einbindung in kommerzielle Produkte
© 2025-2026 HalloWelt42 - Nicht-kommerzielle Nutzung / Non-commercial use only
