To subscribe to updates watch my GitHub repository. New posts get added as pull requests.

2020 Playing Rust on Linux (Facepunch game)

12 Jul 2020

TL;DR Summary

  • I will occasionally update this post over time.
  • You can run the dedicated server and Rust client on the same computer for local play using SteamPlay on Linux.
  • The dedicated server must have EAC disabled.
  • You must connect to the server from the Rust client by pressing F1 key and using client.connect <ip address>:28015.

This guide was last tested with the Modular Vehicles Update (July 2, 2020). I do not have Sunburn DLC.


Warning 1: Disable NPCs because it will crash when one dies. This appears to affect the dedicated server when being run with proton.


Warning 2: Putting your local server on the Internet is not recommended with EAC disabled (anti-cheat). This is the only way rust can be played with Linux.

Playing multiplayer

There’s plenty of multiplayer servers available if you want to play with other people.

My favorite server is Rust Deadlock. You can access it quickly by binding the following command to F6 key.

bind f6 "client.connect play.deadlock.com:1333"

Or you can bookmark this link and open it in your browser. Or you can run the following shell alias for the deadlock command to connect.

alias deadlock='xdg-open steam://connect/play.deadlock.com:1333'

Background

Ever since Facepunch stopped supporting their Linux client, I’ve been hungry to play. I’m one of the few people who played on Linux, enjoyed the game, and didn’t get a refund.

I regularly browse ProtonDB for Rust in the hopes that a Rust update gets a platinum rating with EAC working for online multiplayer with Windows and Mac players. However, until then I noticed people were rating that gameplay works with EAC disabled.

I had an itch to scratch for playing Rust and this is my solution.

My system specs

  • OS: Ubuntu 18.04.4 LTS
  • Hardware that’s relevant for Rust and Linux:
    • Intel Core i7
    • 32GB RAM
    • ASRock Radeon RX 5700 XT (AMD GPU)
    • SSD hard drive

Audience

I’m going to assume you know your way around Linux and the Terminal. For now, it’s late and I just got this working. I may expand this post over time to be more beginner friendly. For now, this “guide” is for more advanced users.

Installing Rust and dedicated server

Install Steam, SteamCMD (sudo apt-get install steamcmd), and enable SteamPlay for all games.

Install Rust for Windows from Steam normally; on my computer it ends up in the following install locaion.

~/.local/share/Steam/steamapps/common/Rust

Install Rust Dedicated Server for Windows. Run steamcmd and enter the following commands.

@sSteamCmdForcePlatformType windows
login anonymous
app_update 258550 validate
quit

The dedicated server ends up in the following location by default. All following instructions assume defaults.

~/.local/share/Steam/steamapps/common/rust_dedicated

Determine your Proton version

Open Rust and let it sit on the main menu. Alt+tab away and open a terminal to inspect all Rust processes.

ps aux | grep Rust.exe

It should return output similar to the following.

user      25989  0.0  0.0  63632 24768 tty2     S+   20:42   0:00 /bin/sh -c '/home/user/.local/share/Steam/steamapps/common/Proton 5.0'/proton waitforexitandrun '/home/user/.local/share/Steam/steamapps/common/Rust/Rust.exe' -logfile "output_log.txt"
user      25990  0.0  0.0  90504 16472 tty2     S+   20:42   0:00 python3 /home/user/.local/share/Steam/steamapps/common/Proton 5.0/proton waitforexitandrun /home/user/.local/share/Steam/steamapps/common/Rust/Rust.exe -logfile output_log.txt
user      25997  0.0  0.0 1818696 19924 tty2    Sl+  20:42   0:00 steam /home/user/.local/share/Steam/steamapps/common/Rust/Rust.exe -logfile output_log.txt

I noticed that I’m running Proton 5.0. The command for how Rust is launched is important for later. Take note the following.

/home/user/.local/share/Steam/steamapps/common/Proton 5.0/proton waitforexitandrun /home/user/.local/share/Steam/steamapps/common/Rust/Rust.exe -logfile output_log.txt

Launching dedicated server

The following is a script for launching the dedicated server. Please note, this script uses the same Proton version as Rust determined previously.

Create a script in the directory of your choice named rust_ds.sh with the following contents. The server output_log.txt and rcon_pass (password for remote console administration) will also show up in the directory.

#!/bin/bash
# Launches Rust Dedicated Server for Windows on Linux
# Usage:
#   ./rust_ds.sh

