Skip to content

Instantly share code, notes, and snippets.

@oshinko
Created January 27, 2021 04:09
Show Gist options
  • Save oshinko/6b5b639f2dfced977e582f209e2133a8 to your computer and use it in GitHub Desktop.
Save oshinko/6b5b639f2dfced977e582f209e2133a8 to your computer and use it in GitHub Desktop.
Install Rust Server on Linux
########################################################################
# Host your own Rust Dedicated Server
#
# see also: https://www.rustafied.com/how-to-host-your-own-rust-server
#
# Usage:
# RUST_HOME=$HOME/rust \
# RUST_SERVER_MAXPLAYERS=100 \
# RUST_SERVER_HOSTNAME="Your Rust Server" \
# RUST_SERVER_IDENTITY=your-rust-server \
# RUST_SERVER_TICKRATE=10 \
# RUST_SERVER_DESCRIPTION="Your Rust Server description" \
# RUST_SERVER_HEADERIMAGE=https://your-host/512x256.png \
# RUST_SERVER_URL=https://discord.gg/your-server-info-url \
# install-rust-server.sh
########################################################################
if [ -z "$RUST_HOME" ]; then
echo 'requires $RUST_HOME'
exit 1
fi
if [ -z "$RUST_RCON_PASSWORD" ]; then
echo 'requires $RUST_RCON_PASSWORD'
exit 1
fi
if [ -z "$RUST_SERVER_MAXPLAYERS" ]; then
RUST_SERVER_TICKRATE=50
fi
if [ -z "$RUST_SERVER_HOSTNAME" ]; then
echo 'requires $RUST_SERVER_HOSTNAME'
exit 1
fi
if [ -z "$RUST_SERVER_IDENTITY" ]; then
echo 'requires $RUST_SERVER_IDENTITY'
exit 1
fi
if [ -z "$RUST_SERVER_TICKRATE" ]; then
RUST_SERVER_TICKRATE=10
fi
if [ -z "$RUST_SERVER_DESCRIPTION" ]; then
echo 'requires $RUST_SERVER_DESCRIPTION'
exit 1
fi
if [ -z "$RUST_SERVER_HEADERIMAGE" ]; then
echo 'requires $RUST_SERVER_HEADERIMAGE'
exit 1
fi
if [ -z "$RUST_SERVER_URL" ]; then
echo 'requires $RUST_SERVER_URL'
exit 1
fi
echo "Initial Parameters"
echo " RUST_HOME: $RUST_HOME"
echo " RUST_RCON_PASSWORD: $RUST_RCON_PASSWORD"
echo " RUST_SERVER_MAXPLAYERS: $RUST_SERVER_MAXPLAYERS"
echo " RUST_SERVER_HOSTNAME: $RUST_SERVER_HOSTNAME"
echo " RUST_SERVER_IDENTITY: $RUST_SERVER_IDENTITY"
echo " RUST_SERVER_TICKRATE: $RUST_SERVER_TICKRATE"
echo " RUST_SERVER_DESCRIPTION: $RUST_SERVER_DESCRIPTION"
echo " RUST_SERVER_HEADERIMAGE: $RUST_SERVER_HEADERIMAGE"
echo " RUST_SERVER_URL: $RUST_SERVER_URL"
echo
# Install SteamCMD
sudo yum install glibc.i686 libstdc++.i686 -y
mkdir ~/Steam && cd ~/Steam
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
# Install Rust
./steamcmd.sh +login anonymous +force_install_dir $RUST_HOME +app_update 258550 validate +quit
# Initial resources
cd $RUST_HOME
cat << EOF > start-$RUST_SERVER_IDENTITY.sh
$RUST_HOME/RustDedicated \\
-batchmode -nographics \\
-server.ip 0.0.0.0 \\
-server.port 28015 \\
-rcon.ip 0.0.0.0 \\
-rcon.port 28016 \\
-rcon.password $RUST_RCON_PASSWORD \\
-server.maxplayers $RUST_SERVER_MAXPLAYERS \\
-server.hostname "$RUST_SERVER_HOSTNAME" \\
-server.identity "$RUST_SERVER_IDENTITY" \\
-server.level "Procedural Map" \\
-server.seed 12345 \\
-server.worldsize 3000 \\
-server.saveinterval 300 \\
-server.globalchat true \\
-server.tickrate $RUST_SERVER_TICKRATE \\
-server.description "$RUST_SERVER_DESCRIPTION" \\
-server.headerimage "$RUST_SERVER_HEADERIMAGE" \\
-server.url $RUST_SERVER_URL
EOF
# Start
sudo bash -c "cat << EOF > /etc/systemd/system/rust-$RUST_SERVER_IDENTITY.service
[Unit]
Description=Rust $RUST_SERVER_HOSTNAME
[Service]
WorkingDirectory=$RUST_HOME
ExecStart=/usr/bin/sh $RUST_HOME/start-$RUST_SERVER_IDENTITY.sh
Restart=always
Type=simple
User=`whoami`
[Install]
WantedBy=multi-user.target
EOF"
sudo systemctl daemon-reload
sudo systemctl enable rust-$RUST_SERVER_IDENTITY.service
sudo systemctl restart rust-$RUST_SERVER_IDENTITY.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment