[Support] ich777 - Gameserver Dockers


Recommended Posts

On 10/17/2020 at 8:08 PM, ich777 said:

So everything is working for you?

Sorry for that, I could implement that the container downloads template files for this but the risk that it messes something up is rather high...

Yeah it is working fine.

 

Fair enough about not wanting to implement the configs, as they can change from versions. But maybe just add a note somewhere that they are user supplied? :)

  • Like 1
Link to comment
25 minutes ago, Nuke said:

Hey. Can you do this? Game is out, not sure of dedicated servers availability

https://steamdb.info/app/1064780/

This is actually the dedicated server but it's windows only and I couldn't find much information about it.

I could try it with WINE but this could cause much overhead, eat up much system resources, consume much CPU time, is most of the time not stable and also is possible that it won't run - for example running DayZ and Astroneer through WINE is not possible.

 

You can try my 'The Forest' container, it's also built with WINE and then decide if it's worth the hassle...

  • Like 1
Link to comment
23 hours ago, ich777 said:

Can you try this again and if it occours again send me the log from the container?

 

So it doesn't work?

Can you send me the log?

 

 

Why I'm asking for the log is because I don't get that error and all three startet up just fine.

sorry i tried to repro, but it seems like it must have been some sort of transient network error, because they all download and unzip fine now..... strange

  • Like 1
Link to comment

Dear ich777,

 

I come to you again because I am at a loss and need assisting wrapping my head around your L4D2 container, because I have now confused myself hitting a dead end now.
I am wanting to set up a the dedicated server, starting from the first map of L4D2 and end on the last map of L4D2. Not going to worry about custom addons or maps at this point in time.

The container has the default put in for the Game Parameters: '+maxplayers 8 +map c2m1_highway'. Do I need to configure this line to say: '+maxplayers 8 +map c2m1_highway +server.cfg'? And then configure the config file to rotate between the maps? Or what would be the best way to perform this?
 

As a side question to this, does the game lobby run off of the dedicated server? (Can I force start the container to wait for all players to be ready?) Or is L4D2 not designed to do that?

 

EDIT:
Please disregard this post. I was able to make some headway and was able to get the mod working, how to join a party to the server, and tested that it was working locally! Now I just need to figure out the port for external access....

Edited by ss1gohan13
Link to comment
4 hours ago, ss1gohan13 said:

And then configure the config file to rotate between the maps? Or what would be the best way to perform this?

I think so, it works not different than a normal linux dedicated server.

 

4 hours ago, ss1gohan13 said:

+maxplayers 8 +map c2m1_highway +server.cfg

What the container does is it appends that to the 'srcds_run' command but I think it has to be '+exec server.cfg' but don't cont on that.

 

4 hours ago, ss1gohan13 said:

Please disregard this post. I was able to make some headway and was able to get the mod working, how to join a party to the server, and tested that it was working locally! Now I just need to figure out the port for external access....

Sorry read it a little to late... :D

Link to comment
1 hour ago, ich777 said:

I think so, it works not different than a normal linux dedicated server.

 

Sorry read it a little to late... :D

This was correct. I just took your predefined line (+maxplayers 8 +map c2m1_highway) out and added '+server.cfg' in it's place.

And no worries on the "lateness" on this reply. I kept poking around at things, learning the container, and configuring things as I moved along.

Thank you for your help!

  • Like 1
Link to comment

Hi ich777,

Before i start, thanks for all the work you've done on the gameservers! I'm pretty new to unraid, but had some great fun with it so far!

Hoping you might be able to help with issues i'm having with the Barotrauma server?  I've got it up and running - and can run the sandbox and mission gametypes in multiplayer - but i cant get the campaign option to work (its greyed out - cant be selected or voted for).

I asked for some help on the Barotrauma Discord server and they suggested that i need to give myself admin permissions in the game to be able to edit the settings and select the campaign.  Dont know if you think this would work?  I tried a couple of different things - using the ingame console, the console you can select on the docker itself and the terminal built into unraid - but with all of them couldn't work out what i was supposed to do.  I did see your note on the container install notes about connecting to the console - but couldn't seem to make it work.

As i said, i'm pretty new to the unraid ecosystem - so not fully sure what everything means!  I'm pretty happy following guides / wikis - so if there's anything you could point me in the direction of that'd be amazing!  Happy to provide more info on the things i tried if that helps.

 

  • Thanks 1
Link to comment
6 hours ago, Furion said:

I tried a couple of different things - using the ingame console, the console you can select on the docker itself and the terminal built into unraid - but with all of them couldn't work out what i was supposed to do.  I did see your note on the container install notes about connecting to the console - but couldn't seem to make it work.

No problem I'm here to help. ;)

 

What console did you open the console from Unraid itself or the console from the container (right click on the icon and Console)?

Can you send me the exact command?

 

Btw thank you for reporting that, the description was wrong here is the right command to connect to the console (also you have to open a console from Unraid and not the container):

'docker exec -u steam -ti NAMEOFYOURCONTAINER screen -xS Barotrauma'

