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
These 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. Navigate to the WebServers Folder
Go to: [Your App Folder] → Samples → PixelStreaming → WebServers

Figure 1. Navigate to WebServers Folder
Step 2. Open Terminal in the WebServers Directory
Step 3. Make the Script Executable
Run the following command:
chmod a+x get_ps_servers.sh

Figure 2. Running chmod
Step 4. 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.

Figure 3. No Such Directory
Step 5. Check if curl
is Installed
Run:
which curl

Figure 4. Checking curl
If there’s no output, install curl in the next step.
Step 6. Install curl
Run:
sudo apt-get install --reinstall curl
You may be prompted for your password.

Figure 5. Installing curl

Figure 6. curl Installed
Step 7. 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.

Figure 7. No Such File or Directory
Step 8. Convert command to UNIX Format
Run:
dos2unix get_ps_servers.sh

Figure 8. Converting to UNIX Format
Step 9. Run the command Again
chmod a+x get_ps_servers.sh
./get_ps_servers.sh
You should now see folders like SignalingWebServer
, SFU
, etc.

Figure 9. Some Files & Folders are Downloaded
Step 10. Navigate to bash folder
Go to:
SignalingWebServer → platform_scripts → bash

Figure 10. Navigate to bash Folder
Start 11. Open Terminal in Bash Folder

Figure 11. Open in Terminal
Step 12. 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.

Figure 12. Start the Signaling Server

Figure 13. Signaling Server Running
Step 13. Open App Root Folder in Terminal
Root folder is the folder containing your Engine
folder and .sh
app script.

Figure 14. Open Root Folder in a Terminal
Step 14. 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

Figure 15. Create a New .sh File
A new blank file will open in the terminal where you can paste the script.

Figure 16. Created New File
Step 15. 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

Figure 17. 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 16. Pass the script in the terminal of new file that you have created on step 14
Add a warning not to press enter

Figure 18. Passing the Script
Step 17. After pasting the script, press :
then type wq
and press Enter
.
:wq

Figure 19. Type :wq and Press Enter Key
Step 18. Check newly created file
Run:
dir

Figure 20. Newly Created File
Step 19. 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

Figure 21. Make the Script Executable
Step 20. 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.

Figure 22. Run the App
You may need to give password. Give it.

Figure 23. App is Started
Step 21. Launch the App in Browser
On the same Linux computer, go to your browser and visit:
localhost
Click on “CLICK TO START” to launch the app.

Figure 24. Click to Start
You should see your app streaming locally.

Figure 25. App is Running
🌐 Remote Testing Option
You can also test remotely under the same network by:
Getting the PC’s IP Address:
hostname -I
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?
🛠️ Contact our Support Team
💬 Join the Community on Discord
Follow us on:
Facebook | GitHub | LinkedIn | YouTube