set -e

# List your proton versions with
#     ls -1d ~/.local/share/Steam/steamapps/common/Proton*
PROTON_VERSION='Proton 5.0'

# generate a random password from /dev/urandom
function rand_password() {
  tr -dc -- '-.~,<>[]{}@%()_+=0-9a-zA-Z' < /dev/urandom | head -c16;echo
}

STEAM_COMPAT_DATA_PATH="$HOME"/.local/share/Steam/steamapps/compatdata/258550
STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME"/.local/share/Steam
export STEAM_COMPAT_DATA_PATH STEAM_COMPAT_CLIENT_INSTALL_PATH

RUST_SERVER_DIR=~/.local/share/Steam/steamapps/common/rust_dedicated
SCRIPT_DIR="${PWD}"

mkdir -p "${STEAM_COMPAT_DATA_PATH}"

if [ ! -f rcon_pass ]; then
  touch rcon_pass
  chmod 600 rcon_pass
  rand_password > rcon_pass
fi

cd "${RUST_SERVER_DIR}"

~/.local/share/Steam/steamapps/common/"${PROTON_VERSION}"/proton \
  waitforexitandrun \
  "${RUST_SERVER_DIR}"/RustDedicated.exe \
    -batchmode -logfile "${SCRIPT_DIR}"/output_log.txt \
    +server.secure 0 +server.encryption 0 +server.eac 0 \
    +rcon.web 1 +rcon.port 28016 \
    +rcon.password "$(< "${SCRIPT_DIR}"/rcon_pass)"

The important part from above are the Rust options for disabling EAC.

  • +server.secure 0
  • +server.encryption 0
  • +server.eac 0

Play Rust

Rust will crash if you attempt to browse the server list. So do not click “Play”. Instead, do the following.

  1. Press F1 to open command menu.
  2. Type in client.connect 127.0.0.1:28015.

Admin your server

In the directory where rust_ds.sh script is located you’ll find the rcon_pass file. This contains the password used for remote console administration (RCON).

Visit the Facepunch web-based websockets client you can use locally for connecting to your server.

Log in to your server:

  • Address: 127.0.0.1:28016
  • Password: found in rcon_pass file.

Here’s some helpful administration guides.

And more links

Initial server setup

I like running the following commands when playing solo.

heli.bulletdamagescale 0.1
hackablelockedcrate.decayseconds 72000
minicopter.population 3
minicopter.insidedecayminutes 54000
server.updatebatch 256
server.pve true
server.description "Sams Linux Server"
aimanager.ai_dormant false
ownerid [steam 64bit id] [steam username] owner
server.writecfg

You can get your own steam 64bit id by looking at the user list in RCON.

Heavy grenade kit

Just for goofing off I decided to make myself OP and hit a bunch of NPCs with it. A full heavy kit with buckshot and high explosive 40mm grenade launchers.

inventory.giveall multiplegrenadelauncher 1
inventory.giveall multiplegrenadelauncher 1
inventory.giveall syringe.medical 100
inventory.giveall largemedkit 500
inventory.giveall ammo.grenadelauncher.he 1000
inventory.giveall ammo.grenadelauncher.buckshot 1000
inventory.giveall heavy.plate.helmet 1
inventory.giveall heavy.plate.jacket 1
inventory.giveall heavy.plate.pants 1
inventory.giveall shoes.boots 1
inventory.giveall weapon.mod.flashlight 2
inventory.giveall weapon.mod.holosight 2

Other

inventory.giveall tactical.gloves 1

Shortcuts

I’m a pretty casual player with work-life to balance. Expect to see more updates on how to mod it on Linux for higher spawn rates, 10x resouces, increased stacks, etc. This is the first time I’ve opened a Rust dedicated server so I’m new to all of this.

Here are some quality of life key bindings I enjoy as a player.

bind b backpack.open
bind z forward;sprint
bind c duck

# Disable autodoor from closing when holding F2 (+ means hold)
bind f2 "+chat.say /ad;+use"

# Toggles remove tool with "DELETE" key
bind delete "chat.say /remove"

Here are some useful Server Admin only aliases.

bind l global.teleport2marker

I also went into options and reversed the shortcut for Hover Loot (H) and Change Vehicle Seat (X) because I collect loot a lot more than I switch seats.


This article was last updated Jul 20, 2020.

Posted in Gaming with tags: Gaming, Gaming


Comments: