Created
January 27, 2021 04:09
-
-
Save oshinko/6b5b639f2dfced977e582f209e2133a8 to your computer and use it in GitHub Desktop.
Install Rust Server on Linux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######################################################################## | |
# 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