adamrehn / pixel-streaming-linux

Issue tracker repository for Pixel Streaming for Linux
https://adamrehn.com/articles/pixel-streaming-in-linux-containers/
22 stars 7 forks source link

Running the SignallingWebServer #50

Closed lvanname closed 3 years ago

lvanname commented 3 years ago

Hi,

Thank you for all the documentation you have put together for this project. I am new to both Docker and Unreal Engine and all the resources you have published have been extremely helpful.

I am looking to run both the Cirrus signalling server and the PixelStreamingDemo project and was wondering if I needed to build the signalling server image using the Dockerfile for Cirrus:

FROM adamrehn/ue4-full:4.25-pixelstreaming as builder FROM node:12

COPY --from=builder home/ue4/UnrealEngine/Engine/Source/Programs/PixelStreaming/WebServers/SignallingWebServer /opt/SignallingWebServer

WORKDIR /opt/SignallingWebServer RUN npm install .

EXPOSE 80

ENTRYPOINT ["/usr/local/bin/node", "/opt/SignallingWebServer/cirrus.js"]

I have already built the image for the PixelStreamingDemo using the following Dockerfile:

FROM adamrehn/ue4-full:4.25-pixelstreaming AS builder

RUN git clone --progress --depth 1 https://gitlab.eecs.umich.edu/lvanname/practice.git /tmp/project

WORKDIR /tmp/project RUN ue4 package

FROM adamrehn/ue4-runtime:18.04-cudagl10.2 COPY --from=builder --chown=ue4:ue4 /tmp/project/dist/LinuxNoEditor /home/ue4/project

ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES},video

RUN ln -s /usr/lib/x86_64-linux-gnu/libnvidia-encode.so /home/ue4/project/PixelStreamingDemo/Binaries/Linux/libnvidia-encode.so

ENTRYPOINT ["/home/ue4/project/PixelStreamingDemo.sh", "-PixelStreamingIP=127.0.0.1", "-PixelStreamingPort=8888", "-renderoffscreen", "-ResX=1920", "-ResY=1080", "-ForceRes"]

I believe I can run the container image with the project using the following command: docker run --rm --gpus all --network pixeldemo:lastest

But I was unsure how to run the Cirrus signalling server. I saw that there is a way to run the server from the adamrhen/ue4-full:4.25-pixelstreaming image in this issue: https://github.com/adamrehn/pixel-streaming-linux/issues/46 and was curious if I can use similar commands.

Also, I installed docker, CUDA, etc. and built all the images on one machine and was hoping to access the Pixel Streaming application by opening a web browser on a separate machine. I think I can just navigate to the IP of the machine that is running the containers, but just wanted to double check that this is correct.

Thank you for all your help!

lvanname commented 3 years ago

I ended up just building the image and I currently can get the streaming to connect by running both containers. However, I am unable to connect with a client on my separate machine with the public IP address from the machine that is running both containers. Any idea as to why this might be?

lukehb commented 3 years ago

Is this in the cloud or on a local network? Commonly lack of connection is caused by lack of STUN/TURN server, can you verify your STUN/TURN server is accessible on the public internet by running the ICE trickle test on it.

lukehb commented 3 years ago

This link may help you: https://github.com/ImmortalEmperor/UnrealEngine/blob/4.25-pixelstreaming/pixel-streaming-cloud.md (you will have to a member of Epic Games GitHub to see it).

lvanname commented 3 years ago

Thanks for the help! I was able to verify the STUN and TURN servers and I did get it working on my local network. I think I will explore getting it to run in the cloud now.