All checks were successful
PR Checks / rust-gates (pull_request) Successful in 1m30s
The org lead's name for it in the panel. Pterodactyl takes an egg's name from the imported JSON, so it is set here rather than renamed by hand after every import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
273 lines
12 KiB
JSON
273 lines
12 KiB
JSON
{
|
||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||
"meta": {
|
||
"version": "PTDL_v2",
|
||
"update_url": null
|
||
},
|
||
"exported_at": "2026-09-26T00:00:00+00:00",
|
||
"name": "runicgateway-rust-autowipe",
|
||
"author": "ci@whitlocktech.com",
|
||
"description": "Egg 18 \"Rust Autowipe\" with the Runic Gateway bridge: the rust-link sidecar runs beside the game and the plugin is placed for Oxide or Carbon, both from a published, checksum-verified bundle at install time. FRAMEWORK=vanilla installs no bridge. Built from RunicGateway/Rust-Link egg/; see docs/rust-link/INSTALL.md.",
|
||
"features": null,
|
||
"docker_images": {
|
||
"ghcr.io/pterodactyl/games:rust": "ghcr.io/pterodactyl/games:rust"
|
||
},
|
||
"file_denylist": [],
|
||
"startup": "$( [ -x ./rust-link/with-sidecar.sh ] && printf %s ./rust-link/with-sidecar.sh ) \"./RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.ip 0.0.0.0 +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.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +app.port {{APP_PORT}} +server.saveinterval {{SAVEINTERVAL}} $( [ -z ${MAP_URL} ] && printf %s \"+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 )\\\"\"|| printf %s \"+server.levelurl {{MAP_URL}}\" ) {{ADDITIONAL_ARGS}}\"",
|
||
"config": {
|
||
"files": "{}",
|
||
"startup": "{\n \"done\": \"Server startup complete\"\n}",
|
||
"logs": "{}",
|
||
"stop": "quit"
|
||
},
|
||
"scripts": {
|
||
"installation": {
|
||
"script": "@@ egg/install.sh, inserted by egg/build.sh @@",
|
||
"container": "ghcr.io/ptero-eggs/installers:debian",
|
||
"entrypoint": "bash"
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "SRCDS_APPID",
|
||
"description": "",
|
||
"env_variable": "SRCDS_APPID",
|
||
"default_value": "258550",
|
||
"user_viewable": false,
|
||
"user_editable": false,
|
||
"rules": "required|string|max:20",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Max Players",
|
||
"description": "The maximum amount of players allowed in the server at once.",
|
||
"env_variable": "MAX_PLAYERS",
|
||
"default_value": "40",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|integer",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Server Name",
|
||
"description": "The name of your server in the public server list.",
|
||
"env_variable": "HOSTNAME",
|
||
"default_value": "A Rust Server",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|string|max:40",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Level",
|
||
"description": "The world file for Rust to use.",
|
||
"env_variable": "LEVEL",
|
||
"default_value": "Procedural Map",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|string|max:20",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"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": true,
|
||
"user_editable": true,
|
||
"rules": "required|string",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"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": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|url",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "World Size",
|
||
"description": "The world size for a procedural map.",
|
||
"env_variable": "WORLD_SIZE",
|
||
"default_value": "3000",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|integer",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "World Seed",
|
||
"description": "The seed for a procedural map.",
|
||
"env_variable": "WORLD_SEED",
|
||
"default_value": "0",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|string",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Server Image",
|
||
"description": "The header image for the top of your server listing.",
|
||
"env_variable": "SERVER_IMG",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|url",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "RCON Port",
|
||
"description": "Port for RCON connections.",
|
||
"env_variable": "RCON_PORT",
|
||
"default_value": "28016",
|
||
"user_viewable": true,
|
||
"user_editable": false,
|
||
"rules": "required|integer",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "RCON Password",
|
||
"description": "RCON access password.",
|
||
"env_variable": "RCON_PASS",
|
||
"default_value": "CHANGEME",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|regex:/^[\\w.-]*$/|max:64",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Save Interval",
|
||
"description": "Sets the server’s auto-save interval in seconds.",
|
||
"env_variable": "SAVEINTERVAL",
|
||
"default_value": "60",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|integer",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Additional Arguments",
|
||
"description": "Add additional startup parameters to the server.",
|
||
"env_variable": "ADDITIONAL_ARGS",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|string",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Regen Server",
|
||
"description": "If the server should have its files removed and regenerate the server seed on reinstall.",
|
||
"env_variable": "REGEN_SERVER",
|
||
"default_value": "0",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|boolean",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Files to remove",
|
||
"description": "A space-separated list of files to remove when regenerating the server on reinstall.",
|
||
"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": true,
|
||
"user_editable": true,
|
||
"rules": "required|string",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "QUERY PORT",
|
||
"description": "Port for QUERY connections.",
|
||
"env_variable": "QUERY_PORT",
|
||
"default_value": "28017",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|integer",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "APP PORT",
|
||
"description": "Port for Rust+ applications. -1 to disable.",
|
||
"env_variable": "APP_PORT",
|
||
"default_value": "28082",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|integer",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Custom Map URL",
|
||
"description": "Overwrites the map with the one from the direct download URL. Invalid URLs will cause the server to crash.",
|
||
"env_variable": "MAP_URL",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|url",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Modding Framework",
|
||
"description": "The modding framework to be used: carbon, oxide, vanilla.\nDefaults to \"vanilla\" for a non-modded server installation.",
|
||
"env_variable": "FRAMEWORK",
|
||
"default_value": "vanilla",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|string|in:vanilla,carbon,oxide",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Runic Gateway: server id",
|
||
"description": "This server's id on the website: lowercase letters, digits and '-', up to 64. It is read ONCE, when the bridge plugin writes its first config; after that the config file holds it and the website locks it, so changing this later changes nothing. Type the same id at Admin -> Rust -> Servers.",
|
||
"env_variable": "RUSTLINK_SERVER_ID",
|
||
"default_value": "main",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|string|regex:/^[a-z0-9][a-z0-9-]{0,63}$/",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Runic Gateway: sidecar port",
|
||
"description": "The port the website reaches this server's bridge on. It MUST be one of this server's allocations: the panel does not tell the server which ports it holds, and a port that is not allocated binds but is never reachable. The console prints the URL on every boot.",
|
||
"env_variable": "RUSTLINK_WEB_PORT",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "required|integer|between:1024,65535",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Runic Gateway: sidecar token",
|
||
"description": "Leave blank: the bridge generates a token on its first boot, keeps it in rust-link/sidecar.toml and prints it to the console once. Set it only to choose your own. Anyone who can see this server's startup variables in the panel can read a token typed here.",
|
||
"env_variable": "RUSTLINK_WEB_TOKEN",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|string|max:128",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Runic Gateway: bundle",
|
||
"description": "Pin the bridge to a published bundle (e.g. 2026.09.27). Blank takes the current one. Either way it is fetched only when the server is (re)installed, never on a restart, so a restart cannot change the protocol under your website.",
|
||
"env_variable": "RUNICGATEWAY_BUNDLE",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|string|regex:/^\\d{4}\\.\\d{2}\\.\\d{2}(\\.\\d+)?$/",
|
||
"field_type": "text"
|
||
},
|
||
{
|
||
"name": "Runic Gateway: history days",
|
||
"description": "How many days of raw events the bridge keeps before rolling them up. Blank keeps its default.",
|
||
"env_variable": "RUSTLINK_RETAIN_DAYS",
|
||
"default_value": "",
|
||
"user_viewable": true,
|
||
"user_editable": true,
|
||
"rules": "nullable|integer|min:0",
|
||
"field_type": "text"
|
||
}
|
||
]
|
||
}
|