Testing Linux App Locally Using Epic’s Signaling Server

Eagle 3D Streaming

Testing Linux App Locally Using Epic’s Signaling Server

 

Before uploading your Linux-packaged Unreal app to the Eagle 3D Streaming platform, it's important to verify that it runs smoothly in a Pixel Streaming environment. This guide will walk you through testing your app locally using Epic’s Pixel Streaming Signaling Server.

 

 

 

Important Note

  • All steps must be performed on a Linux machine.

  • Ensure your Unreal project has the Pixel Streaming plugin enabled.

  • The app should already be packaged for Linux.

 

 

 

 

 

 

Follow the steps below:

 

Step 1. Run the .sh file as Desktop App

Run the packaged .sh file directly:

chmod +x YourProjectName.sh ./YourProjectName.sh
image-20251124-030154.png
Figure 1. Run the .sh File

 

image-20251124-030734.png
Figure 2. App is Running

 

If the application does not launch as a standard desktop app, the packaged build is invalid. In that case, it will not work with Pixel Streaming.

 

 

 

 

 

 

 

 

 

Step 2. Navigate to the WebServers Folder

Navigate To: [Your App Folder] → Samples → PixelStreaming → WebServers

image-20250806-041340.png
Figure 3. Navigate to WebServers Folder

 

 

 

 

 

 

Step 3. Open Terminal in the WebServers Directory

 

 

 

 

 

 

 

Step 4. Make the Script Executable

 

Run the following command:

chmod a+x get_ps_servers.sh

 

image-20250806-041722.png
Figure 4. Running chmod

 

 

 

 

 

 

 

Step 5. Run the shell command :

./get_ps_servers.sh

If you see an error like “No such file or directory,” proceed to Step 5. Else go to Step 10.

image-20250806-042035.png
Figure 5. No Such Directory

 

 

 

 

 

 

 

 

Step 6. Check if curl is Installed

Run:

which curl

 

image-20250806-042448.png
Figure 6. Checking curl

 

If there’s no output, install curl in the next step.

 

 

 

 

 

 

 

Step 7. Install curl

Run:

sudo apt-get install --reinstall curl

 

You may be prompted for your password.

image-20250806-042648.png
Figure 7. Installing curl

 

image-20250806-042836.png
Figure 8. curl Installed

 

 

 

 

 

Step 8. Retry the command

Re-run the following:

chmod a+x get_ps_servers.sh
./get_ps_servers.sh

 

If it still fails, proceed to Step 8.

 

image-20250806-043206.png
Figure 9. No Such File or Directory

 

 

 

 

 

 

 

 

 

 

Step 9. Convert command to UNIX Format

Run:

dos2unix get_ps_servers.sh

 

image-20250806-043425.png
Figure 10. Converting to UNIX Format

 

 

 

 

 

 

 

 

 

 

Step 10. Run the command Again

chmod a+x get_ps_servers.sh
./get_ps_servers.sh

 

You should now see folders like SignalingWebServer, SFU, etc.

 

image-20250806-043837.png
Figure 11. Some Files & Folders are Downloaded

 

 

 

 

 

 

 

 

 

 

 

Step 11. Navigate to bash folder

Go to:

SignalingWebServer → platform_scripts → bash

 

image-20250806-044214.png
Figure 12. Navigate to bash Folder

 

 

 

 

 

 

Start 12. Open Terminal in Bash Folder

image-20250806-044353.png
Figure 13. Open in Terminal

 

 

 

 

 

 

 

Step 13. Start the Signaling Server

In the terminal, run:

./run_local.sh

 

You may be prompted for your password again.

 

Leave this terminal window open. Do not close it while testing your app.

 

image-20250806-044706.png
Figure 14. Start the Signaling Server

 

 

image-20250806-044932.png
Figure 15. Signaling Server Running

 

 

 

 

 

 

 

 

Step 14. Open App Root Folder in Terminal

Root folder is the folder containing your Engine folder and .sh app script.

image-20250806-045319.png
Figure 16. Open Root Folder in a Terminal

 

 

 

 

 

 

 

 

Step 15. Create a new .sh file

 

Create a new file using the command below. (Use any name you want. Here we used HojatLinxPrjct2.sh)

