Meine TVHeadend Instanz Zuhause sollte über das Internet erreichbar werden. Hinter dem DSL Router ist ein Webserver erreichbar, den ich dafür als Proxy zu meinem TVHeadend-Server nutzen will. Über den Webserver laufen allerdings noch ein paar andere Dienste, sodass ich TVH nicht das Rootverzeichnis überlassen will. Das THV Webinterface soll stattdessen über ein Unterverzeichnis „/tv/recorder“ erreichbar sein, also z.B. so: https://server.tld/tv/recorder.
TVHeadend läuft auf dem Server mit der IP 192.168.2.111 auf Port 9981. Die Konfiguration von Nginx kann z.B. so aussehen:
server { server_name server.tld; listen 80 default_server; listen [::]:80 default_server; root /var/www; [ ... ] location /tv/recorder { access_log off; proxy_pass http://192.168.2.111:9981/; } }
Von wesentlicher Bedeutung ist hier eigentlich nur der location Block, der /tv/recorder behandelt. Besonders wichtig ist der Abschließende Trailing-Slash hinter der Zieladresse mit dem Ziel-Port! Ohne den Slash kann TVHeadend die Anfrage nicht verarbeiten, weil die angeftagte Adresse für die Software dann so aussieht: /tv/recorder/extjs.html. Dieser Pfad existiert für TVH nicht. Durch den Trailing-Slash wird der Unterverzeichnis-Pfad für TVH entfernt, sodass es die Anfrage verarbeiten kann.
Wenn das TVHeadend Webinterface über das Internet erreichbar ist, empfehle ich, eine HTTP Base Auth gleich mit einzurichten: Nginx: HTTP Base Auth einrichten
Hi,
sehr schöne Anleitung. Weißt Du auch, wie das mit lighttpd geht? Leider läuft bei mir schon alles über lighty und ich will ungern auf NGINX umsteigen. Die sonst funktionierenden Proxy Befehle erzeugen dort nämlich einen 500 Internal Server Error.
VG
Christian
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi,
nein, mit Lighttp habe ich leider keine Erfahrung.
LG Thomas
Hi,
bei mir hat das leider so nicht geklappt, aber nach ein wenig recherche habe ich es hinbekommen.
Ich muss hinter „location /tv/recorder“ noch einen Slash machen und in den Block „proxy_set_header Host $host;“ einfügen.
Lg
Philipp
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi Philipp,
danke für deinen Hinweis. Den zusätzlichen Slash brauche ich bei mir offenbar nicht. Liegt wohl mit an der Config auf dem Ziel-Host. Auch auf das proxy_set_header“ kann ich bei mir verzichten, weil der Zielhost nur einen virtual Host hat – und der ist default.
Aber gut, dass du das hier für andere User erwähnst :)
LG Thomas
Ich habe ebenfalls einen Nginx als Proxy für diverse Dienste im Einsatz.
Da ich allerdings meine DynDns addresse als CNAME bei Strato für alle möglichen Subdomains hinterlegen kann, nutze ich lieber eine seperate Subdomain, als ein Unterverzeichnis.
(Das ist zumindest der einzige Anbieter der relativ leicht Dyndns für eine TLD anbietet)
So kann ich dann natürlich auch ein LetsEncrypt Zertifikat hinterlegen und HSTS nutzen.
Kann man nun der TVHeadend Android App beibringen, auf Port 443 zu lauschen?
Wäre natürlich ganz nett, aus der Ferne drauf zuzugreifen (entsprechender Upload vorrausgesetzt)
Neben der SSL Konfiguration helfen folgende Parameter, herrauszufinden, welche IP nun der Client hat (möchte man sich am TVHeadend Server anmelden und nicht via Nginx)
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Ansonsten kann es natürlich dazu führen, dass der Nginx server (also ggf. localhost oder ein anderer Client im lokalen Netz) als Quelle angegeben wird, dann wäre der Zugang zu TVHeadend unter Umständen nicht mehr verschlüsselt.