In dieser Anleitung zeige ich euch, wie ihr innerhalb weniger Minuten Invidious mittels Docker und Traefik bereitstellen könnt. Bei Invidious handelt es sich um ein open source Front End für Youtube. Die Vorteile hier sind beispielsweise der Fokus auf Privatsphäre sowie dass keine Werbung angezeigt wird.
Datum | Änderungen |
---|---|
06.08.2022 | Erstellung dieser Anleitung |
31.05.2023 | Anpassung an neue Traefik Labels |
28.08.2023 | hmac_key hinzugefügt. Danke an @wuldorf und @strawbecci |
28.03.2024 | Logging hinzugefügt. Danke an @BerndS |
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik v2 + 3 – Reverse-Proxy mit CrowdSec im Stack einrichten
1. aktuelle Version downloaden
Wir beginnen mit dem Download der aktuellen Version von Invidious. Dazu gebt ihr folgendes ein:
git clone https://github.com/iv-org/invidious.git /opt/containers/invidious
2. Docker Compose anlegen
Nun passen wir die Docker Compose Datei noch etwas an. Dazu löschen wir die Datei und erstellen sie neu.
Bei diesem Inhalt handelt es sich um exklusiven Content für Community Plus Mitglieder und Supporter.
Bitte logge dich mit deinem Account ein um den Inhalt zu sehen.
3. Invidious starten
Den Server startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/invidious/docker-compose.yml up -d
Nun wartet ihr einige Minuten und geht dann auf folgende Webseite: video.euredomain.de
Dort solltet ihr folgendes sehen:
4. Quellen
https://docs.invidious.io/installation/#docker-compose-method-production
Rien ne va plus (nichts geht mehr)! Oder doch?
Google hat Youtube für die allermeisten Instanzen unbrauchbar gemacht. Es gibt allerdings im Moment noch einen Trick, um es weiterzubenutzen:
Fügt in die Compose.yml von Invidious folgenden neuen Service hinzu:
Über das Ausführen eines Containers könnt ihr euch benötigte Benutzer und Token erstellen:
Das ergibt dann eine Ausgabe wie folgende (dauert etwas):
Wir benötigen von der Ausgabe visitor_data und den po_token.
In der Compose Datei wird jetzt noch beim Invidious Service bei den Environment-Variablen auf gleicher Ebene wie der HMAC_KEY Eintrag folgendes hinzugefügt:
Hier jeweils die Werte aus dem vorigen Container-Aufruf eingeben. Jetzt nur noch neu starten:
Über diesen eindeutigen Code kann Google euch allerdings zuordnen. Falls ihr das nicht wünscht, müsste ihr öfters neue Daten generieren. Mir wird das einmal am Tag reichen, wenn ich die neue Instanz sowieso neu starten lasse, um den Cache zu leeren. Dafür habe ich mir ein Script invidious-refresh.sh im Invidious-Ordner angelegt, dass ich jede Nacht per Cronjob ausführen lasse:
Passt eventuell noch den Namen der Compose-Datei bei den beiden sed Befehlen an. Hier ist es compose.yml, bei euch könnte auch docker-compose.yml stehen. chmod +x invidious-refresh.sh zum ausführbar machen nicht vergessen.
In der crontab dann z. B.: 30 4 * * * /opt/containers/invidious/invidious-refresh.sh um jede Nacht um 4:30 Uhr Invidious wieder auf den neuesten Stand zu bringen.
Viel Erfolg!
An sich funktioniert die Anleitung gut, sobald ich die Qualität aber auf DASH setzte um über 720p hinaus zu kommen begegnet mir folgender Fehler:
Moin, seit ein paar Tagen bekomme ich die folgende Fehlermeldung in einer Installation die bereits mehrere Wochen problemlos lief: Connecting to 127.0.0.1:3000 (127.0.0.1:3000) wget: server returned error: HTTP/1.1 500 Internal Server Error
Auch eine neu erzeugte Instanz zeigt dieses Fehlerbild. Dabei habe ich mich genau an die beschriebene Anleitung gehalten und zweimal meine Domain hinzugefügt. Hat jemand eine Idee?
Mit freundlichen Grüßen
Da es in meiner lokalen Installation gerade Probleme mit dem Abspielen gab und auch Pullen und Neustarten nicht geholfen hat, habe ich die offizielle docker-compose.yml mit meiner eigenen verglichen (https://docs.invidious.io/installation/#docker-compose-method-production). Die Konfigration wurde in der Zwischenzeit um Angaben zum Logging ergänzt. Auch hier fehlen die Einträge. Da das Logging zu begrenzen immer Sinn hat, hier als Info: Unter dem Invidious Service sollte man laut offizieller Anleitung noch folgende Zeilen hinzufügen:
logging:
options:
max-size: “1G”
max-file: “4”
Durch die vorgegebene Anleitung ist es nicht ohne Probleme möglich ein späteres Update durchzuführen, da ja die docker-compose.yml geändert wird. Mit einem git pull stößt man dann halt auf Wiederstand.
Die einzigen benutzen Dateien aus dem Git-Repo sind die docker/init-invidious-db.sh und die zugehörigen SQL-Dateien aus dem config-Verzeichnis. Ändert sich etwas an dem Datenbankschema, muss auch ein Update her.
Um diese Problematik komplett zu umgehen, würde ich vorschlagen als erstes den Ordner /opt/containers/invidious manuell mit mkdir /opt/containers/invidious zu erstellen und dann den git clone Befehl umzuändern auf git clone https://github.com/iv-org/invidious.git /opt/containers/invidious/git-repo.
Nun braucht man die Volumes im service invidious-db in der docker-compose.yml nur noch anpassen:
Statt
einfach ändern in:
Um dann ein Update auszuführen, kann man in das Verzeichnis git-repo wechseln und einen git pull ausführen. Das Update selber wird wieder wie gewohnt per docker compose -f /opt/container/invidious/docker-compose.yml up -d –force-recreate durchgeführt.
Außerdem wird laut Dokumentation (https://docs.invidious.io/installation) unter “Post-Install” empfohlen, den Dienst regelmäßig neu zu starten:
Daher empfiehlt es sich noch einen Cronjob anzulegen:
Aufruf mit crontab -e und folgendes einfügen, um z. B. jede Nacht um 4:37 h den Befehl auszuführen:
So läuft es bei mir wunderbar.
Schöne Anleitung, danke dafür.
Ich habe auf meinem Raspberry Pi 4B den Error gehabt:
das konnte ich recht einfach lösen indem ich die Zeile geändert habe:
image: quay.io/invidious/invidious:latest
zu:
image: quay.io/invidious/invidious:latest-arm64
und wie Strawbecci hilfreicherweise erwähnt hat, ist auch der hmac_key notwendig, da ich ein wenig suchen musste wo bzw. mit welcher einrückung der hinkommt ein Ausschnitt von meiner docker-compose.yml um es anderen leichter zu machen:
INVIDIOUS_CONFIG: |
db:
dbname: invidious
user: kemal
password: kemal
host: invidious-db
port: 5432
check_tables: true
hmac_key: “<hmac key mit dem befehl ‘openssl rand -hex 20’ generieren und hier einfügen>”
domain: video.mydomain.de
Ich bin persönlich aber noch etwas hin und hergerissen ob ich invidious oder doch eher viewtube verwende, hab derzeit beide, Vorteil bei invidious ist die in meinen Augen minimal (!) hübschere Oberfläche und bietet die Downloadfunktion direkt. Viewtube hat den Vorteil das es 1920×1080 und nicht nur 1280×720 unterstüzt.
sollte es doch eine Möglichkeit geben bei einem oder beiden die Qulität zu erhöhen korrigiert mich gerne 🙂
Wenn jemandem die docker-compose.yml zu Viewtube haben wollten, kann ich diese auch posten.
Diese ist angelehnt an https://viewtube.wiki/installation/docker
Hallo, mittlerweile ist es seit dem 1.7 Pflicht ein hmac key zu hinterlegen. Man fügt einfach nur einen neuen env eintrag zur docker-compose.yml
Die Variable nennt sich hmac_key: CHANGEME
Das CHANGEME durch die Zeichenkette ersetzen, dass durch openssl rand -hex 20 generiert wird.
Vielen Dank für die Anleitung. Hat sofort problemlos geklappt.
Ich habe nur das Problem, dass alle API-Anfragen URLs im Format http://abc.meinedomain.de:3000/xyz/… zurückgeben und ich die Invidious-Instanz so leider nicht für meine Zwecke nutzen kann. Es funktioniert nur im Browser. Das http ohne s am Anfang ist ja wahrscheinlich egal, da es ja sowieso umgeleitet wird, aber der Port hintendran stört. Als Beispiel: curl -Ls https://abc.meinedomain.de/api/v1/videos/qyYmS_iBcy4. Dort steht überall im Response Body url:http://…..:3000.
Ich konnte mir jetzt helfen, indem ich zusätzlich unter die Environment-Variablen folgendes hinzugefügt habe:
https_only: true
external_port: 443
Somit passt es wieder .
Ich möchte mich mal recht herzlich für die super Arbeit hier bedanken. Goneuland ist eine echte Bereicherung für Leute, die sich mit Self-Hosting – speziell Docker und Traefik – beschäftigen 😀
BTW: Wo kann man am besten Vorschläge und Wünsche für weitere Anleitungen oder Erweiterungen davon stellen? Einfach hier in den Kommentaren oder per Kontaktformular? Oder besser gar nicht, weil eh schon genug zu tun ist 😉
Viele Grüße
Bernd
Danke das du meinen Wunsch umgesetzt hast. 🙂
Hab gleich mal ne Plus Mitgliedschaft abbonniert und Invidious läuft wie es soll.