(without quotes)

 

Then you should be in the game console, if you're done simply close the console window ;)

  • Thanks 1
Link to comment

Amazing - All fixed - thank you!  So the new command to run in the unraid terminal worked a treat - then i just used giverank and giveperm commands (from here https://www.yekbot.com/barotrauma-console-commands/) to give my steam.id admin rights and all permissions (while i was actively logged into the server).  Works a treat now!

The admin rights and permissions persist when i close the unraid terminal and close and open barotrauma - do you think i'd likely have to redo the process if the container is updated?

 

Thank you again!

Link to comment
19 minutes ago, Furion said:

Works a treat now!

Nice to hear. :)

 

20 minutes ago, Furion said:

The admin rights and permissions persist when i close the unraid terminal and close and open barotrauma - do you think i'd likely have to redo the process if the container is updated?

The steam container itself isn't updated very often because the container has only the necessary dependencies in it and the start script nothing more.

If you restart start the container steamcmd will look if newer version of the game is available und updates it eventually (also i think i put this in the discription).

All the files from the game and all settings are in your appdata directory so nothing will be lost. ;)

I got a different approach to updates than other developers, almost every container checks on each start/restart if a newer version is available and downloads it from the source itself, so the containers haven't to be updated that often only if the developer of the game/application changes something.

 

Hope that makes sense to you. :)

  • Thanks 1
Link to comment
31 minutes ago, stevep94 said:

Hi @ich777 I was just wondering if it was possible for you to do a docker container for Satisfactory?

That's also a game that I want to have a dedicated server, Satisfactory and Astroneer...

