magnetikonline / docker-acestream-server

Ace Stream server Docker image and playback CLI for media players.
https://hub.docker.com/r/magnetikonline/acestream-server/
MIT License
129 stars 35 forks source link

Possible to use on headless server #4

Closed john-38787364 closed 6 years ago

john-38787364 commented 6 years ago

Hi - getting some good results so far, but is it possible to launch playstream.py without launching a local media player? I'd like to have the docker image and playstream.py on a remote headless server, then use vlc on another computer to play the stream.

magnetikonline commented 6 years ago

For sure - if you just call playstream.py --ace-stream-pid HASH --progress then your headless server will start streaming.

At the point of the video being ready you will get a message of Playback started at [http://127.0.0.1/path/to/HTTP/stream].

If you take this URI and replace the 127.0.0.1 (localhost) part with that of the headless server itself on your network you should be able to use this URI to playback successfully on another computer. It's just a HTTP playback video stream.

I think it might be HLS too - https://en.wikipedia.org/wiki/HTTP_Live_Streaming - so (I should test this) - it should even work under Chrome/Firefox/etc.

john-38787364 commented 6 years ago

Unfortunately it's not working- I get

2018-09-06 18:58:54,187|Thread-107|acestream.httpserver|deny access from ('81.1.248.223', 58162)

back in the engine log output. If I port forward to the the acestream engine server form my remote computer it works well thanks! No firewall issues so I'm assuming the acestream engine is only binding to localhost. Any options to bind to 0.0.0.0?

john-38787364 commented 6 years ago

--bind-all acestream argument?

magnetikonline commented 6 years ago

I'm not sure of your specific setup - but that IP address in your error message isn't an internal class network (public IP). So I'm guessing the acesteam server doesn't like connections from public/external IPs outside of a network by default?

--bind-all (if such an option exists) won't help here - as the Docker container only has a single network interface to bind to anyway.

Edit: some Google-fu I found this: http://wiki.acestream.org/wiki/index.php/AceStream_3.0/en#Node.27s_web-interface

By default web-interface is available only from the same machine, from which the node was launched. To allow remote access, you have to launch the node with option --service-remote-access. Also you can set a password for web-interface to prevent unauthorized access, using option --service-access-token.

Maybe try adding the --service-remote-access argument to the Dockerfile CMD line.

asntcrz commented 6 years ago

Same issue here.

We would like to access the headless server from outside the network.

Relevant output lines: MainThread|acestream|version=3.1.16 code=3011600 revision=3258 date=2017-02-08 ... MainThread|acestream.VideoServer|start: addr= port=6878 allow_remote=0 allow_intranet=1

If that allow_remote was set to 1, we would be able to access the stream remotely.

What you found is just for the web interface of acestream, not the actual stream

Eastkap commented 5 years ago

@asntcrz Any luck finding a solution?

Eastkap commented 5 years ago

So I managed to bypass this security, and it's quite simple actually. You just need to open a SOCKS5 bridge between the host and the client. Basically, I launch my docker, and afterwards I run the command ssh -D someport user@dockerserver. Step 2, you go to VLC and input the socks proxy localhost:someport like this https://crypt-sdk.blogspot.com/2011/11/how-to-set-proxy-settings-in-vlc-http.html. Finally, you open on VLC the following network file : http://127.0.0.1:6878/ace/manifest.m3u8?id=ACESTREAMID

And the trick is done 💃 🎉