Fish-Net server deployment process on AWS EC2

Verify we have necessary permissions for AWS account

  • Go to AWS Management Console

  • Launch a Virtual Machine

  • Select any free-tier Linux machine

  • Select any free-tier instance type

  • Edit Security Groups

  • Add Rule

  • Custom TCP Rule - port 7770 (or whatever you want to choose for your game)

  • set Source to anywhere

  • Add Rule

  • UDP rule - port 7770 (or whatever you want to choose for your game)

  • set Source to anywhere

  • Press “Review and Launch”

  • Create a new Key Pair

  • Give it a name

  • download keypair

  • Press “Launch Instance”

  • Download Putty

  • Download WinSCP

  • Open PuttyGen

  • Conversions > Import Key

  • Select the downloaded key

  • Set the right Key Type as you set while creating the key above

  • Save Private Key

  • Close Window

  • This file of type ppk will be used later

  • Open Putty

  • Copy IPV4 DNS address for the instance we created above from AWS EC2 Instances window

  • Putty Configuration > Session > Host Name set this hostname to follows

  • ec2-user@ followed by the DNS address copied above

  • Keep port at 22

  • Connection Type SSH

  • Go to Connection > SSH > Auth

  • Provide the ppk generated above here in “Browse”

  • Go back to Session

  • Provide a name in Saved Sessions to be save this session

  • Press Save

  • Now double click this name in session to open this session

  • Our Putty terminal is up and running on the Linux machine

  • Open WinSCP

  • When asked opt for single window with 2 panels option

  • Login > New Site

  • File Protocol > SCP

  • Paste the same hostname pasted in Putty, or copied from AWS EC2 Instances Console

  • Username > ec2-user

  • Advanced > SSH > Authentication > Private Key File

  • Provide the private key file here

  • Press Okay

  • Press Save

  • Provide a name to this new Login

  • Double click on the login created

  • It will connect to our Linux Server

  • We will use this Window to transfer replace or delete build on our Linux server

  • Go back to Unity

  • Set NetworkHudCanvases → AutoStartType to Server

  • Add TugBoat component on Network Manager

  • Set server bind address to localhost

  • Set port to 7770 (or whatever you want to specify but should be allowed in EC2 instance network incoming traffic conditions)

  • Set client address to EC2 instance public IPV4 DNS address

  • Save scene

  • In Build Settings

  • Set target platform to Linux

  • Keep architecture to x86_64

  • Enable ServerBuild (to keep headless)

  • Make sure the server scene is added and enabled in build settings

  • Build and save in a folder

  • Wait for the build process to complete

  • WinSCP

  • Navigate left panel to the unity server build folder

  • Right click and upload that to the linux server

  • It will take some time to upload

  • Once upload complete

  • Putty terminal

  • Go the the Putty terminal window

  • Using standard commands navigate inside the build folder

  • Run commands

  • chmod +x “executable file name of type .x86_64”

  • ./“executable file name of type .x86_64”

  • Server is up and running

  • Go back to Unity for Client editor testing or build

  • Unity

  • NetworkHudCanvases > AutoStartType set this to Disabled

  • Save scene

  • Run in unity

  • Press Client

  • Client should be up and connected with AWS Server

Thank you!

It worth noting at step 12.2.1 is not correct. If you write localhost explicitly, fishnet will throw a message saying it failed to parse the ip and force 127.0.0.1 which is unreachable. Better leave it empty so that the fishnet process gets local address at 0.0.0.0:7770 and receive any UDP traffic which arrives at 7770 port when the process is started as server. We were also able to confirm this behavior using nmap. However, it is maybe not safe and if you care about security than better to put server public ip address instead.

You can also simply connect to AWS EC2 console by using PuTTY to see the whole process click here.