[Support] ich777 - Gameserver Dockers


Recommended Posts

5 minutes ago, kiowa2005 said:

Thanks, Any chance you would be willing to update the docker to pull down the workshop subscribed mods via steamcmd? It would be a really nice out of the box server solution?

I'm not 100% sure since most mods need's to be setup manually for example Exile Mod and need some file copying...

If can explain me this a little bit how it works with ArmA3 i will look into it (since i'm not familar with this game).

Do i have to setup or put in the workshop ID's and path in a file like for example in Conan: Exiles?

Or download it and ArmA3 will pick up the mods automatically?

EDIT: or at least a tutorial somewhere?

Edited by ich777
Link to comment

That would be great:

 

This guide has some details. The important part is the case sensitivity issue on Linux that should be accommodated for:

 

https://community.bistudio.com/wiki/Arma_3_Dedicated_Server#Case_sensitivity_.26_Mods

 

Here is a windows example of the steamcmd workshop sync:

https://forum.studio-397.com/index.php?threads/how-to-getting-content-from-the-workshop-on-my-dedicated-server.58702/

 

I assume you can get an array from steam of the item IDs.  The game ID is static.

.as far as location. It is specified in the "-mod" parameter in the docker settings.  Ideally /serverdata/serverfiles/mods

 

Then the mod parameter would be:

-mod=/mods/@somemodname\;/mods/@somemodname2

 

 

Link to comment
40 minutes ago, ich777 said:

I'm not 100% sure since most mods need's to be setup manually for example Exile Mod and need some file copying...

If can explain me this a little bit how it works with ArmA3 i will look into it (since i'm not familar with this game).

Do i have to setup or put in the workshop ID's and path in a file like for example in Conan: Exiles?

Or download it and ArmA3 will pick up the mods automatically?

EDIT: or at least a tutorial somewhere?

I found this example of how to get a list of the Content ID's for a given Game ID:

https://github.com/GameServerManagers/LinuxGSM/issues/1623

Link to comment
17 minutes ago, kiowa2005 said:

I found this example of how to get a list of the Content ID's for a given Game ID:

https://github.com/GameServerManagers/LinuxGSM/issues/1623

Look at my Conan: Exiles container, i easily could make a command so that the container downloads whatever mod's you need (simply by inserting the workshop ID's), but please keep in mind that further steps are required to install the mods from what i've read so far and every mod is different...

I don't know if that's what you want...

Link to comment

Sure, I'd take that.  

 

So you would have the game ID hardcoded for ARMA3 and then another parameter would accept a comma deliminated list for workshop ID's?

That would be very helpful.  Eventually it would be ideal if the docker would just download the subscribed workshop items for a given Game ID parameter at some point.  So if you implement the workshop ID list parameter, the next step would be building or using a script that knows how to pull that list down and we can modify it from there.

 

Link to comment

I attempted to make a little progress on my own but something seems to be unhappy with steamcmd:

 

Because the collection ID references the desktop app ID and not the headless server ID I was forced to use a steam account that had the desktop game purchased on it.

 

I needed to add a few additional variables to the docker.

COLLECTION_ID

GAME_APP_ID = 107410

 

Added the following dependency to the docker:

curl

 

Note: I was using the GAME_ID=233780 variable that is already in place but steam instead uses the ARMA3 Server Game_APP_ID=107410 variable to see the collections. 

 

Next I created a script in the /gamefiles/scripts directory so it wouldn't get blown away when the docker updates.  I then had to symbolically link that to the '/opt/scripts/user.sh' folder as u suggested.  Ultimately I think this should be added to the docker

 

The last line is commented out but I intend to recursively go through the files to make them all lower case to battle the linux case sensitivity issues with the game mods.

#!/usr/bin/env bash

# This must be run as user steam

set -e
set -o pipefail

if [ -n "$COLLECTION_ID" ]; then
 mapfile -t WS_IDS < <(curl -s https://steamcommunity.com/sharedfiles/filedetails/?id="${COLLECTION_ID}" | grep "https://steamcommunity.com/sharedfiles/filedetails/?id=" | grep -Eoi '<a [^>]+>' | tail -n +2 | grep -Eo 'h>
fi
# shellcheck disable=2128
if [ -z "${USERNAME}" ]; then
    printf "Steam-Username is not set, please configure in docker config"
    exit 1
elif [ -z "${PASSWRD}" ]; then
    printf "Steam-Password is not set, please configure in docker config"
    exit 1
elif [ -z "${COLLECTION_ID}" ]; then
    printf "COLLECTION_ID is not set in docker config. Update exiting."
    exit 1
fi
if [ ! -d "$SERVER_DIR"/mods ]; then
    if ! mkdir -p "$SERVER_DIR"/mods; then
        exit 1
    fi
fi

# loop through the collection and download each mod
for workshop_item in "${WS_IDS[@]}"; do
    modname="$(curl -s https://steamcommunity.com/sharedfiles/filedetails/?id="${workshop_item}" | grep "<title>" | sed -e 's/<[^>]*>//g' | cut -d ' ' -f 4-)"
#    modname_clean=$(echo "$modname" | dos2unix)

    # remove CR
    modname_clean=$(echo "$modname" | sed -e 's/\r//g')

    counter=1
    printf "Downloading %s \n" "$modname_clean"
    until ${STEAMCMD_DIR}/steamcmd.sh \
        +login ${USERNAME} ${PASSWRD} \
        +force_install_dir $SERVER_DIR \
        +workshop_download_item ${GAME_APP_ID} ${workshop_item} validate \
        +quit; do

        printf "Error Downloading %s. Will try again \n" "$modname_clean"

        counter++

        if ((counter > 4)); then
            break
        fi
    done

     # replace spaces with underscores
    modname_clean=$(echo "$modname_clean" | sed -e 's/ /_/g')

    # remove CR
    modname_clean=$(echo "$modname_clean" | sed -e 's/\r//g')

    # make all lowercase
    modname_clean=$(echo "$modname_clean" |  sed 's/.*/\L&/')

    if [ ! -L "${SERVER_DIR}/mods/${modname_clean}" ]; then
        echo "${SERVER_DIR}/mods/${modname_clean}"
        ln -s "${SERVER_DIR}/steamapps/workshop/content/${GAME_APP_ID}/${workshop_item}/" "${SERVER_DIR}/mods/${modname_clean}"
    fi
done

# convert all files to lower case
#cd "${SERVER_DIR}/steamapps/workshop/content/${GAME_APP_ID}"

 

 

 

Although it seems to be working.  I do see some nuisance errors that I would like to better understand so that I can fix them.

Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...applicationmanager.cpp (4057) : Assertion Failed: CApplicationManager::GetMountVolume: invalid index
applicationmanager.cpp (4057) : Assertion Failed: CApplicationManager::GetMountVolume: invalid index
applicationmanager.cpp (4220) : Assertion Failed: m_vecInstallBaseFolders.Count() > 0
Failed to init SDL priority manager: SDL not found
Failed to set thread priority: per-thread setup failed
Failed to set thread priority: per-thread setup failed

 

 

Edited by kiowa2005
Link to comment
18 hours ago, kiowa2005 said:

I attempted to make a little progress on my own but something seems to be unhappy with steamcmd:

 

Because the collection ID references the desktop app ID and not the headless server ID I was forced to use a steam account that had the desktop game purchased on it.

 

I needed to add a few additional variables to the docker.

COLLECTION_ID

GAME_APP_ID = 107410

 

Added the following dependency to the docker:

curl

 

Note: I was using the GAME_ID=233780 variable that is already in place but steam instead uses the ARMA3 Server Game_APP_ID=107410 variable to see the collections. 

 

Next I created a script in the /gamefiles/scripts directory so it wouldn't get blown away when the docker updates.  I then had to symbolically link that to the '/opt/scripts/user.sh' folder as u suggested.  Ultimately I think this should be added to the docker

 

The last line is commented out but I intend to recursively go through the files to make them all lower case to battle the linux case sensitivity issues with the game mods.

 

Although it seems to be working.  I do see some nuisance errors that I would like to better understand so that I can fix them.

 

 

Yes, that's the problem with the collections and workshop ID's since with the ArmA3 container it is necessary that you own the main game and has nothing to do with the dedicated server.

 

I would not make this with another variable since the main game ID wouldn't change anytime soon...

 

With the Workshop ID's you have to don't use curl...

 

You can mount the file directly into the container like in this screenshot (also wouldn't recommend to use symlinks because they are not persistant if you change anything in the template or if i release a update):

grafik.png.3df0e1c19fa05df1c6e443320ddb4a4d.png

 

 

Did you think it is necessary to do it with the Collections or would the Workshop ID's (sperated by SPACE) like in the Conan Exiles container be enough?

Link to comment

ich777, Love your work. Specifically the NWN EE docker image on unraid.

 

Quick quesiton, does it support loading the campaign modules? They seem to have a .nwm file extension and not the .mod you were expecting?

In the server gui, you just select the dropdown and choose "Chapter1". When I input that into the modules location in unraid, I get the following:

 

Server: Loading module "Chapter1"

Server: Unable to load module

Server: Exiting...

 

Just trying to get a definitive answer and save myself some time.

 

Cheers!

Link to comment

Trying to run your killing floor server. Its working well! However I have noticed something weird. I can connect to the server by looking on the lan in server browser, and I can connect to it using the internet server browser. I can not connect to it using open {localIP} or open {using my mydomain.duckdns.org} it says the connection has been lost. I have port 7777 open. Even weirder is that I can access the webadmin remotely by going to mydomain.duckdns.org:3596. I had to change the port for webadmin to 3596 because 8080 was in use. Any ideas?

Link to comment
11 hours ago, Hobbesthecalvinist said:

ich777, Love your work. Specifically the NWN EE docker image on unraid.

 

Quick quesiton, does it support loading the campaign modules? They seem to have a .nwm file extension and not the .mod you were expecting?

In the server gui, you just select the dropdown and choose "Chapter1". When I input that into the modules location in unraid, I get the following:

 

Server: Loading module "Chapter1"

Server: Unable to load module

Server: Exiting...

 

Just trying to get a definitive answer and save myself some time.

 

Cheers!

I think i've tested the container with the campaign files but i'm not 100% sure, can you give me a little bit more detail how that works since i'm not very familar with the game itself.

 

EDIT: Can you try to change this path from: '/mnt/user/...' to '/mnt/cache/...' and report back:

grafik.thumb.png.b5d0ca6f23e4aec59ed83c1f8c823a35.png

 

7 hours ago, PrisonMike said:

Trying to run your killing floor server. Its working well! However I have noticed something weird. I can connect to the server by looking on the lan in server browser, and I can connect to it using the internet server browser. I can not connect to it using open {localIP} or open {using my mydomain.duckdns.org} it says the connection has been lost. I have port 7777 open. Even weirder is that I can access the webadmin remotely by going to mydomain.duckdns.org:3596. I had to change the port for webadmin to 3596 because 8080 was in use. Any ideas?

I will take a look at this, but i think it has something to do with the DNS resolver or how the game resolves IP adresses if you want to connect with the domainname, however did you connect thourgh the steam server console or ingame?

Since i'm having a static IP and a "real" domainname i don't have this error, i can connect with my domainname.

Edited by ich777
Link to comment

Hello,so I'm running the minecraftbasicserver docker on uneaid and even though the port is open and I can connect locally on another computer. My friends can't connect. Is this a known bug or is this an issue with feed the beast 

 

Ps love your stuff man.

Edited by fastassonic
Link to comment
3 hours ago, fastassonic said:

Hello,so I'm running the minecraftbasicserver docker on uneaid and even though the port is open and I can connect locally on another computer. My friends can't connect. Is this a known bug or is this an issue with feed the beast 

 

Ps love your stuff man.

Can you post a screenshot from the template page and also your port forwarding?

Do you have a static public IP address?

Should be working just fine (also please note that you must tweak the server.properties to be not only LAN!

 

1 hour ago, Florian_GER said:

Hi Ich777, 

 

i would like to have a assetto corsa competizione sever docker container if possible. 

 

hope all are well in this times. 

 

Greetings Florian

I think this should be doable but i don't own the game and since i must run the dedicated server through WINE (also it can be possible that the server has much overhead and eat a lot of system resources, but since the official wiki says also that it should be run through WINE i think it should be not an issue) i can't easily make one without owning the game.

 

But i've seen that you must copy the dedicated server files manually... and an automatic download wouldn't work really well...

 

Here in Austria is all looking good so far, hope you're doing well...

Edited by ich777
  • Like 1
Link to comment
35 minutes ago, ich777 said:

Can you post a screenshot from the template page and also your port forwarding?

Do you have a static public IP address?

Should be working just fine (also please note that you must tweak the server.properties to be not only LAN!

 

I think this should be doable but i don't own the game and since i must run the dedicated server through WINE (also it can be possible that the server has much overhead and eat a lot of system resources, but since the official wiki says also that it should be run through WINE i think it should be not an issue) i can't easily make one without owning the game.

 

But i've seen that you must copy the dedicated server files manually... and an automatic download wouldn't work really well...

 

Here in Austria is all looking good so far, hope you're doing well...

 

So I got the pictures you asked for but I had to take them from a phone since this isn't my computer. It's my roommates.

Also I set the online mode to true in server.properties

15868611235503711513771043092431.jpg

15868611863573362607096162270384.jpg

Link to comment
5 minutes ago, fastassonic said:

 

So I got the pictures you asked for but I had to take them from a phone since this isn't my computer. It's my roommates.

Also I set the online mode to true in server.properties

 

 

Are you willing to upload your whole minecraft server directory so i can try it on my own server?

PM me if you need a place where you can drop the files.

Link to comment
57 minutes ago, ich777 said:

I think this should be doable but i don't own the game and since i must run the dedicated server through WINE (also it can be possible that the server has much overhead and eat a lot of system resources, but since the official wiki says also that it should be run through WINE i think it should be not an issue) i can't easily make one without owning the game.

 

But i've seen that you must copy the dedicated server files manually... and an automatic download wouldn't work really well...

 

Here in Austria is all looking good so far, hope you're doing well...

Hi Ich777,

i am doing well to thank you. Is there something i can do to help you ? Upload the server files or anything ? 

 

Link to comment

Ich777, thanks for getting back to me. 

Quote

I think i've tested the container with the campaign files but i'm not 100% sure, can you give me a little bit more detail how that works since i'm not very familar with the game itself.

 

EDIT: Can you try to change this path from: '/mnt/user/...' to '/mnt/cache/...' and report back

 

I its not the setting that makes a difference. I can load modules just fine. 

If you download the server exe, you can see the modules are kept in a different folder than the campaign files (and they are a different type). Not sure how the normal GUI loads them... But the .mod files load just fine in your image. Just no way to access the campaign?

 

To download the server zips:
https://forums.beamdog.com/discussion/67157/server-download-packages-and-docker-support

Downloads_nwndedicatedserver1.69.png

Server Setting Dropdown.png

Chapters_nwndedicatedserver1.69_nwm.png

Edited by Hobbesthecalvinist
clarification
Link to comment
1 hour ago, Hobbesthecalvinist said:

Ich777, thanks for getting back to me. 

 

I its not the setting that makes a difference. I can load modules just fine. 

If you download the server exe, you can see the modules are kept in a different folder than the campaign files (and they are a different type). Not sure how the normal GUI loads them... But the .mod files load just fine in your image. Just no way to access the campaign?

 

To download the server zips:
https://forums.beamdog.com/discussion/67157/server-download-packages-and-docker-support

I will look into that, give me a few days (this container is based on the beamdog files ;) ).

Link to comment

Hey ich777, I love all the work you've done with getting game servers running in Docker. For the first time, I've run into an issue with Source-based games. So far I've tried the CS: Source and Team Fortress 2 containers and end up with a segfault that prevents the server from running:

 

Setting breakpad minidump AppID = 232330
Using breakpad crash handler
Segmentation fault
Add "-debug" to the /serverdata/serverfiles/srcds_run command line to generate a debug.log to help with solving this problem
Tue 14 Apr 2020 05:06:03 PM EDT: Server restart in 10 seconds

 

I doubt the error is Docker-specific, but for the life of me I cannot figure out how to enable debug mode to see what is causing the segfault. I was hoping the GAME_PARAMS variable would do it, but the log output doesn't change and a debug.log is nowhere to be found, in the container or otherwise. I also tried running srcds_run from within the container and added the -debug flag myself, and the output wasn't any different. Any ideas?

Link to comment
1 hour ago, BumbleCrap said:

Hey ich777, I love all the work you've done with getting game servers running in Docker. For the first time, I've run into an issue with Source-based games. So far I've tried the CS: Source and Team Fortress 2 containers and end up with a segfault that prevents the server from running:

 

Setting breakpad minidump AppID = 232330
Using breakpad crash handler
Segmentation fault
Add "-debug" to the /serverdata/serverfiles/srcds_run command line to generate a debug.log to help with solving this problem
Tue 14 Apr 2020 05:06:03 PM EDT: Server restart in 10 seconds

 

I doubt the error is Docker-specific, but for the life of me I cannot figure out how to enable debug mode to see what is causing the segfault. I was hoping the GAME_PARAMS variable would do it, but the log output doesn't change and a debug.log is nowhere to be found, in the container or otherwise. I also tried running srcds_run from within the container and added the -debug flag myself, and the output wasn't any different. Any ideas?

You can't enable debug logging because gdb is not installed (but even if this would be installed the steam debug lug doesn't tell you much).

 

Doese it segfault with the vanilla configuration?

Do you have a cache drive in your server if yes, please be sure that the appdata folder is set to 'Prefer' at the use cache section.

If you don't have a cache drive installed you must change the path from '/mnt/cache/...' to the physical disc where the gamefiles are for example: '/mnt/disk1/...' (if the gamefiles are split over multiple disks you cannot start the conatainer without a segfault).

Link to comment
On 4/13/2020 at 1:10 PM, ich777 said:

Yes, that's the problem with the collections and workshop ID's since with the ArmA3 container it is necessary that you own the main game and has nothing to do with the dedicated server.

 

I would not make this with another variable since the main game ID wouldn't change anytime soon...

 

With the Workshop ID's you have to don't use curl...

 

You can mount the file directly into the container like in this screenshot (also wouldn't recommend to use symlinks because they are not persistant if you change anything in the template or if i release a update):

grafik.png.3df0e1c19fa05df1c6e443320ddb4a4d.png

 

 

Did you think it is necessary to do it with the Collections or would the Workshop ID's (sperated by SPACE) like in the Conan Exiles container be enough?

This looks good, however, the collection_ID is MUCH preferred.  Can you add curl to the docker?

Link to comment

Hey trying out the conan exiles dedicated server, everything seems to go fine, but in the logs i get:
---Server ready---
---Start Server---
001d:err:setupapi:SetupDiSelectBestCompatDrv No compatible drivers were enumerated for device L"WINEMOUSE\\VID_0000&PID_0000\\0&WINEMOUSE&0&0".
001d:err:plugplay:install_device_driver Install function 0x17 failed, error 0xe0000228.
002a:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
002a:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
002a:fixme:advapi:RegisterEventSourceW ((null),L"ConanSandbox-PID41"): stub

and I can't connect to it, not sure if its even running properly.

Link to comment
4 hours ago, Thrathius said:

Hey trying out the conan exiles dedicated server, everything seems to go fine, but in the logs i get:
---Server ready---
---Start Server---
001d:err:setupapi:SetupDiSelectBestCompatDrv No compatible drivers were enumerated for device L"WINEMOUSE\\VID_0000&PID_0000\\0&WINEMOUSE&0&0".
001d:err:plugplay:install_device_driver Install function 0x17 failed, error 0xe0000228.
002a:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
002a:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
002a:fixme:advapi:RegisterEventSourceW ((null),L"ConanSandbox-PID41"): stub

and I can't connect to it, not sure if its even running properly.

Please post a full log.

Also are you running the container with the vanilla settings or did you change anything.

One indication if the container runs is how much ram that it uses and cpu power on the main Docker page in Unraid.

Will test if the container will startup on my server.

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.