Monitor Steam for Rust server updates and notify a Rust server to update itself
Usage: rustynail [options]
Options:
-V, --version output the version number
-c, --config <file> path and filename of optional config file
-s, --server <host:port> server IP address:port
-p, --password <password> server password
-m, --manifest <path> location of manifest file
-l, --launchfile <filename> name of batch file to launch Rust
-m, --launchdir <path> directory of launchfile batch file
-i, --autostart disable autostart by setting false
-j, --autofail disable failsafe recovery by setting false
-k, --autoupdate disable updates by setting false
-t, --timer <milliseconds> check loop timer in milliseconds
-o, --timeout <milliseconds> timeout value for RCON availability checks
-n, --unavail <number> unavailability ticks
-n, --failsafe <multiplier> unavail multiplier to recover crashed server
-a, --announce <message> pre-upgrade in-game message
-b, --ticks <number> number of times to repeat update message
-u, --emuser <email address> email address for sending email
-v, --empass <password> email user password
-w, --emupdate enable sending email for updates
-x, --emunavail enable sending email for unavailability
-f, --forcecfg config file overrides command-line options
-h, --help output usage information
Uses a JSON config file if present (default is to read from rustytoolbox.json in the current directory). Options are named the same as command-line ones and merged with those command-line options (--forcecfg causes config file to take precedence over command-line options if there are conflicts). During RustyNail operation, if the file changes, application will re-read config file and make adjustments as needed.
rustytoolbox.json
{
"manifest": "C:\\Rust\\Server\\rustds\\steamapps\\appmanifest_258550.acf",
"timer": 60000,
"server": "127.0.0.1:28055",
"announce": "New server version released by Facepunch, rebooting to update",
"ticks": 2,
"emailUpdate": [ "" ],
"emailUnavail": [ "" ],
"emupdate": "false",
"emunavail": "false",
"unavail": 15
}
-
Windows Operation system
-
Nodejs installed
-
For email notifications, outbound ports required by your email server
-
Currently only manages a single Rust server instance per Windows server install
The Rust server needs to be started with a *.bat file (usually this is Run_DS.bat) that infinite loops through update-run-update sequence for RustyNail to work. Also, runs the update twice, because occasionally, the first run of the Steam update process leaves this file missing: C:\Rust\Server\rustds\steamapps\appmanifest_258550.acf
Run_DS.bat
echo off
:start
cd steam
steamcmd.exe +runscript ../update_script.txt
steamcmd.exe +runscript ../update_script.txt
cd ..
cd rustds
RustDedicated.exe <with whatever your normal command-line options are>
cd ../
goto start
update_script.txt
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir ../rustds
app_update 258550 validate
quit
-
More flexible scheduled seed/salt changes besides 1st update from Facepunch on the 1st Thursday of the month
-
More precise checking for need to change seed/salt. Current design just changes seed when 1st update comes out; does not actually check for network++ and forced-wipe caused by Facepunch. In general, would prefer to only change seed/salt when planned by RustyNail user or when unplanned forced-wipe by Facepunch.
-
Staged updating dependency when Rust server update requires client upgrade. Goal is to have RustyNail delay initiating a Rust server update cycle which requires a corresponding Rust client update until the client update has been released by Facepunch. This helps to prevent users running staging-branch from instantly loading into new server version before the greater population of Rust clients are upgraded...
-
Ability to manage multiple Rust server instances running on a single Windows installation
-
More flexible in-game announcement messages, especially message just before planned reboot. Current design allows countdown messages ("rebooting in 1 minute"), but unable to send last message immediately before reboot action ("rebooting now").
-
Linux version