1. Hi guys,

    in the last days, i tried to setup my own server. I went through some ups and downs but finally got it running.

    Now i want to share my experience, so that you can get your own server up and running (hopefully) without any further trouble.

    I want to apologize for my bad english (my main language is german).

    But let's get started:

    Requirements:
    - A server running CentOS (but the tutorial might be easily adaptable for Ubuntu/Debian etc. -> You might want to contact me when you run into problems)
    - Basic knowledge about the linux-shell (used: bash, but should work with any other shell)

    At first we need to install some dependencies and setup a user with whom we install the steamcmd.
    If you're not sure which architecture you have, type in 'uname -m' (x86_64 = 64-bit; other = 32-bit).
    Code:
    # 32-bit RH/CentOS
    yum install glibc libstdc++
    # 64-bit RH/CentOS
    yum install glibc.i686 libstdc++.i686# setup the user (you must be root or use sudo to execute these commands)
    useradd -m steam
    # switching to the steam user
    su - steam
    

    Now we need to install the steamcmd.
    Code:
    # create a directory for the steamcmd
    mkdir ~/steamcmd
    # change to the directory
    cd ~/steamcmd# download the steamcmd
    wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
    # extract it
    tar -xvzf steamcmd_linux.tar.gz
    
    The next step is to create a file named install.txt in which we write our installation-script.
    So run 'nano install.txt' (or use any other editor you're familiar with) and paste the following code:
    Code:
    @ShutdownOnFailedCommand 1
    @NoPromptForPassword 1
    login anonymous
    force_install_dir ./hurtworld
    app_update 405100 validate
    quit
    
    Run the installation script:
    Code:
    ./steamcmd.sh +runscript install.txt
    
    We're nearly done.
    One thing you might need to do at the moment (Bug - 24.12.2015) is to copy the steamclient.so files to the right place:
    Code:
    # change directory to the hurtworld folder
    cd hurtworld
    # copy 64-bit steamclient.so
    cp ./linux64/steamclient.so  ./Hurtworld_Data/Plugins/x86_64/steamclient.so
    # copy 32-bit steamclient.so
    cp ./steamclient.so ./Hurtworld_Data/Plugins/x86/steamclient.so
    
    After this step you should be able to start your own server.
    There are two ways in doing this:

    1. (Quick&Dirty method)
    Run:
    Code:
    # Note: Change the file extension for either 64-bit (Hurtworld.x86_64) or 32-bit (Hurtworld.x86)
    ./Hurtworld.x86_64 -batchmode -nographics -exec "host 12871;queryport 12881;servername PUT YOUR SERVERNAME IN HERE;maxplayers 50;addadmin YOURSTEAMID" -logfile "gamelog.txt"
    
    2. (Nicer method)
    Create a bash-script named 'start.sh' with which you're starting a tmux session.
    (You might want to install tmux with 'yum install tmux' before running the script)
    Code:
    #!/bin/bash
    tmux new -d -s hurtworld '
    ./Hurtworld.x86_64 -batchmode \
        -nographics \
        -exec "host 12871;queryport 12881;servername PUT YOUR SERVERNAME IN HERE;maxplayers 50;addadmin YOURSTEAMID" \
        -logfile "gamelog.txt"
    '
    tmux detach -s hurtworld
    
    Make the script executable and run it:
    Code:
    chmod +x start.sh
    ./start.sh
    
    Now your server should be up and running.
    Your logfile can be found in '~/steamcmd/hurtworld/gamelog.txt'.
    If you're having problems first take a look in that file :)
    Code:
    cat gamelog.txt
    

    Note:
    If you're having trouble to reach your server, you might need to open the ports:
    Code:
    # YOU MUST BE ROOT TO RUN THESE COMMANDS
    firewall-cmd --zone=public --add-port=12881/udp --permanent
    firewall-cmd --zone=public --add-port=12871/udp --permanent
    firewall-cmd --reload
    
    I hope i was able to help someone. If you're having trouble or if you have extensions for this tutorial, let me know :)

    PS: If there is enough demand for an Ubuntu/Debian tutorial, just contact me and i might want to update it.

    So far, Merry Christmas and have fun playing hurtworld!

    MrNobodyGER
     
    Last edited by a moderator: Dec 24, 2015
  2. so, you centos vesion is ?
     
  3. I used CentOS 7, but it should work with CentOS 6 too (except opening the ports..in CentOS 6 you need to open them with iptables instead of the firewall-cmd command).
     
  4. I know that, but I start the server, it display GLIBC2_15 not found, can you help me solve that?My system is CentOS6
     
  5. Do you try to install it on 64 or 32-bit CentOS? Could you post the error-message?
    It seems like CentOS 6 isn't really up to date in consideration of glibc..so there's not much hope :/
     
  6. Hey gus, I run the server in the Centos7 is successed,but it have a problem,the gamelog display "SteamServerConnectFailure: k_EResultNoConnection",when I open the port, it display firewallD is not running, I guess the trouble is the firewall, but I don't know how to solve it !
     
  7. Try running
    Code:
    systemctl start firewalld
    
    And try to open the ports again.
     
  8. Hey guys, I just stop the firewall, and it also connecfailure, this is my gamelog, could you read it?
    [DOUBLEPOST=1451052139][/DOUBLEPOST]and this is the new log
     

    Attached Files:

  9. Ok, here are some points to consider:

    1. Disable ALL firewalls on your system (iptables and firewalld - depending on what's available)
    2. Did you copy the steamclient.so files in the right directory? -> Pay attention with 64 and 32 Bit
    3. Try running the server in the other architecture..so if you used Hurtworld.x86_64, try running Hurtworld.x86 instead.
    4. Try this: SteamCMD - Valve Developer Community

    Are you running it in a home-network or did you rent a server? (In home networks, you're likely to have additional firewalls in routers etc.)
     
  10. 1.I disable all the firewalls on my system
    2.I'm sure I copy the steamclient.so files in the reight directory, just you say in the before
    3.run the outher architecture, but it also [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
    4.I can not understand how to do it, my system is not /.steam/sdk32 this directory

    And I have rent a VPS, it is not the PC, my IDC said the network is OK
    [DOUBLEPOST=1451055401][/DOUBLEPOST]If you have a time, can you help me? I can tell you the usernanme and password about my VPS, THX very much!!

    My gmail is [email protected]
    You can sent an e-mail to me
     
    Last edited by a moderator: Dec 25, 2015
  11. CentOS6
    x86_64 version `GLIBCXX_3.4.15' not found (required by ./Hurtworld.x86_64)
    x86 version `GLIBC_2.15' not found (required by ./Hurtworld.x86)
     
  12. wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz

    I think only x86 version be worked now .
     
  13. i make this

    Code:
    wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz 
    wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz 
    tar -xvf glibc-2.15.tar.gz 
    tar -xvf glibc-ports-2.15.tar.gz 
    mv glibc-ports-2.15 glibc-2.15/ports 
    mkdir glibc-build-2.15 
    cd glibc-build-2.15 
    ../glibc-2.15/configure --prefix=/usr CC='gcc -U__i686'
    make
    make install三、start game server
    ./Hurtworld.x86 -batchmode -nographics -exec "host 12871;queryport 12881;servername <color=#FF0000>all of world</color> HurtWorld;addadmin steamid" -logfile "gamelog.txt"
    and have start error
    ./Hurtworld.x86: /lib/libc.so.6: version `GLIBC_2.15' not found (required by ./Hurtworld.x86)
    ./Hurtworld.x86: /lib/libm.so.6: version `GLIBC_2.15' not found (required by ./Hurtworld.x86)

    now i don't know what i need do, i try
    cp /home/steam/steamcmd/glibc-build-2.15/libc.so.6 /lib/
    and have start error
    ./Hurtworld.x86: error while loading shared libraries: libc.so.6: wrong ELF class: ELFCLASS64
     
  14. How about this ?

    yum install glibc.i686
     
  15. upload_2015-12-26_15-11-37.png
     
  16. Code:
    [root@CentOS-60-64-ISPLite hurtworld]# yum -y remove glibc.i686
    Loaded plugins: fastestmirror
    Setting up Remove Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package glibc.i686 0:2.12-1.166.el6_7.3 will be erased
    --> Processing Dependency: ld-linux.so.2 for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: ld-linux.so.2(GLIBC_2.3) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6 for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6 for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.0) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.0) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.1) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.1) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.1.3) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.1.3) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.2) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.3) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.3) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.3.2) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.3.4) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.4) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.4) for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libc.so.6(GLIBC_2.7) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libdl.so.2 for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libdl.so.2(GLIBC_2.0) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libdl.so.2(GLIBC_2.1) for package: nss-softokn-freebl-3.14.3-22.el6_6.i686
    --> Processing Dependency: libm.so.6 for package: libstdc++-4.4.7-16.el6.i686
    --> Processing Dependency: libm.so.6(GLIBC_2.0) for package: libstdc++-4.4.7-16.el6.i686
    --> Running transaction check
    ---> Package libstdc++.i686 0:4.4.7-16.el6 will be erased
    ---> Package nss-softokn-freebl.i686 0:3.14.3-22.el6_6 will be erased
    --> Finished Dependency ResolutionDependencies Resolved================================================================================
     Package  Arch  Version  Repository  Size
    ================================================================================
    Removing:
     glibc  i686  2.12-1.166.el6_7.3  @updates  13 M
    Removing for dependencies:
     libstdc++  i686  4.4.7-16.el6  @base  908 k
     nss-softokn-freebl  i686  3.14.3-22.el6_6  @updates  381 kTransaction Summary
    ================================================================================
    Remove  3 Package(s)Installed size: 14 M
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Erasing  : libstdc++-4.4.7-16.el6.i686  1/3
      Erasing  : nss-softokn-freebl-3.14.3-22.el6_6.i686  2/3
      Erasing  : glibc-2.12-1.166.el6_7.3.i686  3/3Removed:
      glibc.i686 0:2.12-1.166.el6_7.3Dependency Removed:
      libstdc++.i686 0:4.4.7-16.el6  nss-softokn-freebl.i686 0:3.14.3-22.el6_6Complete!
    [root@CentOS-60-64-ISPLite hurtworld]# yum install glibc.i686
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirror.checkdomain.de
     * extras: mirror.checkdomain.de
     * remi: mirror5.layerjet.com
     * remi-safe: mirror5.layerjet.com
     * rpmforge: mirror1.hs-esslingen.de
     * updates: mirror.checkdomain.de
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package glibc.i686 0:2.12-1.166.el6_7.3 will be installed
    --> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.12-1.166.el6_7.3.i686
    --> Processing Dependency: libfreebl3.so for package: glibc-2.12-1.166.el6_7.3.i686
    --> Running transaction check
    ---> Package nss-softokn-freebl.x86_64 0:3.14.3-22.el6_6 will be updated
    ---> Package nss-softokn-freebl.i686 0:3.14.3-23.el6_7 will be installed
    ---> Package nss-softokn-freebl.x86_64 0:3.14.3-23.el6_7 will be an update
    --> Finished Dependency ResolutionDependencies Resolved================================================================================
     Package  Arch  Version  Repository  Size
    ================================================================================
    Installing:
     glibc  i686  2.12-1.166.el6_7.3  updates  4.3 M
    Installing for dependencies:
     nss-softokn-freebl  i686  3.14.3-23.el6_7  updates  157 k
    Updating for dependencies:
     nss-softokn-freebl  x86_64  3.14.3-23.el6_7  updates  167 kTransaction Summary
    ================================================================================
    Install  2 Package(s)
    Upgrade  1 Package(s)Total download size: 4.7 M
    Is this ok [y/N]:

    2.12
     
  17. after make; make install i have
    -bash: ./Hurtworld.x86: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

    if yum install glibc.i686
    installed 2.12 and i have
    [root@CentOS-60-64-ISPLite hurtworld]# ./Hurtworld.x86 -batchmode -nographics -exec "host 12871;queryport 12881;servername PUT YOUR SERVERNAME IN HERE;maxplayers 50;addadmin YOURSTEAMID" -logfile "gamelog.txt"
    ./Hurtworld.x86: /lib/libc.so.6: version `GLIBC_2.15' not found (required by ./Hurtworld.x86)
    ./Hurtworld.x86: /lib/libm.so.6: version `GLIBC_2.15' not found (required by ./Hurtworld.x86)
     
  18. Perhaps CentOS7 is not this error