[Arma Reforger] Bug Fixes & README Improvement (#45)
* Bug Fixes & README Improvement Egg: - Updated my email address - Fixed bug that prevented large mods from downloading - Fixed `BATTLEYE`, `DISABLE_THIRD`, and `VISIBLE` Startup Variables not being updated in `config.json` on subsequent server boots - Made the installation script entrypoint more specific - Refactored the installation script to clean it up - Added `sort` values to the Startup Variables for the Pelican Egg README: - Fixed/clarified the server ports - Fixed example in the "Define Host Registered Bind Address" section - Generalized Panel verbiage
This commit is contained in:
		
							parent
							
								
									fcc7a0fdac
								
							
						
					
					
						commit
						f2ce8b761b
					
				| @ -50,11 +50,11 @@ ___ | ||||
| 
 | ||||
| ### Server Ports | ||||
| 
 | ||||
| | Port | Default (UDP) | Notes | | ||||
| |---------|---------|---------| | ||||
| | **Game** | 2001 | **Required** / Primary port in Pterodactyl | | ||||
| | Steam communication | 50000..65000 | Documented, but not seemingly needed | | ||||
| | Steam Query | 17777 | Used to provide Steam with server status (but does not seemingly need to be forwarded) | | ||||
| | Port | Default | Protocol | Required | Notes | | ||||
| |---------|---------|---------|---------|---------| | ||||
| | **Game** | 2001 | UDP | **Yes** | Primary port in Panel | | ||||
| | A2S | 17777 | UDP | No | Steam Query / Requires additional configuration in `config.json` | | ||||
| | RCON | 19999 | UDP | No | Requires additional configuration in `config.json` | | ||||
| 
 | ||||
| ___ | ||||
| 
 | ||||
| @ -65,7 +65,7 @@ ___ | ||||
| | Processor | Recent x86/64 (AMD/Intel) processor. No ARM support. | Can use up to 300-600% CPU under load with uncapped FPS (set Max FPS to prevent). | | ||||
| | RAM | 3328 MiB | 6144-8192 MiB | | ||||
| | Storage | 5 GB | 7-10 GB (or more, depending on number of mods downloaded) | | ||||
| | Network | If node is behind a NAT, will require Egg Modification (\*see [Define Host Registered Bind Address](#define-host-registered-bind-address) | Pterodactyl Node is not behind a NAT | | ||||
| | Network | If node is behind a NAT, will require Egg Modification (\*see [Define Host Registered Bind Address](#define-host-registered-bind-address) | Wings Node is not behind a NAT | | ||||
| | Game Ownership | Not required to start or download mods. | ---- | | ||||
| 
 | ||||
| ___ | ||||
| @ -110,14 +110,14 @@ The following are highly recommended variable modifications you can make to the | ||||
| 
 | ||||
| #### Define Host Registered Bind Address | ||||
| 
 | ||||
| Due to a current behavior of Pterodactyl, `SERVER_IP` will not return the node's public IP address if it is behind a NAT; it will return its private IP address. Unfortunately at this time, Arma Reforger **requires** the server's public IP address to be strictly defined within `config.json`. If you know your node is behind a NAT (or you are finding your node's private IP address being added to `config.json`), you will need to edit this egg after importing it by following these steps: | ||||
| Due to a current behavior of the Panel, `SERVER_IP` will not return the node's public IP address if it is behind a NAT; it will return its private IP address. Unfortunately at this time, Arma Reforger **requires** the server's public IP address to be strictly defined within `config.json`. If you know your node is behind a NAT (or you are finding your node's private IP address being added to `config.json`), you will need to edit this egg after importing it by following these steps: | ||||
| 
 | ||||
| 1. As a panel admin, find and open the egg within your Nests tab. | ||||
| 2. On the first tab "Configuration", find the "Configuration Files" box under the "Process Management" section. | ||||
| 3. Carefully (as to not touch anything else), find `{{server.build.default.ip}}` and replace it with your node's public IP address. If done correctly, the line should now look something like this: | ||||
| 
 | ||||
| ```json | ||||
| "    \"gameHostRegisterBindAddress\"": "    \"gameHostRegisterBindAddress\": \"123.4.56.789\",", | ||||
| "publicAddress": "123.4.56.789", | ||||
| ``` | ||||
| 
 | ||||
| #### Restrict Max Players | ||||
|  | ||||
| @ -4,9 +4,9 @@ | ||||
|         "version": "PTDL_v2", | ||||
|         "update_url": null | ||||
|     }, | ||||
|     "exported_at": "2024-06-01T00:03:53+00:00", | ||||
|     "exported_at": "2024-07-03T21:46:20-07:00", | ||||
|     "name": "Arma Reforger", | ||||
|     "author": "rehlmgaming@gmail.com", | ||||
|     "author": "red_thirten@yahoo.com", | ||||
|     "uuid": "7c4dc3db-fac9-4d2d-8551-0c266e85cc50", | ||||
|     "description": "Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km\u00b2 mid-Atlantic island \u2014 or take on the role of Game Master and create your very own scenarios for others to enjoy.", | ||||
|     "features": [ | ||||
| @ -16,18 +16,18 @@ | ||||
|         "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" | ||||
|     }, | ||||
|     "file_denylist": [], | ||||
|     "startup": ".\/ArmaReforgerServer -gproj .\/addons\/data\/ArmaReforger.gproj -config .\/config.json -profile .\/profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}}", | ||||
|     "startup": "sed -i 's\/\"true\"\/true\/g; s\/\"false\"\/false\/g' config.json; .\/ArmaReforgerServer -gproj .\/addons\/data\/ArmaReforger.gproj -config .\/config.json -profile .\/profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}} -addonTempDir .\/tmp", | ||||
|     "config": { | ||||
|         "files": "{\r\n    \"config.json\": {\r\n        \"parser\": \"json\",\r\n        \"find\": {\r\n            \"bindAddress\": \"0.0.0.0\",\r\n            \"bindPort\": \"{{server.build.default.port}}\",\r\n            \"publicAddress\": \"{{server.build.default.ip}}\",\r\n            \"publicPort\": \"{{server.build.default.port}}\",\r\n            \"game.name\": \"{{server.build.env.SERVER_NAME}}\",\r\n            \"game.password\": \"{{server.build.env.SERVER_PASS}}\",\r\n            \"game.passwordAdmin\": \"{{server.build.env.ADMIN_PASS}}\",\r\n            \"game.scenarioId\": \"{{server.build.env.SCENARIO_ID}}\",\r\n            \"game.maxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n            \"game.gameProperties.fastValidation\": true\r\n        }\r\n    }\r\n}", | ||||
|         "files": "{\r\n    \"config.json\": {\r\n        \"parser\": \"json\",\r\n        \"find\": {\r\n            \"bindAddress\": \"0.0.0.0\",\r\n            \"bindPort\": \"{{server.build.default.port}}\",\r\n            \"publicAddress\": \"{{server.build.default.ip}}\",\r\n            \"publicPort\": \"{{server.build.default.port}}\",\r\n            \"game.name\": \"{{server.build.env.SERVER_NAME}}\",\r\n            \"game.password\": \"{{server.build.env.SERVER_PASS}}\",\r\n            \"game.passwordAdmin\": \"{{server.build.env.ADMIN_PASS}}\",\r\n            \"game.scenarioId\": \"{{server.build.env.SCENARIO_ID}}\",\r\n            \"game.maxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n            \"game.visible\": \"{{server.build.env.VISIBLE}}\",\r\n            \"game.gameProperties.disableThirdPerson\": \"{{server.build.env.DISABLE_THIRD}}\",\r\n            \"game.gameProperties.fastValidation\": true,\r\n            \"game.gameProperties.battlEye\": \"{{server.build.env.BATTLEYE}}\"\r\n        }\r\n    }\r\n}", | ||||
|         "startup": "{\r\n    \"done\": \"Starting RPL server\"\r\n}", | ||||
|         "logs": "{}", | ||||
|         "stop": "^C" | ||||
|     }, | ||||
|     "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 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; 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\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\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 +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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\n## add below your custom commands if needed\r\n\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n    echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n    echo -e \"\\tTry reinstalling the server again.\\n\"\r\n    exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"bindAddress\": \"0.0.0.0\",\r\n\t\"bindPort\": ${SERVER_PORT},\r\n\t\"publicAddress\": \"${SERVER_IP}\",\r\n\t\"publicPort\": ${SERVER_PORT},\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"passwordAdmin\": \"${ADMIN_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"maxPlayers\": ${MAX_PLAYERS},\r\n\t\t\"visible\": true,\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 500,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"VONDisableUI\": false,\r\n\t\t\t\"VONDisableDirectSpeechUI\": false\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"", | ||||
|             "script": "#!\/bin\/bash\r\n\r\n## File: Pelican Arma Reforger Egg - egg-arma-reforger.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2024\/07\/03\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n## Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\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 $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\nchown -R root:root \/mnt\r\n\r\n# Install\/Verify game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +app_update 1007 $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n    echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n    echo -e \"\\tTry reinstalling the server again.\\n\"\r\n    exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile $HOME\/tmp\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"bindAddress\": \"0.0.0.0\",\r\n\t\"bindPort\": ${SERVER_PORT},\r\n\t\"publicAddress\": \"${SERVER_IP}\",\r\n\t\"publicPort\": ${SERVER_PORT},\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"passwordAdmin\": \"${ADMIN_PASS}\",\r\n\t\t\"admins\" : [],\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"maxPlayers\": ${MAX_PLAYERS},\r\n\t\t\"visible\": ${VISIBLE},\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 2500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 1000,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"VONDisableUI\": false,\r\n\t\t\t\"VONDisableDirectSpeechUI\": false\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"", | ||||
|             "container": "ghcr.io\/parkervcp\/installers:debian", | ||||
|             "entrypoint": "bash" | ||||
|             "entrypoint": "\/bin\/bash" | ||||
|         } | ||||
|     }, | ||||
|     "variables": [ | ||||
| @ -39,7 +39,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "boolean", | ||||
|             "sort": null, | ||||
|             "sort": 1, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -50,7 +50,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string|in:AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,SS,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW", | ||||
|             "sort": null, | ||||
|             "sort": 2, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -61,7 +61,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string|max:255", | ||||
|             "sort": null, | ||||
|             "sort": 3, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -72,7 +72,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|integer|between:1,256", | ||||
|             "sort": null, | ||||
|             "sort": 4, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -83,7 +83,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "nullable|string|max:32", | ||||
|             "sort": null, | ||||
|             "sort": 5, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -94,7 +94,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "nullable|string|max:32", | ||||
|             "sort": null, | ||||
|             "sort": 6, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -105,7 +105,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string", | ||||
|             "sort": null, | ||||
|             "sort": 7, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -116,7 +116,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string|in:true,false", | ||||
|             "sort": null, | ||||
|             "sort": 8, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -127,7 +127,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string|in:true,false", | ||||
|             "sort": null, | ||||
|             "sort": 9, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -138,7 +138,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string|in:true,false", | ||||
|             "sort": null, | ||||
|             "sort": 10, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -149,7 +149,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string|in:true,false", | ||||
|             "sort": null, | ||||
|             "sort": 11, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -160,7 +160,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "nullable|integer|gt:0", | ||||
|             "sort": null, | ||||
|             "sort": 12, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -171,7 +171,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|integer|min:0", | ||||
|             "sort": null, | ||||
|             "sort": 13, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -182,7 +182,7 @@ | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "nullable|string", | ||||
|             "sort": null, | ||||
|             "sort": 14, | ||||
|             "field_type": "text" | ||||
|         }, | ||||
|         { | ||||
| @ -193,7 +193,7 @@ | ||||
|             "user_viewable": false, | ||||
|             "user_editable": false, | ||||
|             "rules": "required|integer", | ||||
|             "sort": null, | ||||
|             "sort": 15, | ||||
|             "field_type": "text" | ||||
|         } | ||||
|     ] | ||||
|  | ||||
| @ -1,32 +1,32 @@ | ||||
| { | ||||
|     "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", | ||||
|     "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", | ||||
|     "meta": { | ||||
|         "update_url": null, | ||||
|         "version": "PTDL_v2" | ||||
|         "version": "PTDL_v2", | ||||
|         "update_url": null | ||||
|     }, | ||||
|     "exported_at": "2024-06-01T00:03:53+00:00", | ||||
|     "exported_at": "2024-07-03T21:46:20-07:00", | ||||
|     "name": "Arma Reforger", | ||||
|     "author": "rehlmgaming@gmail.com", | ||||
|     "description": "Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km² mid-Atlantic island — or take on the role of Game Master and create your very own scenarios for others to enjoy.", | ||||
|     "author": "red_thirten@yahoo.com", | ||||
|     "description": "Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km\u00b2 mid-Atlantic island \u2014 or take on the role of Game Master and create your very own scenarios for others to enjoy.", | ||||
|     "features": [ | ||||
|         "steam_disk_space" | ||||
|     ], | ||||
|     "docker_images": { | ||||
|         "ghcr.io/parkervcp/steamcmd:debian": "ghcr.io/parkervcp/steamcmd:debian" | ||||
|         "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" | ||||
|     }, | ||||
|     "file_denylist": [], | ||||
|     "startup": "./ArmaReforgerServer -gproj ./addons/data/ArmaReforger.gproj -config ./config.json -profile ./profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}}", | ||||
|     "startup": "sed -i 's\/\"true\"\/true\/g; s\/\"false\"\/false\/g' config.json; .\/ArmaReforgerServer -gproj .\/addons\/data\/ArmaReforger.gproj -config .\/config.json -profile .\/profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}} -addonTempDir .\/tmp", | ||||
|     "config": { | ||||
|         "files": "{\r\n    \"config.json\": {\r\n        \"parser\": \"json\",\r\n        \"find\": {\r\n            \"bindAddress\": \"0.0.0.0\",\r\n            \"bindPort\": \"{{server.build.default.port}}\",\r\n            \"publicAddress\": \"{{server.build.default.ip}}\",\r\n            \"publicPort\": \"{{server.build.default.port}}\",\r\n            \"game.name\": \"{{server.build.env.SERVER_NAME}}\",\r\n            \"game.password\": \"{{server.build.env.SERVER_PASS}}\",\r\n            \"game.passwordAdmin\": \"{{server.build.env.ADMIN_PASS}}\",\r\n            \"game.scenarioId\": \"{{server.build.env.SCENARIO_ID}}\",\r\n            \"game.maxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n            \"game.gameProperties.fastValidation\": true\r\n        }\r\n    }\r\n}", | ||||
|         "logs": "{}", | ||||
|         "files": "{\r\n    \"config.json\": {\r\n        \"parser\": \"json\",\r\n        \"find\": {\r\n            \"bindAddress\": \"0.0.0.0\",\r\n            \"bindPort\": \"{{server.build.default.port}}\",\r\n            \"publicAddress\": \"{{server.build.default.ip}}\",\r\n            \"publicPort\": \"{{server.build.default.port}}\",\r\n            \"game.name\": \"{{server.build.env.SERVER_NAME}}\",\r\n            \"game.password\": \"{{server.build.env.SERVER_PASS}}\",\r\n            \"game.passwordAdmin\": \"{{server.build.env.ADMIN_PASS}}\",\r\n            \"game.scenarioId\": \"{{server.build.env.SCENARIO_ID}}\",\r\n            \"game.maxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n            \"game.visible\": \"{{server.build.env.VISIBLE}}\",\r\n            \"game.gameProperties.disableThirdPerson\": \"{{server.build.env.DISABLE_THIRD}}\",\r\n            \"game.gameProperties.fastValidation\": true,\r\n            \"game.gameProperties.battlEye\": \"{{server.build.env.BATTLEYE}}\"\r\n        }\r\n    }\r\n}", | ||||
|         "startup": "{\r\n    \"done\": \"Starting RPL server\"\r\n}", | ||||
|         "logs": "{}", | ||||
|         "stop": "^C" | ||||
|     }, | ||||
|     "scripts": { | ||||
|         "installation": { | ||||
|             "container": "ghcr.io/parkervcp/installers:debian", | ||||
|             "entrypoint": "bash", | ||||
|             "script": "#!/bin/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n# Image to install with is 'ghcr.io/parkervcp/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; 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\nmkdir -p /mnt/server/steamapps # Fix steamcmd disk write error when this folder is missing\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 +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] \u0026\u0026 printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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\n## add below your custom commands if needed\r\n\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME/ArmaReforgerServer ]]; then\r\n    echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n    echo -e \"\\tTry reinstalling the server again.\\n\"\r\n    exit 1\r\nfi\r\n\r\nmkdir -p $HOME/profile\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat \u003e $HOME/config.json \u003c\u003c EOF\r\n{\r\n\t\"bindAddress\": \"0.0.0.0\",\r\n\t\"bindPort\": ${SERVER_PORT},\r\n\t\"publicAddress\": \"${SERVER_IP}\",\r\n\t\"publicPort\": ${SERVER_PORT},\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"passwordAdmin\": \"${ADMIN_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"maxPlayers\": ${MAX_PLAYERS},\r\n\t\t\"visible\": true,\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 500,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"VONDisableUI\": false,\r\n\t\t\t\"VONDisableDirectSpeechUI\": false\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"" | ||||
|             "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Arma Reforger Egg - egg-pterodactyl-arma-reforger.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2024\/07\/03\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n## Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\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 $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\nchown -R root:root \/mnt\r\n\r\n# Install\/Verify game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +app_update 1007 $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n    echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n    echo -e \"\\tTry reinstalling the server again.\\n\"\r\n    exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile $HOME\/tmp\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"bindAddress\": \"0.0.0.0\",\r\n\t\"bindPort\": ${SERVER_PORT},\r\n\t\"publicAddress\": \"${SERVER_IP}\",\r\n\t\"publicPort\": ${SERVER_PORT},\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"passwordAdmin\": \"${ADMIN_PASS}\",\r\n\t\t\"admins\" : [],\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"maxPlayers\": ${MAX_PLAYERS},\r\n\t\t\"visible\": ${VISIBLE},\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 2500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 1000,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"VONDisableUI\": false,\r\n\t\t\t\"VONDisableDirectSpeechUI\": false\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"", | ||||
|             "container": "ghcr.io\/parkervcp\/installers:debian", | ||||
|             "entrypoint": "\/bin\/bash" | ||||
|         } | ||||
|     }, | ||||
|     "variables": [ | ||||
| @ -92,9 +92,9 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "Scenario ID", | ||||
|             "description": "ID of scenario to run/play. Valid IDs can be viewed in the console upon startup of the server.", | ||||
|             "description": "ID of scenario to run\/play. Valid IDs can be viewed in the console upon startup of the server.", | ||||
|             "env_variable": "SCENARIO_ID", | ||||
|             "default_value": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf", | ||||
|             "default_value": "{ECC61978EDCC2B5A}Missions\/23_Campaign.conf", | ||||
|             "user_viewable": true, | ||||
|             "user_editable": true, | ||||
|             "rules": "required|string", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user