Easy EPG auf Synology NAS mittels Docker installieren

  • Irgendwie verstehst Du die Funktionsweise von Containern nicht ;)

    Wenn Du unRaid nutzt, liegen die exponierten Verzeichnisse der Container alle im Host (unRaid) unter /mnt/user/appdata/<containername>/. dlueht's easyepg erzeugte guide.xml liegt im Host also unter /mnt/user/appdata/easyepg/xml/guide.xml - richtig?

    Diesen Pfad musst Du als EPG-Pfad für den TVHeadend-Docker angeben, das sollte es schon gewesen sein.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Das ich da noch nicht ganz durchsteige unterschreibe ich blind :thumbup: Beschäftige mich erst seit kurzem damit.

    easyepg habe ich nicht in appdata installiert, sondern in dem Pfad: /mnt/user/Data/.TVheadend/easyepg/xml/guide.xml

    Und den habe ich im TVH Docker als /EPG angelegt. wie in meinem 1.Bild.

    Dann war es doch soweit korrekt, oder steh ich immer noch auf der Leitung?

    Ich verstehe dann auch irgendwie nicht die absoluten Pfad in TVH selbst. z.b.
    /usr/bin/tv_grab_file - Das steht ja standardmäßig als Pfad drin beim internen XML Grabber. Wo will er den denn finden? innerhalb von /mnt/user/appdata/tvheadend habe ich nichts gefunden.

  • Gibt's denn hier jemanden, bei dem easyepg als Docker auf der Synology einwandfrei läuft? Ich hatte jetzt wieder keine epg Daten und musste die epg.sh nochmal manuell anstoßen.

    wenn ich im Container-Terminal crontab -l eingebe, steht da aber auch "no crontab for root". Das sollte doch anders sein oder?

    EDIT: @dlueth könnte der Fehler an dem crontab liegen?

  • @thefan0815: Ein Docker ist quasi ein gekapseltes Betriebssystem (oftmals Linux Alpine) mit entprechenden Anwendungen drin, die darin laufen. Im Prinzip wie eine VM, nur dass Du nicht in der VM arbeitest. Ein Docker leitet definierte Schnittstellen dieser Anwendung(en) (Dateien/Pfade, Ports, ...) nach aussen und stellt sie dem Hostsystem zur Verfügung. Der Docker darf die Hardware des Hosts (CPU, RAM, Hardware) nutzen. Wenn Du in einen Docker rein willst, geht das auf der Konsole über:

    docker exec -it tvheadend /bin/bash

    Danach befindest Du dich auf der virtuellen Maschine bzw. korrekterweise im Docker-Container. Dort gibt es dann auch ein /usr/bin - neben dem kompletten Betriebssystem dieser VM. Raus kommst Du mit exit.

    Bei Updates des Dockers wird das komplette interne System neu geschrieben, Änderungen im Docker sind damit hinfällig. Deswegen gibt es die nach "aussen geführten" exponierten Verzeichnisse, auf die sowohl der Docker von innen (Container Path) - z.B /EPG als auch das Hostsystem (hier unRaid) - z.B. /mnt/user/Data/.TVHeadend/easyepg/xml zugreifen kann.

    Wenn Du im Docker bist (s.o.) kannst Du per ls -l /EPG die von easyepg erzeugte guide.xml sehen und per cat /EPG/guide.xml anzeigen lassen?

    Btw., der Extra-Parameter für den internen XML-Grabber (der, der beim Docker dabei ist) hat keine Wirkung, der funktioniert nur mit meinem Grabber.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    2 Mal editiert, zuletzt von PvD (20. August 2019 um 13:48)

  • Vielen lieben Dank für diese tolle Erklärung ! :thumbup: - Jetzt ist mir einiges klarer!


    Wenn Du im Docker bist (s.o.) kannst Du per ls -l /EPG die von easyepg erzeugte guide.xml sehen und per cat /EPG/guide.xml anzeigen lassen?

    Ja, das geht.
    Das habe ich mir fast schon gedacht, dass der Extra Parameter wahrscheinlich keine Auswirkung hat, denn es war völlig Wurscht was ich da eingetippt habe.

    Nur zum Verständnis: Wenn ich nun innerhalb des Dockers Dein Script ausführen würden, dann würde es wahrscheinlich funktionieren und er würde den neuen internen Simple File Grabber anlegen, denke ich mal. Aber, beim nächsten Docker Update wäre wieder alles überschrieben? - Richtig?
    Wie verhält es sich aber mit den Settings, die man in TVH einstellt. Die sollten ja eigentlich auch bei einem docker update erhalten bleiben, oder? - Sorry wenn ich mit "dämlichen" Frage nerve.. ich möchte es gerne verstehen.

    UPDATE: So, Freunde der Volksmusik.... TÖRÖÖÖÖÖ. Habe es hinbekommen.
    Es hat "klick" gemacht in der Birne. :) Danke @BJ1.

    Was habe ich gemacht? - Ich habe im TVH Docker in die existierende /usr/bin/tv_grab_file reingeguckt und geschaut wo er die *.xml abholen will. Da steht in Z.7: cat /config/data/*.xml
    Dann bin ich wieder in die Dockersettings und habe meinen Pfad angepasst:
    Container Pfad: /config/data/ hat den absoluten Pfad /mnt/user/Data/.TVheadend/easyepg/xml/
    Dann TVH Neustart und die EPG Daten waren alle da. Jetzt hoffe ich nur, dass nicht noch andere Daten von da geholt werden, denn dann habe ich es kaputt gemacht..... *gg

  • Hast alles richtig gemacht :thumbup:


    Nur zum Verständnis: Wenn ich nun innerhalb des Dockers Dein Script ausführen würden, dann würde es wahrscheinlich funktionieren und er würde den neuen internen Simple File Grabber anlegen, denke ich mal. Aber, beim nächsten Docker Update wäre wieder alles überschrieben? - Richtig

    Ja.

    Wie verhält es sich aber mit den Settings, die man in TVH einstellt. Die sollten ja eigentlich auch bei einem docker update erhalten bleiben, oder? - Sorry wenn ich mit "dämlichen" Frage nerve.. ich möchte es gerne verstehen.

    Ja, da die Settings in den exponierten Verzeichnissen liegen, auf die das Hostsystem zugreifen kann. Es ist die Aufgabe eines Dockers, diese Verzeichnisse intern in Ruhe zu lassen. Welche das sind, weiß er aus der Config des Containers.

    Bei mir z.B.: Links: das interne Dockerverzeichnis <--> Rechts: Das Filesystem von unRaid


    Mein EPG liegt also auf einem Share namens /mnt/user/Recordings/EPG, von dem sich der TVHeadend-Server (bei mir ist das ein externer Server) die XML abholt.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (20. August 2019 um 14:03)

  • @dlueth

    ich hab jetzt deinen Container mal über ssh über dein Installationsscript auf dem Synology NAS installiert. Jetzt hab ich im Docker Webinterface 3 Container:

    - easyepg.admin
    - easyepg.cron
    - easyepg.run

    ist das so richtig? muss ich die alle 3 starten?

    EDIT: Ah okay, jetzt hab ich's kapiert (readme lesen hilft..)

    Als ich den Container vorher übers Webinterface installiert hab, war das nur einer und nicht diese 3 verschiedenen, vllt hat's deshalb nicht funktioniert. Ich richte das jetzt mal ein und berichte dann, ob's funktioniert hat

  • Tag zusammen,

    Hier war zwar schon einige zeit nichts mehr los, aber ich denke ich sollte am besten hier fragen:

    Ich hab den auf meiner Synology DS918+ den Docker am laufen und er funktioniert auch einwandfrei, nur finde ich leider die erstellte .xml nicht.
    Ich kann auch auf der Synology Docker GUI keine volumes mappen wie es in @dlueth 's git oder Dockerhub beschreibung zu sehen ist:


    -v {EASYEPG_STORAGE}:/easyepg \
    -v {XML_STORAGE}:/easyepg/xml \
    -v {XMLTV_SOCKET}:/xmltv.sock \

    Die xmltv.sock ist auf meine xmltv.sock in meinem Tvheadend gemapped und funktioniert, aber die beiden anderen Volumes/Ordner kann ich nicht mappen in der GUI.

    Bei meinem root verzeichnis auf der Synology finde ich ein /easyepg verzeichnis, das ist allerdings irgendwie nicht benutzbar. Es ist Grün hinterlegt und ich kann nicht in das Verzeichnis wechseln.


    Ich musss mich schon mal im vorraus für meine wahrscheinlich noob Fragen entschuldigen, aber ich bin ein ziemlicher neuling was Linux angeht.

    Gruß Alex


    EDIT:

    Habs raus gefunden. hab nur das /root vor dem /easyepg vergessen

  • Servus zusammen,

    hat jemand eine Idee woran es liegen kann wenn immer nur ein Docker Container durch das Script erstellt wird anstatt drei? (Synology DS710+)

    Ergibt leider immer nur:

    Prinzipiell würde es bei mir schon laufen per Externen Grabber (im Screenshot hatte ich nochmal das Socket versucht) aber ich vermisse nun noch den Cronjob Teil.
    Könnte ich den cronjob auch manuell im selben Container erstellen, welches Script müsste er dann starten? Oder klappt es nur wenn alle drei Container vorhanden sind?

    Vielen Dank für jeglichen Hinweis und für all die tolle Arbeit! :)

    Beste Grüße

  • Vielleicht kann es ja einer der es vollumfänglich für Synology Docker verstanden hat eine Anleitung schreiben, hilft sicher sehr vielen und wird vielleicht ja auch im Newsleter landen ;). Ich selbst lese nur mit und habe noch keine Vwrwendung dafür, ... aber vielleicht irgendwann mal ;)

  • @derelvis Achtung, Image ungleich Container. Aus einem einzigen Image können beliebig viele Container gestartet werden. Entweder direkt via docker run oder, wie in dem Fall meines Scripts, via docker create. Bei run wird der container halt gleich gestartet, bei create nicht.

    Ich bin mir nicht sicher, würde aber vermuten dass du auf deiner Synology das init-script nicht brauchst sondern direkt in der Oberfläche alles einstellen musst.

    Im Prinzip ist aber, wie du ja nun weißt, in jedem Container das gleiche Image drin. Tendenziell kann also jeder aus dem Image erstellte Container alles, was auch die anderen können.

    Mein Container unterscheidet z.b. anhand des Mode Parameters ob er für sich betrachtet einfach nur idle läuft (Admin), er direkt easyepg startet (Run) oder crond (Cron), Der dann wiederum hinten herum easyepg zu den gewünschten Zeiten startet.

    Hintergrund dafür ist, dass docker nach dem Single responsibility Prinzip arbeitet. Der "Hauptprozess" ist das einzige was docker kennen kann und überwacht. Kackt dieser Prozess ab, soll docker das merken und den Container ggf neu starten. So Dinge wie ein Webserver, Datenbank und php in einem Container sind daher auch streng genommen im Ansatz falsch. War ist der Hauptprozess? Was passiert wenn einer der anderen Prozesse nicht mehr läuft? Wie soll docker das mitbekommen?

  • @dlueth danke für die Erläuterung ;) Der Unterschied zwischen Image und Container war mir eigentlich schon klar, allerdings eher aus der GUI. Dass ich auf der Kommandozeile in meinem Post list images angezeigt hatte war mir nicht aufgefallen :-/ Allerdings hatte ich tatsächlich missverstanden, dass es nicht schon drei Images sein müssen. Das hat mich dann letztlich auch auf die richtige Spur gebracht. Habe mir dein Script lokal runtergeladen und die Parameter die bei mir ein Scheitern verursacht haben entfernt (--tmpfs, --cpus). Danach wurden dann auch alle drei Container erzeugt und sowohl diese als auch das Image werden nun ebenfalls in der GUI sauber angezeigt. Auf der Kommandozeile hatte ich das erst gar nicht bemerkt, da ich den Parameter -a beim Anzeigen der Container übersehen hatte (docker ps -a). Da diese nicht liefen, wurden sie ohne -a ja ausgeblendet Jetzt rennt alles wie es soll :) Danke nochmal!

  • Hallo ich habe auf meiner Synology DS218+ im Docker Linuxserver/Tvheadend und takelug:telesing-api laufen.
    Ziel ist es, demnächst 1&1 Digital TV über Tvheadendaufzunehmen.

    Nun möchte ich im Docker das Image takelug/easyepg installieren. Dies scheint deutlich komplizierter zu sein und dabei scheitere ich kläglich, wegen mangelnden Kenntnissen!
    Ich habe viel gelesen, aber verstehe nur "Bahnhof". Eventuell erbarmt sich jemand und hilft mir bitte Schritt für Schritt.
    Sorry auch vorweg, für die sicherlich blöden Fragen.

    Tvheadend liegt auf meiner NAS unter "Volume1/docker/Tvheadend".
    easyepg soll unter "Volume1/docker/Easyepg" liegen.
    Sind dies dann schon nach außen geführte exponierte Verzeichnisse?

    Wenn ich das richtig verstanden habe, holt easyepg in Zeitabständen die EPG Daten diverser Anbieter und speichert diese in eine .xml Datei. Tvheadend muss dann mit dieser .xml Datei verknüpft sein, um diese Daten zu nutzen. Die Zeitabstände der Aktualisierung der EPG Daten werden über ein cronjob eingestellt.

    Das gewünschte Image takelug/easyepgt ist runtergeladen.

    In der GUI unter den erweiterten Einstellungen ich Bereich "Volume" kann eine Datei oder ein Ordner hinzugefügt werden. Wäre dies so wie abgebildet korrekt?
    Sind hier weitere Einträge zu machen? Muss hier auch auf die .xml Datei verwiesen werden?

    Wird im Bereich Umgebung etwas angepasst, muss ein Befehl eingetragen werden?

  • Nun habe ich es takealug/easyepg im Docker zum Laufen gebracht.
    Es wurde eine xml mit Namen "zattoo_de.xml" erzeugt.
    Tvheadend übernimmt die Daten aber nicht und meldet:

    2020-02-17 17:58:32.735 xmltv: /usr/bin/tv_grab_file: grab /usr/bin/tv_grab_file
    2020-02-17 17:58:32.737 spawn: Executing "/usr/bin/tv_grab_file"
    2020-02-17 17:58:32.814 xmltv: /usr/bin/tv_grab_file: no output detected
    2020-02-17 17:58:32.814 xmltv: /usr/bin/tv_grab_file: grab returned no data

    In Tvheadend habe folgendes hinterlegt:

    Laut WinSCP sollte der Pfad zur xml doch korrekt sein.


    Im Container Tvheadend habe ich den Pfad so angegeben:

    Wo muß ich jetzt noch schrauben, damit es endlich passt?

  • Der Pfadparameter nutzt Dir beim XML-Filegrabber nichts, da dieser Grabber mit Extra-Parametern nichts anfangen kann. Dieser Grabber erwartet die XML im exponierten Dockerverzeichnis von TVHeadend (ich weiß jetzt nur nicht welches das ist).

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Der Pfadparameter nutzt Dir beim XML-Filegrabber nichts, da dieser Grabber mit Extra-Parametern nichts anfangen kann. Dieser Grabber erwartet die XML im exponierten Dockerverzeichnis von TVHeadend (ich weiß jetzt nur nicht welches das ist).

    Richtig, der Containerpfad ist tvheadend/data, dieser muss innerhalb des easyepg dockers auf easyepg/xml/,
    Oder bei kombinierten easyepg/combine/name/ gemappt werden.

    Danach einfach in tvheadend Haken setzen :

    Fertig.

    2 Mal editiert, zuletzt von DeBaschdi (18. Februar 2020 um 08:04)

  • Richtig, der Containerpfad ist tvheadend/data, dieser muss innerhalb des easyepg dockers auf easyepg/xml/,Oder bei kombinierten easyepg/combine/name/ gemappt werden.


    Ich krieg es einfach nicht mit den EPG Daten in Tvheadend hin.
    Im Docker Container unter Tvheadend/data oder auch Tvheadend/config/data schreibt mir Easyepg die xml Datei Zattoo_de.xml.
    Habe beide Pfade probiert!!
    Tvheadend gibt trotzdem folgende Fehlermeldung raus.
    xmltv: /usr/bin/tv_grab_file: grab /usr/bin/tv_grab_file
    spawn: Executing "/usr/bin/tv_grab_file"
    xmltv: /usr/bin/tv_grab_file: no output detected
    xmltv: /usr/bin/tv_grab_file: grab returned no data

    Kann ich das unter WinSCP überhaupt korrekt sehen, oder muß ich dazu das Terminal nutzen?

  • bitte nimm den Webgrabplus filegrabber, eines oben drüber ;)
    Siehe mein screenshot.
    Und schreib nichts in extra parameter rein !
    Genau wie mein screenshot.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!