Open shanelord01 opened 3 weeks ago
Awesome product here BTW - working well for other items on Unraid.
Hi
I don't know channels-dvr, but i've tryed with below docker compose and I was able to get the welcome page.
services: channels-dvr: image: fancybits/channels-dvr:latest container_name: channels-dvr network_mode: host ports:
Do you see any error in TSDProxy logs?
Hi and thanks for looking - yes I can get the page also in a browser - just not in the iOS or Android app. I have Tailscale running on my device, choose "At Home" when prompted and put in the Tailscale address created via TSDProxy.
No errors in the TSDProxy logs.
Assuming that's your real AuthKey in the TSDProxy.txt file, I suggest rotating it before someone else uses it.
I found an old support thread for Channels which mentioned something about an auth error using bridge networking. I think it's probably just one of those apps where the dev team did some funky stuff to the app and so it doesn't behave the way most apps do when containerized.
Hi and thanks for looking - yes I can get the page also in a browser - just not in the iOS or Android app. I have Tailscale running on my device, choose "At Home" when prompted and put in the Tailscale address created via TSDProxy.
No errors in the TSDProxy logs.
send the logs on the moment you try to access with the app. it must be there something there.
Assuming that's your real AuthKey in the TSDProxy.txt file, I suggest rotating it before someone else uses it.
Yes it was but I revoked it after I uploaded it. Thanks for keeping me safe!
I found an old support thread for Channels which mentioned something about an auth error using bridge networking. I think it's probably just one of those apps where the dev team did some funky stuff to the app and so it doesn't behave the way most apps do when containerized.
Yeah I'm starting to think the same. I'll post on Channels forums and see if they have a suggestion.
OK - checking the Services presented by "channels-dvr" (created by TSDProxy) in Tailscale, it shows this:
Where with the inbuilt Tailscale of Channels DVR directly, it shows:
I assume the Channels app is looking for port 8089 and not finding it. The only thing I see in the log is:
11:30PM INF request host=127.0.0.1:8080 method=GET status=200 url=/health/ready/
Looks like if TSDProxy is an actual reverse proxy then it's likely the issue. See this post on their forums: https://community.getchannels.com/t/ios-app-reverse-proxy/37629
Thanks, Shane.
OK found this post about an NGINX header to make it work through NGINX. https://community.getchannels.com/t/dvr-ios-with-nginx/8197
A few comments from it:
Reverse proxy is not recommended as it breaks the authentication mechanism. Are you using your own authentication in nginx, or can anyone who knows the url access your DVR?
One option is to have nginx add the header “X-DVR-ForceAuth: true” to the proxied request. Then you can remove the htpasswd (which the app has no idea how to deal with). You will be presented with an authorization form and will need to login using the authorization code from your dvr subscription account when accessing the web UI.
For the iOS app, you can click+hold the Authorize button and then copy the URL to change https://xxx.channelsdvr.net:8089 2 to https://dvr.xxx.com 1 and navigate to it. Note that if you do this, the app won’t understand that you’re connected remotely and so you’ll have to change the Home Streaming Quality setting back and forth.
Honestly it’s much easier just to enable port 8089, but that’s up to you.
They also talk about non standard ports here: https://community.getchannels.com/t/remote-access-on-port-other-than-8089/18302/13
Anything we can add to TSDProxy?
Can you post screenshots or XML files of both TsDProxy and Channels on your Unraid? Based on the photo you're showing, something might not be set up right.
Your Channels DVR should have the following two labels assigned to it:
tsdproxy.enable
set to true
tsdproxy.container_port
set to 8089
Your TsDProxy container doesn't need any labels set on it.
I assume this is what you already have, but as a sanity check, let's confirm.
Also, I believe TsDProxy right now just proxies whatever port you assign to 443 on the TS machine it creates, there doesn't seem to be an option currently to expose the same port that you want from the target container. Since that doesn't make a bunch of sense, basically your Channels tsdproxy.container_port
is 8089
, but the new TS machine created will be at https://{container_name}.funny-name.ts.net:443
, NOT at {container_name}:8089
.
In its current state, as far as I can tell, TsDProxy is better for exposing web interfaces, not necessarily passing through APIs (which is probably what Channels is doing, similar to plex, where you can visit [IP]:8089
or [IP]:32400
for plex and your iOS/Android app will connect to that as a back-end for the app). TsDProxy seems to be more for apps which expose a website in its current state, because it always creates an HTTPS webserver mapped to the port it is provided ([container_port]:443
essentially).
Yes it's setup correctly - I've tested it and can access the web interface of Channels via the MagicDNS address (ie 443 to 8089 over https).
I think TSDproxy would need a port pass through mode to support apps like Channels.
I already need to be on my Tailscale network to access my Channels server, ideally this would let me (optionally) directly show ports I need rather than proxy them.
I've created a template for Unraid for TSDProxy TSDProxy.txt (rename from .txt to .xml and place in /boot/config/plugins/dockerMan/templates-user - then "Add Container" from the docker section of Unraid and select the TSDProxy template) and I have it running without errors.
Note: I've tested TSDProxy with another app (immich) and it is working fine.
I've then added the required labels to the ChannelsDVR container - it is configured to use host networking (I just tried bridge as well - no luck) which is why I have setup port 8089 as the container port. The logs seem to show all is good, and the app is being presented in my Tailnet.
tsdproxy.enable: "true" tsdproxy.container_port: 8089
I can also access ChannelsDVR over a web browser using the MagicDNS address, but the Channels iOS app fails to connect no matter what address I put in the address bar.
If I then setup the Channels native/built in Tailscale their IP address works fine in the app. Problem is their client is way out of date.
Any ideas what could be going wrong?
Thanks, Shane.