As far as I know the dedicated servers aren't released yet and if they release it for windows it's very unlikely that it works (in the case of Astroneer the dedicated server have been released for windows only at the time and it's nearly impossible to run it on linux)

Link to comment
13 minutes ago, ich777 said:

That's also a game that I want to have a dedicated server, Satisfactory and Astroneer...

As far as I know the dedicated servers aren't released yet and if they release it for windows it's very unlikely that it works (in the case of Astroneer the dedicated server have been released for windows only at the time and it's nearly impossible to run it on linux)

Thanks anyway! 

Link to comment
On 10/21/2020 at 6:18 PM, Cyd said:

@ich777 After much heartache I have gotten the ARK servers automod system to work... It makes a call out to SteamCMD (in a different hard coded directory, of course...) to fetch mods from the work shop, then does some post processing to create a metadata .mod file.  

 

A soft link can be made from /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps -> /serverdata/Steam/steamapps probably at the end of the "---Prepare Server---" code block. 

 

---sudo code---

if [ ! -f ${SERVER_DIR}/Engine/Binaries/ThirdParty/SteamCMD/Linux/ ]; then
        echo "---SteamCMD automanagedmods link not found, creating---"

        /serverdata/serverfiles/SteamCMDInstall.sh
        ln -s /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps -> /serverdata/Steam/steamapps
fi

 

Then GameModIds could then be passed into the container as a variable and need to be used in two places. First they need to be enumerated one per line in 

 /serverdata/serverfiles/ShooterGame/Saved/Config/LinuxServer/Game.ini in a block for the fetch/installer function to find, 

I am not thrilled that they chose to put them here rather than in there own file as there are other settings that get placed in this file. But It is not written to by ShooterGameServer as far as I know... 

[ModInstaller]
ModIDS=2229978458
ModIDS=1083349027
ModIDS=1211297684

 

And second they need to be presented to the ShooterGameServer itself ether on the command line as a part of the GAME_PARAMS string

(ie ...?GameModIds=2229978458,1083349027,1211297684?...)

 

or in the /serverdata/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini in the [ServerSettings] block as 

[ServerSettings]
ActiveMods=2229978458,1083349027,1211297684

 

I think I would prefer adding them to the command line arguments rather than in the file, as ShooterGameServer writes to this file and there is no guarantee that they will remain in the same place in the file to check for there presence. 

 

 

I have also figured out a better solution to the CustomDynamicConfig url problem. Could you add a DynamicConfig URL ($CDCURL) var to the XML that if populated would append -UseDynamicConfig to the end of GAME_PARAMS_EXTRA and ?CustomDynamicConfigUrl="$CDCURL" (needs to be passed in with the double quotes) to the end of GAME_PARAMS

Both of those arguments need to be the last in the respective strings.

 

If you are feeling really generous the server clustering things could be passed in as variables and paths too.

-clusterid=MyClusterName and -ClusterDirOverride=/serverdata/serverfiles/clusterfiles can be passed in with GAME_PARAMS_EXTRA string

 

and then the containers just need a common shared path var so they can pass player files back and forth my XML looks like this:

 

<Config Name="ClusterFiles" Target="/serverdata/serverfiles/clusterfiles" Default="" Mode="rw" Description="Container Path: /serverdata/serverfiles/clusterfiles" Type="Path" Display="always" Required="false" Mask="false">/mnt/cache/appdata/arkclusterfiles</Config>

 

I think the GAME_ID variable could be removed from the XML and hard coded as the container is already customized enough that it is unlikely to be useable for any other game at this point and it would be one less thing for people to mess up.

 

 

 

Hey,

 

Im having the same issue, started a Ark server last week and there's a bunch of Mods on it.

Sadly, as you already know, your Client updates the Mods automatically and the Server does not, i always have to do the same Copy&Paste for every new Update. otherwise no one can connect. Its really a Pain in the A**.

Especially if i am at Work, it would be super nice to only restart the Container to Update the Mods.

 

Im not into that all coding.

Could you tell me/us how exactly you geht this auto Download&Update Workshop mods to work?

 

and @ich777 isn't it possible to direktly build the Code into the Container that you only need to put the id's into the Unraid Docker Template ? like if you would change the GamePort ?

Because obviously almost everyone is using Mods on their Server

 

Greets 

Joey

Edited by Cornflake
Link to comment

Assuming you are not getting into the mess of running a cluster just yet and the folder paths are stock, you can set mods up for auto update pretty easily...

 

Install a copy of SteamCMD that the ARK server can control

 

From tower/docker, Go to the containers console and issue these commands (minus the quotes of course)

 

'cd /serverdata/serverfiles'

'./SteamCMDInstall.sh'

'ln -s /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps  /serverdata/Steam/steamapps'

 

then you need to add the mods to the Game.ini ether by cating them in from the console or how ever you prefer to edit your config files. They do not need to be in the same order as they are in the GUS.ini (or on the command line depending on how you load them) but I tend to keep them that way for sanity.

 

'cd /serverdata/serverfiles/ShooterGame/Saved/Config/LinuxServer/'

'cat << EOF >> Game.ini
[ModInstaller]
ModIDS=2229978458
ModIDS=1083349027
ModIDS=1211297684
EOF'

 

You should add -automanagedmods to the command line but I have found that the existence of [ModInstaller] in the Game.ini is enough to trigger the server to fire the subroutine that fetches the mods from the workshop, unpacks them, and writes the .mod file. be aware that if you add the -automanagedmods or [ModInstaller] and have not set up the SteamCMD correctly the server will fail to start with a segfault because it is calling an external application that isn't available.

  • Thanks 1
Link to comment
10 minutes ago, Cyd said:

'cd /serverdata/serverfiles'

'./SteamCMDInstall.sh'

'ln -s /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps  /serverdata/Steam/steamapps'

I don't understand this line, the container has already a valid SteamCMD in it and the server should can control it since they are runned both as the USER=steam

 

Wouldn't it be enough to 'ln' the already installed SteamCMD directory or better create a third path that points from the hosts SteamCMD folder to the folder in the container, I think this path: '/serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps' ?

Link to comment

Really Thank you for that fast Reply @Cyd , im gonna try this now.

and no i dont need clusters :D dont have that much Players

 

but i guess the symlinc is gone if i change the docker or update ? maybe mount the existing steamcmd link (like @ich777 mentioned) from /serverdata/steamcmd to /serverdata/Steam/steamapps should be enough? so that the Symlinc dont break after update ?

Edited by Cornflake
Link to comment
Just now, Cornflake said:

but i guess the symlinc is gone if i change the docker or update ?

Depends on where the link lives if it's inside your appdata directory the link will stay.

 

1 minute ago, Cornflake said:

maybe mount the existing steamcmd link (like @ich777 mentioned) from /serverdata/steamcmd to /serverdata/Steam/steamapps should be enough?

That's not a symbolic link but I think this should also work, why install anything when it's already installed and you can map to it again ;)

Link to comment

@Cyd & @Cornflake

 

I think this should do the trick (but I could be also wrong and could break something inside the container, try it on a fresh install):

Bildschirmfoto_2020-10-28_19-20-03.png.ebae566a22e6a27d15235d22cecec19f.png

 

Container Path: /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps

Host Path: /mnt/cache/appdata/steamcmd (depends on where your SteamCMD path is in the template, I think it's the first entry)

Link to comment

@ich777 and @Cornflake

 

I have it figured out.

 

This enables the game engine to find and use the already available SteamCMD tools.

image.png.7c0445bbf87d5dfdcbca6d36562118c2.png

 

However SteamCMD is smarter than the game engine, it stores downloaded workshop content to its user home directory under "/serverdata/Steam/steamapps/workshop/content/346110/2229978458/" yet the server expects to find it in the directory from which it called the steamCMD tools "/serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps/workshop/content/346110/2229978458" so the soft link is still required because the Steam users home working directory is in the container not on the host.

 

ln -s /serverdata/Steam/steamapps /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps

 

This could simply be included in the startup script block as the /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux directory will exist because of the Path mapping.

 

adding "?GameModIds=2229978458,..." to the Game Parameters 

and "-automanagedmods" to the Extra Game Parameters

would be easy enough to parse in the start-server.sh with the other variables...

 

I am still at a loss of how to safely and reliably modify the Game.ini, any ideas gents?

 

 

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.