[Support] ich777 - Gameserver Dockers


Recommended Posts

I see sed and read are included in the container we can use those to sanitize the Game.ini and then echo in the ModIDs to the bottom of the file without disrupting the other settings.

 

So @ich777 I propose the following additions to the ark-se container:

 

Add a path for the SteamCMD tools:

 

<Config Name="automodSteamCMD" Target="/serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux" Default="" Mode="rw" Description="Container Path: /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux" Type="Path" Display="always" Required="false" Mask="false">/mnt/user/appdata/steamcmd</Config>

 

Add var for a comma separated list of ModID numbers to be passed in:

 

<Config Name="Steam Mod Workshop IDs" Target="MODIDS" Default="" Mode="" Description="Enter a comma-separated list of Steam Workshop Mod ID numbers " Type="Variable" Display="always" Required="false" Mask="false"></Config>

 

and a var that will hold the location of a custom dynamic configuration url:

 

<Config Name="dynamic config location" Target="CDCURL" Default="" Mode="" Description="Leave blank to disable or enter your fully qualified Dynamic config URL http://www.domain.mine/dynamicconfig.ini or http://arkdedicated.com/dynamicconfig.ini to use the official servers config." Type="Variable" Display="always" Required="false" Mask="false"></Config> 

 

 

This code should be added to the end of the "---Prepare Server---" block of /opt/scripts/start-server.sh

 

if [ ! "${MODIDS}" == "" ]; then
echo "---setting Mod config---"
ln -sf /serverdata/Steam/steamapps /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps
sed -i '/^$/d;/ModInstaller/d;/ModIDS/d;' ${SERVER_DIR}/ShooterGame/Saved/Config/LinuxServer/Game.ini
echo "[ModInstaller]" >> ${SERVER_DIR}/ShooterGame/Saved/Config/LinuxServer/Game.ini
IFS=',' read -a MODARR <<< "$MODIDS"
for i in ${MODARR[@]}
do 
echo "ModIDS=$i" >> ${SERVER_DIR}/ShooterGame/Saved/Config/LinuxServer/Game.ini
done
GAME_PARAMS=${GAME_PARAMS}?GameModIds=${MODIDS}
GAME_PARAMS_EXTRA="${GAME_PARAMS_EXTRA} -automanagedmods"
echo "--- ModID(s) ${MODARR[@]} set ---"
fi


if [ ! "${CDCURL}" == "" ]; then
echo "--- setting DynamicConfig --- "
GAME_PARAMS="${GAME_PARAMS}?customdynamicconfigurl=\"${CDCURL}\""
GAME_PARAMS_EXTRA="${GAME_PARAMS_EXTRA} -UseDynamicConfig"
echo "--- DynamicConfig set to \"${CDCURL}\" ---"
fi

 

 

 

 

Edited by Cyd
Link to comment

Hello ,

First of all, thank you ich777 for your excellent work.

 

I am using your container for Conan Exiles, perfect everything is going well.

 

I switched to the Arma 3 container, again everything is fine but ....


I have a problem with the mod argument, it doesn't correctly handle spaces in mod names and therefore doesn't take it into account (path error).
How to pass this argument with a space (directory named "@Enhanced Mouvement" without quotes). The name of the directory is truncated where the space is.

What's the trick in the unraid GUI to get that damn argument to launch?

 

Mods are managed by keys and it is not possible to change the name of the mod to remove the space in the directory path .

 

Thanks for your help

 

mods.txt

Edited by agent_0-NG5T
added the politeness formula
Link to comment
3 hours ago, agent_0-NG5T said:

Hello ,

First of all, thank you ich777 for your excellent work.

 

I am using your container for Conan Exiles, perfect everything is going well.

 

I switched to the Arma 3 container, again everything is fine but ....


I have a problem with the mod argument, it doesn't correctly handle spaces in mod names and therefore doesn't take it into account (path error).
How to pass this argument with a space (directory named "@Enhanced Mouvement" without quotes). The name of the directory is truncated where the space is.

