E3DS Documents & Tutorials

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:

Bash
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