GameServerManagers / LinuxGSM

The command-line tool for quick, simple deployment and management of Linux dedicated game servers.
https://linuxgsm.com
MIT License
4.33k stars 821 forks source link

[Bug]: satisfactory 1.0 unable to launch #4644

Closed ewlidd closed 2 months ago

ewlidd commented 2 months ago

User story

as a server admin, I want the server exe to launch and have the correct ports

Game

satisfactory

Linux distro

Debian 12

Command

command: start

Further information

satisfactory 1.0 just launched. I applied the following fixes to make it run, most of which I guess will be fixed by satisfactory themselves in time, so this is more or less a doc for those that want a manual fix in the meantime. TL;DR: -there's a new port TCP 7777, that incorrectly binds to localhost if you use the -multihome flag effectively locking you out from the server. -They also changed the server executable name that needs new symlinks.

#remove symlink
rm /home/satisfactory/serverfiles/Engine/Binaries/Linux/UE4Server-Linux-Shipping  
#replace symlink to new exe  
ln -s /home/satisfactory/serverfiles/Engine/Binaries/Linux/FactoryServer-Linux-Shipping /home/satisfactory/serverfiles/Engine/Binaries/Linux/UE4Server-Linux-Shipping
#create another new symlink to new exe
ln -s /home/satisfactory/serverfiles/Engine/Binaries/Linux/FactoryServer-Linux-Shipping /home/satisfactory/serverfiles/Engine/Binaries/Linux/UnrealServer-Linux-Shipping

Satisfactory has a new port requirement of TCP 7777. This will give an error when browsing to the server of "failed to connect to the server api" you must edit your config and remove -multihome ${ip} from the launch flags. for some reason, when the satisfactory launches with the multihome flag it binds to 127.0.0.1:7777 instead of the multihome IP (or 0.0.0.0).

Relevant log output

No response

Steps to reproduce

No response

ehcorn commented 2 months ago

also can't launch after the new update, get the error: "serverfiles/Engine/Binaries/Linux/UnrealServer-Linux-Shipping" however replacing the symlinks didn't work for me, still says executable not found. Oddly my files are in the sfserver user home directory not in a satisfactory sub-directory so I have a different folder structure to ewildd. I've got a fresh ubuntu 20.04 install that's only setup to run the LGS script.

edit: Nevermind, I went directly to the folder and fixed launch by replacing the symlinks, launches now. Havent had a chance to test the port issue.

timvandenhof commented 2 months ago

Same issue here, had to replace satisfactory with the default sfserver to make the symlinks work:

#remove symlink
rm /home/sfserver/serverfiles/Engine/Binaries/Linux/UE4Server-Linux-Shipping  
#replace symlink to new exe  
ln -s /home/sfserver/serverfiles/Engine/Binaries/Linux/FactoryServer-Linux-Shipping /home/sfserver/serverfiles/Engine/Binaries/Linux/UE4Server-Linux-Shipping
#create another new symlink to new exe
ln -s /home/sfserver/serverfiles/Engine/Binaries/Linux/FactoryServer-Linux-Shipping /home/sfserver/serverfiles/Engine/Binaries/Linux/UnrealServer-Linux-Shipping

Also had to remove the multihome from the config. After that it seems to work fine, at least on the local network.

svanegmond commented 2 months ago

Edit lgsm/config-default/config-lgsm/sfserver/_default.cfg. Change startparameter to read startparameters="FactoryGame -port=${port} -log". Jump ahead to line 160 or so, and change the executable to read: executable="./FactoryServer-Linux-Shipping".

The lgsm check_executable.sh needs to have the hack for SF update 7 removed from it, the first 'if' clause.

Further, if your server starts and still cannot connect, there is a bug in the game where if ipv6 is not enabled in your server it will listen to 127.0.0.1:7777 only. Verify this with lsof -ni | grep 7777. The solution is to enable ipv6 in your kernel, then you should see it bound to *:7777. If you can't figure out getting ipv6 enabled in the kernel, use rinetd to forward connections.

FlickyFlack commented 2 months ago

Edit lgsm/config-default/config-lgsm/sfserver/_default.cfg. Change startparameter to read startparameters="FactoryGame -port=${port} -log". Jump ahead to line 160 or so, and change the executable to read: executable="./FactoryServer-Linux-Shipping".

The lgsm check_executable.sh needs to have the hack for SF update 7 removed from it, the first 'if' clause.

Further, if your server starts and still cannot connect, there is a bug in the game where if ipv6 is not enabled in your server it will listen to 127.0.0.1:7777 only. Verify this with lsof -ni | grep 7777. The solution is to enable ipv6 in your kernel, then you should see it bound to *:7777. If you can't figure out getting ipv6 enabled in the kernel, use rinetd to forward connections.

Can confirm this to be working. I've used a clean slate and deleted everything Satisfactory related and did a fresh install using ./sfserver install Created the new Symlinks as explained by @timvandenhof (the clean installation does not need to remove the old symlink) Also changed the start parameters as explained by you. Interestingly, my IPv6 Port did not get mapped and I was still able to join (although it is enabled in the kernel)

root@<FunnyName>:~# lsof -ni | grep 7777
FactorySe 2404317        sfserver   13u  IPv4 46335836      0t0  TCP *:7777 (LISTEN)
FactorySe 2404317        sfserver   15u  IPv4 46335858      0t0  UDP *:7777

image image

dgibbs64 commented 2 months ago

Hotfix now released

svanegmond commented 2 months ago

Yeah, sorry to be unclear, ipv6 needs to be present in OS to provide a ::1 to bind to, even if you don't use it at all.