What's the trick in the unraid GUI to get that damn argument to launch?

 

Mods are managed by keys and it is not possible to change the name of the mod to remove the space in the directory path .

 

Thanks for your help

 

mods.txt 1.15 kB · 2 downloads

Hey,

 

You need to put the Modname in Quotes "@Enhanced Mouvement"  OR   use the backslash like   @Enhanced\ Mouvement

both options should work.

 

greets

  • Thanks 1
Link to comment

Hi Cornflake

 

Thank you for taking the time to respond.

 

I tried the 2 proposed solutions, but none of them work, it would be too easy...

 

I tried the " that take the mod out of the command, the \ doesn't work either since only the after part is processed (only Movement and no more @Enhanced)

 

I tried with 'also, but that doesn't work either.

I have tried the path \@Enhanced\ Movement/ with no effect either.
I tried "%20" (unicode) in the command without convincing result.
I've tried a lot of things so far without finding the right sequence.

 

Right now, frankly, I'm running out of ideas.

 

Link to comment
15 minutes ago, agent_0-NG5T said:

Thank you for taking the time to respond.

 

I tried the 2 proposed solutions, but none of them work, it would be too easy...

 

I tried the " that take the mod out of the command, the \ doesn't work either since only the after part is processed (only Movement and no more @Enhanced)

 

I tried with 'also, but that doesn't work either.

I have tried the path \@Enhanced\ Movement/ with no effect either.
I tried "%20" (unicode) in the command without convincing result.
I've tried a lot of things so far without finding the right sequence.

 

Right now, frankly, I'm running out of ideas.

Have you read the instructions on how to install mods on linux?

There is a major problem with your mod: "@Enhanced Mouvement" it has upper case letters in it and on Linux that is not possible!

 

Search on this site for 'Case sensitivity & Mods'

(If I remember correctly when I initally created the container I read lot about that upper case letters will not work on Linux if a mod is used)

Link to comment
3 hours ago, agent_0-NG5T said:

Hi Cornflake

 

Thank you for taking the time to respond.

 

I tried the 2 proposed solutions, but none of them work, it would be too easy...

 

I tried the " that take the mod out of the command, the \ doesn't work either since only the after part is processed (only Movement and no more @Enhanced)

 

I tried with 'also, but that doesn't work either.

I have tried the path \@Enhanced\ Movement/ with no effect either.
I tried "%20" (unicode) in the command without convincing result.
I've tried a lot of things so far without finding the right sequence.

 

Right now, frankly, I'm running out of ideas.

 

 

Linux

Let's assume that ArmA is installed to "/usr/home/arma-server".

Put your Server Basic Config file to "/usr/home/arma-server/basic.cfg"

Put your Server Config File to "/usr/home/arma-server/server.cfg"

Put your Server Difficulty Settings File to "/usr/home/arma-server/server/server.armaprofile"

Command line / link target:

/usr/home/arma-server/server -cfg=basic.cfg -config=server.cfg -name=server -mod=@mod1\;@mod2\;@mod3

NOTE: this line is only for debugging. When you want to run the server permanently, edit and use the provided script "armaserver" that comes with the linux server files.

NOTE 2: the ';' denotes a line-end in Linux. So you have to put a backslash '\' in front of it to use multiple mods. Same if you use spaces in your directories: write 'my\ files'

NOTE 3: as alternative put the modline in quotes: "-mod=@mod1;@mod2;@mod3"

 

 

Look at those Note2 and Note 3, its from the original Wiki

Source: https://community.bistudio.com/wiki/Arma_3_Dedicated_Server

Edited by Cornflake
Link to comment

@ich777: First of all, I would like to thank you for your commitment to this project over the years.

 

I am having troubles getting your OpenTTD container to download OpenTTD. I get the following error:

 

---Checking if UID: 99 matches user---
---Checking if GID: 100 matches user---
---Setting umask to 000---
---Checking for optional scripts---
---No optional script found, continuing---
---Starting...---
---Getting latest OpenTTD build version...---
---Latest OpenTTD build version is: 1.10.3---
---Getting latest OpenGFX version...---
---Latest OpenGFX version is: 0.6.0---
---Version Check---

