Rust (game) Docker Problem (probably easy)


guyonphone

Recommended Posts

Hello,

 

I have recently got into the game Rust. I would like to setup my own personal server on my unraid server. Several people have already created dockers for Rust servers.. I am currently trying to use a preconfigured rust docker from here -> https://hub.docker.com/r/didstopia/rust-server/

 

There is a walkthrough guide here -> http://rust.didscraft.com/rust-server-on-linux-using-docker/ in which they show the docker configuration as:

 

docker run --name rust-server -d -p 28015:28015 -p 28015:28015/udp -p 28016:28016 -p 8080:8080 -v /rust:/steamcmd/rust --env-file /rust.env didstopia/rust-server

 

I Tried setting up the docker as best as I could understand, however I am clearly doing something wrong.

 

XvCjhsT.png

 

My questions are:

1. How do I properly configure the gui for: "--env-file /rust.env"

2. I think I have the folder mapping done incorrectly as the error I get when starting the docker says

Cannot Find "/steamcmd/rust/RustDedicated"

 

Error Log:

Installing/updating steamcmd..
linux32/
linux32/libstdc++.so.6
linux32/steamcmd
steamcmd.sh
steam.sh
Installing/updating Rust..
Updates disabled
Starting web server..
Log rotation enabled!
Using startup arguments: -batchmode -load +server.secure 1
Cleaning up old logs..
Starting scheduled task manager..
Starting Rust..
couldn't execute "/steamcmd/rust/RustDedicated": no such file or directory
while executing
"spawn -noecho /steamcmd/rust/RustDedicated -batchmode -load +server.secure 1 +rcon.port 28016 +rcon.password docker +rcon.web 1 -logfile /dev/stdout +..."
("eval" body line 1)
invoked from within
"eval [list spawn -noecho] $argv"
invoked from within
"if {[string compare [lindex $argv 0] "-p"] == 0} {
# pipeline
set stty_init "-echo"
eval [list spawn -noecho] [lrange $argv 1 end]
clo..."
(file "/usr/bin/unbuffer" line 13)
Installing/updating steamcmd..
linux32/
linux32/libstdc++.so.6
linux32/steamcmd
steamcmd.sh
steam.sh
Installing/updating Rust..
Updates disabled
Starting web server..
Log rotation enabled!
Using startup arguments: -batchmode -load +server.secure 1
Cleaning up old logs..
Starting scheduled task manager..
Starting Rust..
couldn't execute "/steamcmd/rust/RustDedicated": no such file or directory
while executing
"spawn -noecho /steamcmd/rust/RustDedicated -batchmode -load +server.secure 1 +rcon.port 28016 +rcon.password docker +rcon.web 1 -logfile /dev/stdout +..."
("eval" body line 1)
invoked from within
"eval [list spawn -noecho] $argv"
invoked from within
"if {[string compare [lindex $argv 0] "-p"] == 0} {
# pipeline
set stty_init "-echo"
eval [list spawn -noecho] [lrange $argv 1 end]
clo..."
(file "/usr/bin/unbuffer" line 13)

 

Any help would be greatly appreciated!

 

Thanks

 

 

 

Link to comment

I would think that --env-file /rust.env goes into the extra parameters, not the environment variables, since it is a file that contains all the environment variables.  Barring that, you can take all those entries in the env file and add them individually as separate environment variables.

 

Beyond that, I'm not quite sure where exactly /run.env is actually stored.  The example has it in the root folder.  But the root of what? the containers image (probably) or the root of unraid (unlikely).  Myself, playing around I would add another volume called something like /Environment mapped to /mnt/user/appdata/rust and then reference the file as /Environment/rust.env.

 

But like I said, your easiest course of action may be to just take those variables and toss them all into separate environment variables.

Link to comment
  • 6 months later...
  • 1 month later...

well...normally yes. the docker image will use local hardware resources same as host so certian apps will run better with direct access to hardware as opposed to accessing it through a hypervised layer.

 

