[DS Linux] Having issues to load that goddamn steamclient.so

Soooo. I’ve been working on a TU DS docker container for a while and I’m stuck with this error message:
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: wrong ELF class: ELFCLASS32
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.

Take a look at my Dockerfile and the included script and please tell me what I’m doing wrong. https://github.com/Zennoe/docker-gameservers/tree/testing/tower-unite
This repo is automatically build and updated at https://hub.docker.com/r/zennoe/tower-unite/. It is based on my own SteamCMD container that works perfectly fine with Gmod and TF2 servers. The image is based on Ubuntu 14.04. Use the testing branch to pull the newest changes. The latest branch will remain empty until the container works.

Trying to copy the steamclient.so from a linux64 directory has resulted in cp: cannot stat ‘/opt/steamcmd/linux64/*’: No such file or directory. Hence I use the linux32 directory.
My SteamCMD image also ensures that the following packages are installed lib32gcc1 lib32stdc++6 gdb ca-certificates net-tools lib32z1 lib32z1-dev curl

I summon you, @Caboose700 the Linux God!

1 Like

our father,

who codes in heaven,

Tower Unite be thy game.

development begun,

them credits be won,

Casino,

and not an optimization update.

give us this day,
a worthy dev leak,

and forgive us,

when we get impatient.

as we forgive those
who do not know the definition of “Early Access”,

and lead us not
into wanting the game being done now,

deliverus,
a response…

@Caboose700.

5 Likes

Hey @scratch! Do you have any ideas on how to solve this?

You need to use steamcmd to run it.

… what is that supposed to mean? Are you suggesting to launch SteamCMD, login as anonymous and that solves it or what?

SteamCMD has a command to launch games. If the server is free/doesn’t require the game, anon will work.

Please show me where it is: https://developer.valvesoftware.com/wiki/SteamCMD

o derp

Linux: Copy linux64/steamclient.so into towerunite/Tower/Binaries/Linux

Dear @william341,

I’d really apreciate it if you were to read my initial post before replying to my topic. If you did that then you would have realised that I’m already doing that step:

In addition take a look at my Docker Container which I also mentioned in my initial post: https://github.com/Zennoe/docker-gameservers/blob/testing/tower-unite/docker-entrypoint.sh

After installing TU I copy the mentioned file into the correct directory. But because that didn’t help I then opened this topic. So that’s why I’m looking for help. If you’d like to take a look yourself, make sure that https://www.docker.com/ is installed on your PC and then run the following commands:

chmod 777 /path/where/you/want/to/install/tu
docker pull zennoe/tower-unite:testing
docker run -d --name tuserver -v //path/where/you/want/to/install/tu:/opt/tu -p 27015:27015/udp -p 27015:27015/tcp -p 7777:7777/udp -p 7778:7778/udp -p 3478/udp -p 4379/udp -p 4380/udp -e TU_PORT=7777 -e QUERY_PORT=27015 zennoe/tower-unite:testing

Moving this to Bug Reports, if you don’t mind.

Not sure if you would consider it a bug report if I simply don’t manage to set up a server. But as long as a dev posts here I’m satisfied.

This doesn’t appear to be a bug report, as it seems to be an installation issue with this user installing it on docker.

I have no experience with docker, nor installing the server on docker, so I’m limited in how I can help.

Nah trust me it’s easy to use. Just install Docker using this:

$sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ sudo apt-cache policy docker-engine
$ sudo apt-get install -y docker-engine

And then run the following commands:

mkdir /mnt/docker/tu
chmod 777 /mnt/docker/tu
docker pull zennoe/tower-unite:testing
docker run -d --name tuserver -v /mnt/docker/tu:/opt/tu -p 27015:27015/udp -p 27015:27015/tcp -p 7777:7777/udp -p 7778:7778/udp -p 3478/udp -p 4379/udp -p 4380/udp zennoe/tower-unite:testing

Then SteamCMD will download the TU server and launch it using this bash script:
(if you can find the error just by looking at this script. that’s ok too)

You can check the container’s output using docker logs -f tuserver
All the important information about which packages I installed should be listed in my initial post.

We are not able to help with installation of the dedicated server other than the written guide we have posted on Steam community.

Ok. But the output just doesn’t help me at all. Maybe if you guys now any dependencies that could be missing…

What’s really weird is that the tutorial wants me to copy the steamclient.so from a linux64 folder inside the SteamCMD folder but there is only a Linux32 folder. So I copy the file from there. Dunno if that causes the issue as the Steam’s error message is quite cryptic.

you installed the 32 bit version of steam cmd?
or maybe its a 32bit server?

I’ve messed with docker a fair bit, but I’m a bit busy atm and can’t give it a shot (yet, I’ll see what I can do in a bit though).

Looks like it might indeed be an issue with 32 vs 64 versions of that lib though. Are you sure the base ubuntu image is for x64? As with steamcmd? I’ll experiment when I can, might be a bit of fiddling.

1 Like

It is. I use the official image which is based on the 64bit version of Ubuntu 14.04. I also ran uname -a just to make sure.

While comparing the container with your tutorial I realised that the URL I download SteamCMD from is different. But I compared the tars and both files are identical.

What I probably didn’t mention is that I change the Query Port and hence my run command looks like this:

docker run -d --name tuserver -v /mnt/docker/tu:/opt/tu -p 27030:27030/udp -p 27030:27030/tcp -p 7777:7777/udp -p 7778:7778/udp -p 3478/udp -p 4379/udp -p 4380/udp -e QUERY_PORT=27030 zennoe/tower-unite:testing

UPDATE

I tried a few more things today but the same error message still remained:

  • added a few more libraries: gcc libstdc++6 zlib1g zlibc
  • switched from Ubuntu 14.04 to 16.04 (however that shouldn’t really matter)
  • checked for alternative steamclient.so files… haven’t found any
  • replaced the steamclient.so from SteamCMD with my own from a local Steam installation (path ~/.steam/sdk64)

But I’m still stuck with the same error as seen in my initial post.