Run:

vim GiveNewFileName.sh

 

image-20250806-045822.png
Figure 17. Create a New .sh File

 

 

 

 

A new blank file will open in the terminal where you can paste the script.

image-20250806-045929.png
Figure 18. Created New File

 

 

 

 

 

 

 

 

 

Step 16. Build the script

 

Below is the script. You’ll need to modify the red-highlighted paths to match your actual app folder structure:

#!/bin/sh
UE_TRUE_SCRIPT_NAME=$(echo "$0" | xargs readlink -f)
UE_PROJECT_ROOT=$(dirname "$UE_TRUE_SCRIPT_NAME")
chmod +x "$UE_PROJECT_ROOT/HojatLinxPrjct/Binaries/Linux/HojatLinxPrjct"

"$UE_PROJECT_ROOT/HojatLinxPrjct/Binaries/Linux/HojatLinxPrjct" HojatLinxPrjct \
-log -AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888 -RenderOffScreen "$@"

 

In our case the file location is showing here

image-20250806-051207.png
Figure 19. Create Script Based on Linux File Location

 

 

 

 

We’ve included the script again below so you can copy it easily.

#!/bin/sh UE_TRUE_SCRIPT_NAME=$(echo "$0" | xargs readlink -f) UE_PROJECT_ROOT=$(dirname "$UE_TRUE_SCRIPT_NAME") chmod +x "$UE_PROJECT_ROOT/HojatLinxPrjct/Binaries/Linux/HojatLinxPrjct" "$UE_PROJECT_ROOT/HojatLinxPrjct/Binaries/Linux/HojatLinxPrjct" HojatLinxPrjct \ -log -AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888 -RenderOffScreen "$@"

 

 

 

 

 

 

 

 

 

Step 17. Pass the script in the terminal of new file that you have created on step 14

Add a warning not to press enter

image-20250806-050158.png
Figure 20. Passing the Script

 

 

 

 

 


Step 18. After pasting the script, press : then type wq and press Enter.

:wq
image-20250806-052452.png
Figure 21. Type :wq and Press Enter Key

 

 

 

 

 

 

 

 

Step 19. Check newly created file

Run:

dir
image-20250806-052951.png
Figure 22. Newly Created File

 

 

 

 

 

 

 

Step 20. Make the Script Executable

Run:

chmod a+x YourNewlyCreatedFile.sh

 

You should use your newly created file name instead of YourNewlyCreatedFile.sh.

In our case the newly created file name is HojatLinxPrjc2.sh. So we used this name

 

image-20250806-053433.png
Figure 23. Make the Script Executable

 

 

 

 

 


Step 21. Start the App

Run:

./YourNewlyCreatedFile.sh.

 

 

You should use your newly created file name instead of YourNewlyCreatedFile.sh.

In our case the newly created file name is HojatLinxPrjc2.sh. So we used this name.

 

 

image-20250806-053811.png
Figure 24. Run the App

 

You may need to give password. Give it.

 

image-20250806-053933.png
Figure 25. App is Started

 

 

 

 

 

 

 

 

Step 22. Launch the App in Browser

 

  1. On the same Linux computer, go to your browser and visit:

localhost

  1. Click on “CLICK TO START” to launch the app.

image-20250806-054103.png
Figure 26. Click to Start

 

 

You should see your app streaming locally.

image-20250806-054256.png
Figure 27. App is Running

 

 

 

 

 

 

🌐 Remote Testing Option

You can also test remotely under the same network by:

  1. Getting the PC’s IP Address:

hostname -I

 

  1. Enter that IP in a browser from another device:

http://<your-ip-address>

 

 

 

Note: For testing outside the network (different Wi-Fi), a static IP is required.
(A full remote setup guide is coming soon.)

 

 

 

 

 

 

 

 

 

 

 


Need help?

If you need any assistance, feel free to reach out through any of the following channels:

🛠️ Support Portal: Contact Our Support Team

💬 Discord Community (Faster Support): Join Our Discord Community

📧 Email Support: support@eagle3dstreaming.com

 

🆓 Get Started for free

 

 

Follow us on:

Facebook | GitHub | LinkedIn | YouTube

Eagle 3D Streaming