Working dedicated server on Debian 8.6 x64



  • Got it working on Debian x64. I want to share my scripts how I did it, it is like @coteyr said here but more detailed.

    ## Set up dedicated screeps server.
    # Tested only on Debian 8.6 x64 with 512mb.

    ## Dependencies
    # To install steam, see https://wiki.debian.org/Steam
    sudo apt-get install unzip git build-essential


    ## Setup node
    # Probably not the simplest way but it works.
    # Remove everything related to node, so that `node`, `nodejs`, `npm`, `n` or `node-gyp` is not found.
    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
    sudo aptitude install -y nodejs
    sudo npm install npm@latest -g
    sudo npm install node-gyp@latest -g
    node -v # v6.9.1
    npm -v # 3.10.9
    node-gyp -v # v3.4.0


    ## Create user who will run server
    adduser screeps
    sudo su screeps
    # get ~/steamworks_sdk_137.zip from your steam developer account. It has to be v1.37!

    ## Set variables
    STEAM_USER=
    BETA_INVITE_CODE=


    ## Setup greenworks
    cd ~
    git clone https://github.com/greenheartgames/greenworks.git
    cd greenworks/deps/
        unzip ~/steamworks_sdk_137.zip
        mv sdk steamworks_sdk
      cd ..
      npm install # if errors, do you have correct version of node and SDK?


    ## Setup steamcmd
    wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
    rm -rf steamcmd
    mkdir ~/steamcmd
    cd ~/steamcmd
      tar -xvzf ../steamcmd_linux.tar.gz


    ## Setup screeps for first time. It will ask password and always slows for 5-15min in the middle of download.
    ~/steamcmd/steamcmd.sh +force_install_dir ~/screeps +login $STEAM_USER +app_update 464350 -beta Server -betapassword $BETA_INVITE_CODE validate +exit


    ## Setup config: add steam_api_key from https://steamcommunity.com/dev/apikey
    cd ~/screeps/server/
    nano .screepsrc


    ## Setup launch scripts.
    echo '#!/bin/bash
    cd ~/steamcmd/
    ./steamcmd.sh +force_install_dir ~/screeps +login '$STEAM_USER' +app_update 464350 -beta Server -betapassword '$BETA_INVITE_CODE' validate +exit
    cd ~/screeps/server
    cp ~/greenworks/build/Release/greenworks-linux64.node ~/screeps/server/modules/backend/greenworks/lib/greenworks-linux64.node
    for M in modules/*/
    do
    pushd $M
    rm node_modules -Rf
    npm install
    npm build
    popd
    done
    pushd modules/driver/native/
    node-gyp configure
    node-gyp build
    popd
    rm logs/* -Rf
    node modules/launcher/bin/screeps.js start' > ~/rebuild_server.sh
    chmod +x ~/rebuild_server.sh

    echo '#!/bin/bash
    cd ~/screeps/server
    node modules/launcher/bin/screeps.js start' > ~/launch_server.sh
    chmod +x ~/launch_server.sh


    ## Start server!
    ~/rebuild_server.sh
    # ~/launch_server.sh


  • Nice, will try this to recreate it on RaspberryPi. Thanks for posting

    update1: Raspbian doesnt support steam's architecture, retry with just debian.



  • I got this working on Raspberry Pi 3, woo!
    I had to modify backend/lib/game/server.js and backend/lib/game/api/auth.js to comment out the greenworks API calls.

    backend/lib/game/server.js:

    // try {
    // if(!greenworks.isSteamRunning()) {
    // throw new Error('Steam is not running');
    // }
    // if(!greenworks.initAPI()) {
    // throw new Error('greenworks.initAPI() failure');
    // }
    // console.log("Connected to local Steam client, using native authentication");
    // useNativeAuth = true;
    // }
    // catch(e) {
    // console.log("Connecting to local Steam client failed:", e.message);

    // Need these lines to use Steam Web API
    console.log("Using Steam Web API authentication instead");
    if (!process.env.STEAM_KEY) {
    throw new Error('STEAM_KEY environment variable is not set!');
    }
    useNativeAuth = false;
    // }

    backend/lib/game/api/auth.js:

    if(request.body.useNativeAuth) {
    if(!useNativeAuth) {
    return q.reject('authentication method is not supported');
    }
    // Removed greenworks auth stuff... do we need to do something else?
    }

     

    ...but now all my rooms are red and I can't choose a spawn... possibly because I can't set a password?