however from what ive read in other post the issue seems to be that unraid OS only runs docker in a 64 bit architecture. since steamcmd only runs as a 32 bit process there is some compatability missing. dont know if its from arch or unraid but apperantly any steamcmd docker containers will probably not work. Ive only tried the Rust container but further research indicates its only choice is to run a linux VM anyway.

 

If anyone can help bridge the gap there are a lot of other users trying to run steamcmd as a docker container as direct host access to hardware makes a bit of a difference when running a game server.

Link to comment

I'm also having an issue with getting this up and running, hopefully my reading into the issue lead me to the wrong conclusion.

/steamcmd/steamcmd.sh: line 29: /steamcmd/linux32/steamcmd: cannot execute binary file: Exec format error

Either I'm gonna be stuck with running it on a vm, or I'm doing something stupid here. Any help is appreciated, thanks!

Edited by Server1Alpha
Link to comment
  • 5 weeks later...

I am having the same problem trying to create an Ark dedicated server docker.  The stupid steamcmd and I assume steam is compiled for 32 bit and for some reason valve will not make a 64 bit solution, at least I cannot find one.  All the post say install the 32 bit libraries and it will run.  Well this is true if you are running a 64 bit virtual machine because the kernel has 32 bit support enabled.  The appropriate solution is for steam to release a 64 bit version of the software but I guess they are too lazy to do so.  Based on what I have read, the unRaid 6.3 linux kernel does not have 32 bit support enabled.  I have to assume there is a good reason for this but it would be nice to be able to enable 32 bit support using a module if it is needed.

 

Can 32 bit support be enabled without causing a problem with the unRaid OS so we can run 32 bit dockers like steam?  

 

Can we load a module into the kernel to enable 32bit support or does the kernel have to be recompiled?

 

Thanks in advance, looking forward to unRaid 6.4.

Edited by csmccarron
Link to comment
14 hours ago, csmccarron said:

Can 32 bit support be enabled without causing a problem with the unRaid OS

 

No, that's not possible. Support of 32-bit involves more than just enabling it. At the time of V6 development it was explicitely decided to do 64-bit only, a very wise decision to do.

 

Edited by bonienl
Link to comment

Well that sucks!  Like I stated earlier, I am just looking for a way to let a docker run a 32 bit program.  I know, that no one should be releasing 32 bit programs but the fact is that they exist and it would be nice to have a way to let the docker execute a 32 bit program without unRaid having to load all the 32 bit libraries.

 

Frustrated with Valve, because I should not have to be asking this question in the first place!

 

Thanks for the response

Link to comment

Already running it in an ubuntu VM, was trying to free up some resources and the docker is the perfect solution.  I would rather run things like this in a docker from the unRaid web interface then fire up a VM everytime I need to execute 1 32 bit command.  The only thing keeping this from working is the stupid 32 bit steamcmd.  The server that I want to run is compiled for 64 bits but you need steamcmd to install and update the damn thing.  Like I said it is extremely frustrating and I see that I am not the only one running up on this unRaid 32 bit docker limitation.

Link to comment
  • 2 months later...
  • 5 months later...

THIS NOW WORKS!! :)

 

As of at least unraid 6.4 (maybe earlier) it seems the support needed to run 32bit docker containers has been added. it looks like perhaps csmccarron has been pretty active in testing different configs but now its enabled by default on the stable branch. They even added in the ability to attached you dockers directly to a bridged interface like a vlan in my DMZ. THANK YOU LIME TECH!!!!

 

I made my rust template almost exactly as the original poster except you can't just list all your env variables in a file as you would on a normal docker server. Each env variable needs to be added individually to the web interface. you can save the work for future servers by just saving it as a template. The first few time testing I didn't do this and wasted some time.

 

I did not use the port 8080 as the facepunch webgui is the default now and what i like to use and it loads through the rcon port.

 

