From 074d469a283bd5865a3095eaaf2a9fc2bab27459 Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Fri, 26 Jun 2020 23:43:11 -0400 Subject: [PATCH 1/3] add rust autrowipe adds a rust egg that will autowipe saves and generate a new seed. The generated seed will override the seed variable if the seed.txt file exists. --- steamcmd_servers/rust/rust_autowipe/README.md | 29 ++++ .../rust/rust_autowipe/egg-rust-autowipe.json | 162 ++++++++++++++++++ .../{ => rust}/rust_staging/README.md | 0 .../rust_staging/egg-rust-staging.json | 0 4 files changed, 191 insertions(+) create mode 100644 steamcmd_servers/rust/rust_autowipe/README.md create mode 100644 steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json rename steamcmd_servers/{ => rust}/rust_staging/README.md (100%) rename steamcmd_servers/{ => rust}/rust_staging/egg-rust-staging.json (100%) diff --git a/steamcmd_servers/rust/rust_autowipe/README.md b/steamcmd_servers/rust/rust_autowipe/README.md new file mode 100644 index 00000000..1a913465 --- /dev/null +++ b/steamcmd_servers/rust/rust_autowipe/README.md @@ -0,0 +1,29 @@ +### Rust Autowipe +The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive. + +Adds variables to wipe files based on a list you set. + +The variable `REGEN_SERVER` was added, default 0 set to 1 to generate a random seed and remove old files + +Files listed in the `REMOVE_FILES` variabe, space separated, will be removed. + +### Minimum RAM warning +The server requires at least 4096MB to run properly. +This is mostly needed for the startup only, once it is running (depending on your world size) it should consume less. + +### Modding warning +Due to Oxide/uMod not supporting the staging branch, you will not be able to Mod this server. + +Wulf (Community Admin on Oxidemod/uMod): + +"We only release builds for the release/public branch of Rust, so if you'd like to use it on any other branch, you'd need to manually patch it yourself using our patcher tool founder under the Snapshots repo. To switch a different Rust branch, just use the -beta tag with SteamCMD and the branch name." + +### Server Ports +Ports required to run the server. + +| Port | default | +|---------|---------| +| Game and Quary | 28015 UDP | +| RCON | 28016 TCP | + +### Information about server updates can be found [here](https://steamdb.info/app/258550/depots/?branch=staging) diff --git a/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json b/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json new file mode 100644 index 00000000..5d0cec06 --- /dev/null +++ b/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json @@ -0,0 +1,162 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1" + }, + "exported_at": "2020-06-26T23:31:17-04:00", + "name": "Rust Autowipe", + "author": "support@pterodactyl.io", + "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.", + "image": "quay.io\/pterodactyl\/core:rust", + "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"$( [ -f seed.txt ] && printf %s $(cat seed.txt) || printf %s '${WORLD_SEED}' )\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}\"", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Server startup complete\",\r\n \"userInteraction\": []\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\nSRCDS_APPID=258550\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nif [ ${REGEN_SERVER} == \"1\" ]; then\r\n cd \/mnt\/server\/\r\n rm -rf ${REMOVE_FILES}\r\n rm -sf seed.txt\r\n cat \/dev\/urandom | tr -dc '1-9' | fold -w 5 | head -n 1 > seed.txt\r\nfi", + "container": "ubuntu:18.04", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The name of your server in the public server list.", + "env_variable": "HOSTNAME", + "default_value": "A Rust Server", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|string|max:40" + }, + { + "name": "OxideMod", + "description": "Set whether you want the server to use and auto update OxideMod or not. Valid options are \"1\" for true and \"0\" for false.", + "env_variable": "OXIDE", + "default_value": "0", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|boolean" + }, + { + "name": "Level", + "description": "The world file for Rust to use.", + "env_variable": "LEVEL", + "default_value": "Procedural Map", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|string|max:20" + }, + { + "name": "Description", + "description": "The description under your server title. Commonly used for rules & info. Use \\n for newlines.", + "env_variable": "DESCRIPTION", + "default_value": "Powered by Pterodactyl", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|string" + }, + { + "name": "URL", + "description": "The URL for your server. This is what comes up when clicking the \"Visit Website\" button.", + "env_variable": "SERVER_URL", + "default_value": "http:\/\/pterodactyl.io", + "user_viewable": 1, + "user_editable": 1, + "rules": "nullable|url" + }, + { + "name": "World Size", + "description": "The world size for a procedural map.", + "env_variable": "WORLD_SIZE", + "default_value": "3000", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|integer" + }, + { + "name": "World Seed", + "description": "The seed for a procedural map.", + "env_variable": "WORLD_SEED", + "default_value": "", + "user_viewable": 1, + "user_editable": 1, + "rules": "nullable|string" + }, + { + "name": "Max Players", + "description": "The maximum amount of players allowed in the server at once.", + "env_variable": "MAX_PLAYERS", + "default_value": "40", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|integer" + }, + { + "name": "Server Image", + "description": "The header image for the top of your server listing.", + "env_variable": "SERVER_IMG", + "default_value": "", + "user_viewable": 1, + "user_editable": 1, + "rules": "nullable|url" + }, + { + "name": "RCON Port", + "description": "Port for RCON connections.", + "env_variable": "RCON_PORT", + "default_value": "28016", + "user_viewable": 1, + "user_editable": 0, + "rules": "required|integer" + }, + { + "name": "RCON Password", + "description": "RCON access password.", + "env_variable": "RCON_PASS", + "default_value": "CHANGEME", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|string|max:64" + }, + { + "name": "Save Interval", + "description": "Sets the server\u2019s auto-save interval in seconds.", + "env_variable": "SAVEINTERVAL", + "default_value": "60", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|integer" + }, + { + "name": "Additional Arguments", + "description": "Add additional startup parameters to the server.", + "env_variable": "ADDITIONAL_ARGS", + "default_value": "", + "user_viewable": 1, + "user_editable": 1, + "rules": "nullable|string" + }, + { + "name": "Regen Server", + "description": "If the server should have it's files removed and regenerate the server seed.", + "env_variable": "REGEN_SERVER", + "default_value": "0", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|boolean" + }, + { + "name": "Files to remove", + "description": "A space separated list of files to remove when regenerating the server.", + "env_variable": "REMOVE_FILES", + "default_value": "server\/rust\/player.deaths.*.db server\/rust\/player.identities.*.db server\/rust\/player.states.*.db server\/rust\/player.tokens.db proceduralmap.*.*.*.map server\/rust\/proceduralmap.*.*.*.sav oxide\/data\/Kits_Data.json oxide\/data\/NTeleportationHome.json oxide\/data\/ServerRewards\/player_data.json oxide\/data\/PTTracker\/playtime_data.json", + "user_viewable": 1, + "user_editable": 1, + "rules": "required|string" + } + ] +} \ No newline at end of file diff --git a/steamcmd_servers/rust_staging/README.md b/steamcmd_servers/rust/rust_staging/README.md similarity index 100% rename from steamcmd_servers/rust_staging/README.md rename to steamcmd_servers/rust/rust_staging/README.md diff --git a/steamcmd_servers/rust_staging/egg-rust-staging.json b/steamcmd_servers/rust/rust_staging/egg-rust-staging.json similarity index 100% rename from steamcmd_servers/rust_staging/egg-rust-staging.json rename to steamcmd_servers/rust/rust_staging/egg-rust-staging.json From ce2d45eef4c413e30bad4c2ba474ac966264fd5c Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Mon, 29 Jun 2020 17:54:08 -0400 Subject: [PATCH 2/3] only use seed file when no seed is specified --- steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json b/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json index 5d0cec06..1465e79d 100644 --- a/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json +++ b/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json @@ -3,7 +3,7 @@ "meta": { "version": "PTDL_v1" }, - "exported_at": "2020-06-26T23:31:17-04:00", + "exported_at": "2020-06-29T17:53:20-04:00", "name": "Rust Autowipe", "author": "support@pterodactyl.io", "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.", @@ -17,7 +17,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\nSRCDS_APPID=258550\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nif [ ${REGEN_SERVER} == \"1\" ]; then\r\n cd \/mnt\/server\/\r\n rm -rf ${REMOVE_FILES}\r\n rm -sf seed.txt\r\n cat \/dev\/urandom | tr -dc '1-9' | fold -w 5 | head -n 1 > seed.txt\r\nfi", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\nSRCDS_APPID=258550\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nif [ ${REGEN_SERVER} == \"1\" ]; then\r\n cd \/mnt\/server\/\r\n rm -rf ${REMOVE_FILES}\r\nfi\r\n\r\nif [ $WORLD_SEED == \"0\" ]; then\r\n if [ ! -f \/mnt\/server\/seed.txt ]; then\r\n rm -sf \/mnt\/server\/seed.txt\r\n fi\r\n \r\n cat \/dev\/urandom | tr -dc '1-9' | fold -w 5 | head -n 1 > \/mnt\/server\/seed.txt\r\nfi", "container": "ubuntu:18.04", "entrypoint": "bash" } @@ -81,7 +81,7 @@ "name": "World Seed", "description": "The seed for a procedural map.", "env_variable": "WORLD_SEED", - "default_value": "", + "default_value": "0", "user_viewable": 1, "user_editable": 1, "rules": "nullable|string" From dc1dd9298878debcefecc3410e77faa251335fc4 Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Mon, 29 Jun 2020 18:44:48 -0400 Subject: [PATCH 3/3] fix startup command makes the startup command respect seed variable --- steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json b/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json index 1465e79d..a0214678 100644 --- a/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json +++ b/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json @@ -3,12 +3,12 @@ "meta": { "version": "PTDL_v1" }, - "exported_at": "2020-06-29T17:53:20-04:00", + "exported_at": "2020-06-29T18:44:15-04:00", "name": "Rust Autowipe", "author": "support@pterodactyl.io", "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.", "image": "quay.io\/pterodactyl\/core:rust", - "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"$( [ -f seed.txt ] && printf %s $(cat seed.txt) || printf %s '${WORLD_SEED}' )\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}\"", + "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"$( if [ -f seed.txt ] && [[ ${WORLD_SEED} == \"0\" ]]; then printf %s $(cat seed.txt); else printf %s '${WORLD_SEED}'; fi )\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}\"", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Server startup complete\",\r\n \"userInteraction\": []\r\n}",