How to Host DCS SRS in AWS
How to Host DCS SRS (Simple Radio Standalone) in AWS
Updated 26/04/23 - Added security groups details and server.cfg
Hi Folks,
SRS is a fantasic piece of software that can be used alongside DCS for voice communication that is also an immersive radio simulation. I was recently asked if I could do standalone hosting for it. The main beneifts I can see from hosting SRS in AWS is that it will have it's own internet connectivity - which can help since voip applications are particularly sensitive to network conditions, as well as being able to pick a central hosting location since SRS is still a client server architecture and not peer to peer. I think people might find value in an accesible rr style turn key solution, but due to the nature of SRS being just a small exe it's arguably fairly straight forward to roll your own with just a startup script, which I'm happy to detail here.
User data
User data is the name AWS gives to parametrisation of instances including scripts to run on startup. This enables starting SRS in AWS with just a user data argument with a standard AWS Windows image. This user data script just turns off windows firewall (to make the SRS ports 5002 TCP/UDP accesible), downloads, unzips, and then starts SRS.
<powershell>
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile("https://github.com/ciribob/DCS-SimpleRadioStandalone/releases/download/2.0.8.2/DCS-SimpleRadioStandalone-2.0.8.2.zip","C:\DCS-SimpleRadioStandalone-2.0.8.2.zip")
Expand-Archive C:\DCS-SimpleRadioStandalone-2.0.8.2.zip -DestinationPath C:\DCS-SimpleRadioStandalone-2.0.8.2
C:\DCS-SimpleRadioStandalone-2.0.8.2\SR-Server.exe
</powershell>
Launch an instance step by step
From the EC2 Dashboard start with 'Launch instance'.
Pick the Windows image quickstart.
Configure security groups to allow inbound traffic port 5002 TCP and UDP.
Expand 'Advanced details'.
Supply the user data startup script.
And we're good to go. Startup should be a couple of minutes after which your SRS client should be able to connect to the public IP.
(Optional) server.cfg
We can include server.cfg in the user data script using a here-string if we would like to setup EAM or other SRS features e.g:
<powershell>
# Disable windows firewall
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
# Download and unzip SRS
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile("https://github.com/ciribob/DCS-SimpleRadioStandalone/releases/download/2.0.8.2/DCS-SimpleRadioStandalone-2.0.8.2.zip","C:\DCS-SimpleRadioStandalone-2.0.8.2.zip")
Expand-Archive C:\DCS-SimpleRadioStandalone-2.0.8.2.zip -DestinationPath C:\DCS-SimpleRadioStandalone-2.0.8.2
# SRS configuration file
echo @"
[General Settings]
TRANSMISSION_LOG_RETENTION=2
LOTATC_EXPORT_ENABLED=true
CLIENT_EXPORT_ENABLED=false
TRANSMISSION_LOG_ENABLED=false
TEST_FREQUENCIES=247.2,120.3
GLOBAL_LOBBY_FREQUENCIES=248.22
EXTERNAL_AWACS_MODE=true
COALITION_AUDIO_SECURITY=false
SPECTATORS_AUDIO_DISABLED=false
LOS_ENABLED=false
DISTANCE_ENABLED=false
IRL_RADIO_TX=false
IRL_RADIO_RX_INTERFERENCE=false
RADIO_EXPANSION=false
ALLOW_RADIO_ENCRYPTION=true
STRICT_RADIO_ENCRYPTION=false
SHOW_TUNED_COUNT=true
SHOW_TRANSMITTER_NAME=false
RETRANSMISSION_NODE_LIMIT=0
[Server Settings]
CLIENT_EXPORT_FILE_PATH=clients-list.json
SERVER_PORT=5002
UPNP_ENABLED=true
CHECK_FOR_BETA_UPDATES=false
[External AWACS Mode Settings]
EXTERNAL_AWACS_MODE_BLUE_PASSWORD=blue
EXTERNAL_AWACS_MODE_RED_PASSWORD=red
"@ | Out-File -File "C:\DCS-SimpleRadioStandalone-2.0.8.2\server.cfg"
# Start SRS
cd C:\DCS-SimpleRadioStandalone-2.0.8.2
.\SR-Server.exe
</powershell>
Considerations
SRS doesn't need alot of resources so it could potentially be run for free on AWS's free tier.
Cheers,
Noisy