-------------------------------------
---OpenTTD not found! Downloading,---
---compiling and installing v1.10.3---
---Please be patient, this can take--
---some time, waiting 15 seconds..---
-------------------------------------
---Can't download OpenTTD v1.10.3 putting server into sleep mode---

 

 

Container is currently setup in bridge mode, if that makes a difference.

Link to comment
12 minutes ago, logic1485 said:

@ich777: First of all, I would like to thank you for your commitment to this project over the years.

 

I am having troubles getting your OpenTTD container to download OpenTTD. I get the following error:

 


---Checking if UID: 99 matches user---
---Checking if GID: 100 matches user---
---Setting umask to 000---
---Checking for optional scripts---
---No optional script found, continuing---
---Starting...---
---Getting latest OpenTTD build version...---
---Latest OpenTTD build version is: 1.10.3---
---Getting latest OpenGFX version...---
---Latest OpenGFX version is: 0.6.0---
---Version Check---

-------------------------------------
---OpenTTD not found! Downloading,---
---compiling and installing v1.10.3---
---Please be patient, this can take--
---some time, waiting 15 seconds..---
-------------------------------------
---Can't download OpenTTD v1.10.3 putting server into sleep mode---

 

 

Container is currently setup in bridge mode, if that makes a difference.

Oh nice you are using the today updated container ;)

 

Can you check if you can download this file (I can reach and download it). The container tries also to download this file and then do the further steps.

Please also check if in your appdata directory is a file called 'installed_v_1.10.3', if so please delete it and try to restart the container.

Link to comment
6 minutes ago, ich777 said:

Oh nice you are using the today updated container ;)

 

Can you check if you can download this file (I can reach and download it). The container tries also to download this file and then do the further steps.

Please also check if in your appdata directory is a file called 'installed_v_1.10.3', if so please delete it and try to restart the container.

 

 