I used this site for reference but I also found a tutorial that recommended to only allocate 16GB of ram to the unity engine that runs rust. add "-m 16" to the startup arguments. i guess depending on how beefy you spec your server maybe you want to run hundreds of players. maybe at that point 16GB wouldnt be enough. YMMV

 

 

Edited by HMan_Thunder
Link to comment
  • 6 months later...
  • 4 weeks later...

Thank you for making me aware of this issue.  I will be checking out this issue. 

 

I do apologize for the inconvenience of this and this will be resolved ASAP and there will be a new update to hopefully fix the issue. 

 

You can visit my github page to submit future issues and ideas since I monitor that area more often then here. 

https://github.com/mdarkness1988/Rust-Server/issues

Link to comment
  • 4 months later...
On 9/25/2018 at 7:20 PM, Mdarkness1988 said:

This issue has now been resolved. 

Please check for the latest update to get the oxide fix. 

 

Hope this works out for you and if you can give me feedback that will be great. 

 

@Mdarkness1988 Running into an issue on server startup I believe:

 

[2.0s] Finalizing World
Starting Navmesh Source Collecting.
Starting Navmesh Source Collecting.
2/17/2019 9:59:02 AM|Fatal|WebSocket.processException|WebSocketSharp.WebSocketException: The header part of a frame cannot be read from the data source.
at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x00017] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.WebSocketFrame+<>c__DisplayClassa.<readHeaderAsync>b__9 (System.Byte[] bytes) [0x00000] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.Ext+<>c__DisplayClass9.<ReadBytesAsync>b__8 (System.IAsyncResult ar) [0x0004e] in <e43fdf6d91f44d8ea7f975577024882c>:0
2/17/2019 9:59:02 AM|Fatal|WebSocket.processException|WebSocketSharp.WebSocketException: The header part of a frame cannot be read from the data source.
at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x00017] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.WebSocketFrame+<>c__DisplayClassa.<readHeaderAsync>b__9 (System.Byte[] bytes) [0x00000] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.Ext+<>c__DisplayClass9.<ReadBytesAsync>b__8 (System.IAsyncResult ar) [0x0004e] in <e43fdf6d91f44d8ea7f975577024882c>:0
Rcon Error: WebSocketSharp.WebSocketException: The header part of a frame cannot be read from the data source.

at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x00017] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.WebSocketFrame+<>c__DisplayClassa.<readHeaderAsync>b__9 (System.Byte[] bytes) [0x00000] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.Ext+<>c__DisplayClass9.<ReadBytesAsync>b__8 (System.IAsyncResult ar) [0x0004e] in <e43fdf6d91f44d8ea7f975577024882c>:0
An exception has occurred while receiving a message.
Rcon Error: WebSocketSharp.WebSocketException: The header part of a frame cannot be read from the data source.

at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x00017] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.WebSocketFrame+<>c__DisplayClassa.<readHeaderAsync>b__9 (System.Byte[] bytes) [0x00000] in <e43fdf6d91f44d8ea7f975577024882c>:0
at WebSocketSharp.Ext+<>c__DisplayClass9.<ReadBytesAsync>b__8 (System.IAsyncResult ar) [0x0004e] in <e43fdf6d91f44d8ea7f975577024882c>:0
An exception has occurred while receiving a message.

Any idea what I'm doing wrong or what could be the issue?

Edited by seventhaxis
Link to comment
9 minutes ago, Mdarkness1988 said:

Hi. Thanks for letting me know.

 

From top of my head it looks like a port might be conflicting...

If this effect the server to start?

Please take a screenshot of the template settings and the drop-down that shows the other templates ports being used.

 

Thanks

Dude, holy crap thanks for the prompt response!

129903914_ScreenShot2019-02-17at10_26_31AM.thumb.png.d6b8f78f11191ac4951ca54bf9fcbc56.png

 

Screen Shot 2019-02-17 at 10.26.40 AM.png

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.