How to: Host your own Rust Dedicated Server
Decided to run a Rust Dedicated Server? The installation and set-up for the Rust Dedicated Server is very easy and straightforward. This guide is for the installation of a server on a Windows PC. For Linux, please check out our How to host a Rust server in Linux guide.
The Rust server can be taxing on your host but maybe not as much as you would think. As a baseline a 3 square km (default gen size) map freshly generated will run at close to 2 gigabytes of ram. After some stress testing and 150k entities later, can use 6+ gigabytes of memory. So I would suggest having at least 7 gigs allocated per server.
- Create a folder for SteamCMD such as C:\steamcmd
- Download SteamCMD for Windows.
- Extract the contents of the zip file to the folder you created.
- Execute the steamcmd.exe program. (Your computer may ask you to confirm that you want to run it.)
This file, when executed, will download, install and update to the lastest version of SteamCMD.
After it is done you will receive the Steam> prompt. Run the following commands, one at a time, at the Steam> prompt, to start downloading the Rust Dedicated Server.
login anonymous force_install_dir "c:\rustserver\" app_update 258550 quit
If you wanted to do all of this in one command use the following:
C:\steamcmd\steamcmd.exe +login anonymous +force_install_dir c:\rustserver\ +app_update 258550 +quit
You could run this command straight from your command prompt, batch file or make a shortcut for it.
The force_install_dir is not strictly necessary when running a single server instance, but would be required to run multiple instances of the server. If you want to download the staging branch of Rust that receives the most recent updates use the following commands (replace 'staging' with 'prerelease' to test the XP system).
login anonymous force_install_dir "c:\rustdev\" app_update 258550 -beta staging quit
These are all of the necessary files required for a “Vanilla” server. Modified servers require a little more work.
Configuring and running the server
To get a server instance up and running you need to make at least one batch script file. To start, create a file named RustServer.bat in your server install directory (c:\rustserver) then right click and edit the file.
The Batch Script File
A batch script is a text document that stores a list of commands to be run in sequence. The main use of a batch script for hosting a server is to enable the server owner to make sure their server is up to date and if the server crashes that it will resume. The easiest way to do this is by using the GOTO statement. GOTO will allow you to jump around in your batch script to any other part of the batch file.
It’s important to note that Rust sometimes hangs instead of completely closing. In this case the server will not restart if the process hangs because the process did not actually stop. Batch scripting waits for a command to complete (in this case the RustDedicated.exe) but if that process never completes the batch script will just sit there.
For the most part, you will have to configure all of your server settings in this batch script. The config files for the server don't quite work yet so explicitly defining all of your settings in the batch script is the best way to go. Example:
echo off :start C:\steamcmd\steamcmd.exe +login anonymous +force_install_dir c:\rustserver\ +app_update 258550 +quit RustDedicated.exe -batchmode -server.port 28015 -server.hostname "Rustafied.com Guides" -server.seed 8675309 -server.maxplayers 50 -server.worldsize 4000 -server.identity Rustafied_com_Guides -autoupdate goto start
TIP: I use a slightly different method for my batch script files. All the different variables on the same line makes it very hard for me to quickly understand what I see and make changes if needed. This method is very old-school, but so am I. Note that a caret “^” has been placed as the last character at the end of main program name and the variables that follow. Be sure to include the space at the beginning of each variable line or it will not work. Basically, Windows interprets the caret “^” as an ESC character and waits for the next character to determine what to do. In this case, the next character is a carriage-return (or new-line). Windows does not do anything for this particular ESC-combination, so they are ignored as if they are not there. But it runs as if it was all on one line.
echo off :start C:\steamcmd\steamcmd.exe +login anonymous +force_install_dir c:\rustserver\ +app_update 258550 +quit RustDedicated.exe^ -batchmode^ -server.port 28017^ -server.hostname "Rustafied.com Guides - Test"^ -server.description "Functional server testing for Rustafied.com Guide editors."^ -server.url "Http://rustafied.com"^ -server.headerimage "http://i.imgur.com/ujMCXvA.png"^ -server.seed 8675309^ -server.maxplayers 50^ -server.worldsize 4000^ -server.identity Rustafied_com_Guides^ -autoupdate goto start
You should already be familiar with the steamcmd section and this will login anonymously, force the install location, update the files if needed and then quits SteamCMD. The server is configured using variables. These variables are the same ones you can set from the server console or the console of anyone you give moderator or owner permissions to. However, if these variables are changed from the console, they will revert to the ones in the command line after a restart of the server.
These are considered the most commonly used variables, but there are many others.
- server.port Sets the port the server will answer incoming requests (defaults to 28015)
- server.hostname Sets what the server will be called in the Rust server listing.
- server.seed is the map generation seed. Values range from 0 to 429497295.
- server.maxplayers is the max number of players allowed to connect to your server at a time.
- server.worldsize sets the size of the generated world. The minimum is 2000 and the max is 8000.
- server.identity is a variable to define different identities for your server. With this you can have multiple server instances. Do not use spaces or special characters. Big fan of the underscore “_”.
- server.description is a brief description of the server. For multiple lines, use \n
- server.url if provided, gives a ”VIEW WEBPAGE” option on the server listing screen.
- server.headerimage allows you to provide a url to a custom image for the server listing screen. Use a png or jpg of 512 x 256.
These variables and more can be searched in the server console by using the find command. For example:
Connecting to your server
Run the Rust Client, and do not select a server. Note that your server will not show up under the “Local Network” tab. Instead, press F1 and go to the client console. Assuming you used the default port of 28015, type in the following command to connect to your server:
If you used a different port, change it accordingly.
Owners and Moderators
Once the server is up and running you may choose to assign ownership to yourself. This is done with the ownerid command. You will need your 17 digit SteamID number. The easiest way to get it, is to log in and then run the users command at the console. Then enter the command as follows:
ownerid 12345678901234567 AdminName
ownerid 12345678901234567 "Admin Name"
You can do the same for moderators using the moderatorid command
moderatorid 12345678901234567 "Admin Name"
Note: As with most commands that allow the use of player names, if the name has spaces or special characters in it, you must use quotes to contain the name.
Be sure to use the writecfg command after doing this and then the person must logout and log back in to receive the permissions. The two permissions are almost identical. Owners can create, kick and ban moderators if needed, but moderators cannot affect owners.
Sharing Your Server with the World
If you wish others to be able to connect to your server from the outside world, you will need to setup a port forward using the port you used listed above. I recommend using this Steam Server Guide if you are unfamiliar with setting up port forwarding. You will need to forward your “server.port” as well as “rcon.port” if used. By default these are 28015 and 28016.
Even if your server does not show up on the server list, players may be able to connect to you via the client.connect command if they know your public IP. Local firewall programs can also affect the ability to connect from the outside world. If you suspect this, turn off the firewall briefly.