I deleted "installed_v_1.10.3" and there was another file (I'm guessing because I had downloaded the older version, previously) called "installed_v_1.8.0" which I also deleted.

 

Then I restarted the container, and after a little bit, everything seems to work!

 

Thank you very much!

 

Now I just need to figure out how to setup the game so that it is like the local game, with all the GRFs that I like...!

  • Like 1
Link to comment
2 minutes ago, logic1485 said:

Then I restarted the container, and after a little bit, everything seems to work!

Nice

 

2 minutes ago, logic1485 said:

Now I just need to figure out how to setup the game so that it is like the local game, with all the GRFs that I like...!

Sadly I don't know how to do that and what that even means, but I think you will get that on the forums :)

Link to comment

Ich,

 

Arma 3, that is the server and not the client correct?  Also when you have time, could you look at into creating a container for the Arma 3 headless client. 

 

"A Headless Client can be used by missions to offload AI processing to a dedicated client, freeing up the dedicated server process from most AI processing. Thus more AI units can be spawned and the server process will be able to dedicate most of it is processing towards communication with the clients. For a Headless Client/Dedicated Server to function together efficiently, they both need to be connected to each other via extremely low latency and high bandwidth. Effectively, they need to be on the same LAN at least, but preferably running on the same computer."

 

Thanks!

Link to comment
4 hours ago, Spectral Force said:

Ich,

 

Arma 3, that is the server and not the client correct?  Also when you have time, could you look at into creating a container for the Arma 3 headless client. 

 

"A Headless Client can be used by missions to offload AI processing to a dedicated client, freeing up the dedicated server process from most AI processing. Thus more AI units can be spawned and the server process will be able to dedicate most of it is processing towards communication with the clients. For a Headless Client/Dedicated Server to function together efficiently, they both need to be connected to each other via extremely low latency and high bandwidth. Effectively, they need to be on the same LAN at least, but preferably running on the same computer."

 

Thanks!

I will look into this but does it make any sense if it runs on the same machine? Can you send me the link where you take the text from?

 

Btw this is the Dedicated Server Container.

Link to comment
On 10/29/2020 at 6:32 AM, Cyd said:

@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?

 

 

 

sadly i'm not getting this to work it always stops at the last mod in the list and stops continuing

 

i guess hes not finding the files where hes expecting it. but i tried many different mount and links to folders but cant geht it to work.

any ideas ?

 

 

sidenote: found out if you put -automanagedmods in The extra parameter and you have your mods in ActiveMods= in GUS.ini you wont need to put the [ModInstaller] in game.ini. so you only need to put your modid into one place. otherwise you have to edit both files or gameparameters

Link to comment
31 minutes ago, Cornflake said:

sadly i'm not getting this to work it always stops at the last mod in the list and stops continuing

 

i guess hes not finding the files where hes expecting it. but i tried many different mount and links to folders but cant geht it to work.

any ideas ?

 

 

sidenote: found out if you put -automanagedmods in The extra parameter and you have your mods in ActiveMods= in GUS.ini you wont need to put the [ModInstaller] in game.ini. so you only need to put your modid into one place. otherwise you have to edit both files or gameparameters

I will have to look into that, if they do not need to be in the Game.ini and can be simply included in the command line that would alleviate having to manitupate ether file.

Link to comment

@Cornflake & @ich777 

You are correct!! manipulation of the Game.ini is not necessary, adding "?GameModIds=" to the $GAME_PARAMS is sufficient to trigger the automod manager.

 

the new code block would be:

 

if [ ! "${MODIDS}" == "" ]; then
echo "---setting Mod config---"
ln -sf /serverdata/Steam/steamapps /serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps
GAME_PARAMS=${GAME_PARAMS}?GameModIds=${MODIDS}
GAME_PARAMS_EXTRA="${GAME_PARAMS_EXTRA} -automanagedmods"
echo "--- ModID(s) ${MODARR[@]} set ---"
fi


if [ ! "${CDCURL}" == "" ]; then
echo "--- setting DynamicConfig --- "
GAME_PARAMS="${GAME_PARAMS}?customdynamicconfigurl=\"${CDCURL}\""
GAME_PARAMS_EXTRA="${GAME_PARAMS_EXTRA} -UseDynamicConfig"
echo "--- DynamicConfig set to \"${CDCURL}\" ---"
fi

Link to comment

Hi all I am struggling to get the DontStarveTogether container to run successfully. This is the first game server I have tried to host from my Unraid box. I own the game on Steam, I've included my Steam username and password in the docker install template. I've setup port forwarding for all 3 ports (10890, 27016, 8766) on my router to my unraid box and I generated and updated the token file, but keep getting errors in my docker log:

 

---Update Server---
Redirecting stderr to '/serverdata/Steam/logs/stderr.txt'
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
[ 0%] Checking for available update...
[----] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (236 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[----] Verifying installation...
[ 0%] Downloading Update...
[ 0%] Checking for available update...
[----] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (0 of 49,952 KB)...
[ 0%] Downloading update (574 of 49,952 KB)...
[ 1%] Downloading update (0 of 49,952 KB)...
[ 0%] !!! Fatal Error: Steamcmd needs to be online to update. Please confirm your network connection and try again.
threadtools.cpp (3294) : Assertion Failed: Illegal termination of worker thread 'Thread(0x0x569a12e0/0x0x2a23ab'
---Prepare Server---
---No Caves/server.ini found, downloading template...---
---Sucessfully downloaded 'caves_server.ini'---
---No Caves/worldgenoverride.lua found, downloading template...---
---Sucessfully downloaded 'caves_worldgenoverride.lua'---
---Server ready---
---Checking for old logs---
---Start Server---
/opt/scripts/start-server.sh: line 155: cd: /serverdata/serverfiles/bin: No such file or directory
==> /serverdata/serverfiles/masterLog.0 <==
Cannot exec '/serverdata/serverfiles/bin/dontstarve_dedicated_server_nullrenderer': No such file or directory

==> /serverdata/serverfiles/cavesLog.0 <==
Cannot exec '/serverdata/serverfiles/bin/dontstarve_dedicated_server_nullrenderer': No such file or directory

 

Am I missing something obvious?

 

 

Thanks for any advise!

 

Link to comment
20 minutes ago, Hoof said:

[ 0%] !!! Fatal Error: Steamcmd needs to be online to update. Please confirm your network connection and try again.

There seems to be something wrong with the network, try to restart the container again.

Have you PiHole installed in your network?

 

Recently I also have some porblems with my internet connection (some sites won't open, long loading times,...), I also get some questions here why some things are not downloading but I think this has something to do with a backbone and the "Internet" itself...

 

Try to restart the container again and look if it downloads the game in the logs.

Can you tell me whats in the two folders for the game in your appdata directory.

 

 

@Cyd sadly no, been really busy with my life at the time...

Link to comment
12 hours ago, Cyd said:

I will have to look into that, if they do not need to be in the Game.ini and can be simply included in the command line that would alleviate having to manitupate ether file.

 

i did not managed it to work

It always stops at the last mod to download

If i add another or remove one its always the last mod where it stops to download.

 

i did the symlinc and checked the mod files he downloaded are at both places

 

/serverdata/Steam/steamapps/workshop

and

/serverdata/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps/workshop
 

 so what am i missing ? i think he completely downloaded the mods but the step where he has to copy them to the conten/mod folder are not happening ?

it stays at this place forever (see Picture)

 

ark.PNG.c92c7a38d464f6ea9dd0e25e86de7917.PNG

 

 

 

 

Edited by Cornflake
Link to comment

@Cornflake that looks like a successful launch to me. Take a look at your tower/docker page and look at the memory usage for the container, it should be spooling up. It seems to me that shootergameserver has the last message held in a queue. If you open the console in the container and look in ShooterGame/Content/Mods/ you should see all of the .mod meta files there and available. 

 

@ich777 understood, we have indeed been living in interesting times.

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

There seems to be something wrong with the network, try to restart the container again.

Have you PiHole installed in your network?

 

Can you tell me whats in the two folders for the game in your appdata directory.

 

I do have PiHole running on my network, but I have disabled it and get the same error. I also disabled my router GeoIP filtering to make sure that wasn't causing the problem.

 

Here is what I see in the serverdata folder

Screenshot2.png

Screenshot.png

Edited by Hoof
Link to comment
14 minutes ago, Hoof said:

 

I do have PiHole running on my network, but I have disabled it and get the same error. I also disabled my router GeoIP filtering to make sure that wasn't causing the problem.

 

Here is what I see in the serverdata folder

You have no files in it...

Looks like something is preventing the container from downloading anything....

 

EDIT: Have you entered Steam credentials in the container? If so please remove it, I think for DontStarveTogether you don't need it.

Enter it only if they are marked as required.

Link to comment
2 hours ago, ich777 said:

You have no files in it...

Looks like something is preventing the container from downloading anything....

 

EDIT: Have you entered Steam credentials in the container? If so please remove it, I think for DontStarveTogether you don't need it.

Enter it only if they are marked as required.

Yeah I have installed this container several times with and without my steam credentials... Nothing.

Is there a way I an try to manually download steamcmd via wget or something?

 

My cache drive is formatted btrfs is that a problem?

Link to comment
9 hours ago, Hoof said:

Yeah I have installed this container several times with and without my steam credentials... Nothing.

You don't have to install it multiple times, just restart it, without credentials for this game!

 

9 hours ago, Hoof said:

Is there a way I an try to manually download steamcmd via wget or something?

I think SteamCMD is installed because it tries to update itself but can't (steamcmd.sh is in there and that should be enough).

The log says that it's trying to update but after multiple failed attempts it gives up.

 

This would be the command that SteamCMD tries to execute: '${STEAMCMD_DIR}/steamcmd.sh +login anonymous +quit' (without quotes - you can put it in like this but be sure to type in 'su $USER' without quotes!!!).

 

This seems like a pure network issue.

 

I also tried to download the container and it works without any problem.

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.