1
0
mirror of https://github.com/parkervcp/eggs.git synced 2024-10-06 23:57:07 +02:00

Merge pull request #1664 from lilkingjr1/arma-reforger

Add Arma Reforger Egg
This commit is contained in:
Michael (Parker) Parker 2022-05-30 18:18:58 -04:00 committed by GitHub
commit 57da910d2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 305 additions and 7 deletions

View File

@ -126,8 +126,6 @@ If you are reading this it looks like you are looking to add an egg to your serv
[League Sandbox](game_eggs/leaguesandbox) [League Sandbox](game_eggs/leaguesandbox)
* [League Sandbox](game_eggs/leaguesandbox/leaguesandbox)
[Minetest](game_eggs/minetest) (including MTG) [Minetest](game_eggs/minetest) (including MTG)
* [Minetest](game_eggs/minetest/minetest) * [Minetest](game_eggs/minetest/minetest)
@ -193,6 +191,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [ARK: Survival Evolved](game_eggs/steamcmd_servers/ark_survival_evolved) * [ARK: Survival Evolved](game_eggs/steamcmd_servers/ark_survival_evolved)
* [Arma](game_eggs/steamcmd_servers/arma) * [Arma](game_eggs/steamcmd_servers/arma)
* [Arma 3](game_eggs/steamcmd_servers/arma/arma3) * [Arma 3](game_eggs/steamcmd_servers/arma/arma3)
* [Arma Reforger](game_eggs/steamcmd_servers/arma/arma_reforger)
* [Assetto Corsa](game_eggs/steamcmd_servers/assetto_corsa) * [Assetto Corsa](game_eggs/steamcmd_servers/assetto_corsa)
* [Avorion](game_eggs/steamcmd_servers/avorion) * [Avorion](game_eggs/steamcmd_servers/avorion)
* [Barotrauma](game_eggs/steamcmd_servers/barotrauma) * [Barotrauma](game_eggs/steamcmd_servers/barotrauma)

View File

@ -109,6 +109,7 @@
* [ARK: Survival Evolved](steamcmd_servers/ark_survival_evolved) * [ARK: Survival Evolved](steamcmd_servers/ark_survival_evolved)
* [Arma](steamcmd_servers/arma) * [Arma](steamcmd_servers/arma)
* [Arma 3](steamcmd_servers/arma/arma3) * [Arma 3](steamcmd_servers/arma/arma3)
* [Arma Reforger](steamcmd_servers/arma/arma_reforger)
* [Assetto Corsa](steamcmd_servers/assetto_corsa) * [Assetto Corsa](steamcmd_servers/assetto_corsa)
* [Avorion](steamcmd_servers/avorion) * [Avorion](steamcmd_servers/avorion)
* [Barotrauma](steamcmd_servers/barotrauma) * [Barotrauma](steamcmd_servers/barotrauma)

View File

@ -12,7 +12,9 @@ This is a collection of servers that use SteamCMD to install.
## Arma ## Arma
[Arma 3](arma/arma3) * [Arma](arma)
* [Arma 3](arma/arma3)
* [Arma Reforger](arma/arma_reforger)
## Assetto Corsa ## Assetto Corsa
@ -35,6 +37,7 @@ This is a collection of servers that use SteamCMD to install.
[Conan Exiles](conan_exiles) [Conan Exiles](conan_exiles)
## Craftopia ## Craftopia
[Craftopia](craftopia) [Craftopia](craftopia)
## CryoFall ## CryoFall
@ -70,9 +73,11 @@ This is a collection of servers that use SteamCMD to install.
[Killing Floor 2](killing_floor_2) [Killing Floor 2](killing_floor_2)
## Left 4 Dead ## Left 4 Dead
[Left 4 Dead](left4dead) [Left 4 Dead](left4dead)
## Left 4 Dead 2 ## Left 4 Dead 2
[Left 4 Dead](left4dead_2) [Left 4 Dead](left4dead_2)
## Modiverse ## Modiverse
@ -182,7 +187,6 @@ This is a collection of servers that use SteamCMD to install.
## Valheim ## Valheim
[Valheim](valheim) * [Valheim](valheim)
* [Valheim Vanilla](valheim/valheim_vanilla)
* [Valheim Vanilla](valheim/valheim_vanilla) * [Valheim Plus Mod](valheim/valheim_plus)
* [Valheim Plus Mod](valheim/valheim_plus)

View File

@ -5,3 +5,4 @@ ARMA is a series of first-person tactical military shooters, originally released
## Arma Titles ## Arma Titles
* [Arma 3](arma3) * [Arma 3](arma3)
* [Arma Reforger](arma_reforger)

View File

@ -0,0 +1,125 @@
# Arma Reforger
***Server version currently marked as early access by the Arma developers! Check back often for egg updates as more features are added to the server software.***
___
## Authors / Contributors
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/lilkingjr1">
<img src="https://avatars.githubusercontent.com/u/4533989" width="50px;" alt=""/><br /><sub><b>Red-Thirten</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Maintains">🔨</a>
</td>
<td align="center">
<a href="https://github.com/Soljian">
<img src="https://avatars.githubusercontent.com/u/4036453" width="50px;" alt=""/><br /><sub><b>Soljian</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=Soljian" title="Contributor">💡</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
___
### Game Description
From Bohemia Interactive's [Website](https://reforger.armaplatform.com/):
> 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.
___
### Egg Capabilities
- Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable.
- Able to download and load Arma Reforger Workshop mods on startup (requires manual editing of the `config.json` file).
- Configuration of multiple common settings in the `config.json` file via Startup Parameters:
- Server Name, Passwords, Scenario ID, Disable Third Person, Max FPS, and more...
- Max Players is configurable and able to be host enforced (\*see [Recommended Egg Modifications](#restrict-max-players)).
- [WHMCS](https://www.whmcs.com/) compatible.
___
### 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) |
___
### Installation/System Requirements
| | Bare Minimum | Recommended |
|---------|---------|---------|
| 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 |
| Game Ownership | Not required to start or download mods. | ---- |
___
### How to Add Mods
Currently, adding mods to your server is tricky because there is very little documentation and it is difficult to find mod IDs. Hopefully this will change in the future, but following these steps will get it to work:
1. Open up a client copy of Arma Reforger and subscribe/download any mods you want to add to the server (at this time, I do not know of a way to find mod IDs without requiring use of the game).
2. Once done, close the game and navigate to this folder on your computer: `My Documents\My Games\ArmaReforger\addons\`
3. Aimlessly open each folder to find which mods you want to add and open each of their `ServerData.json` files in a text editor.
4. Then, on your server panel, open the `config.json` file for editing.
5. Find `"mods": []` and replace it with the following:
```json
"mods": [
{
"modId": "591AF5BDA9F7CE8B",
"name": "Capture & Hold",
"version": "1.0.0"
},
{
"modId": "9A51598BACFBFDE7",
"name": "Explosive Goats Beta",
"version": "0.5.42"
}
]
```
6. Change `modId` to equal the `id` value found at the top of the `ServerData.json` file you found.
7. Change `name` to equal the `name` value found at the **top** of the `ServerData.json` file you found.
8. Change `version` to equal the `version` value found at the top of the `ServerData.json` file you found.
9. Repeat for each mod you want to add by copy/pasting the `{}` sections like shown above. Make sure each `{}` section has a `,` after it, **except** for the last item.
The server will automatically download and run the mods you specify on startup. For mods that add scenarios, you can find the Scenario IDs listed as `gameId` in the `ServerData.json` file. Lastly, if a mod updates, you will likely have to change the `version` value to match it's new version. You may also have to delete the mod folder in the `addons/` directory to have it re-download (reports on this have been mixed).
___
### Recommended Egg Modifications
The following are highly recommended variable modifications you can make to the egg after importing it to your panel.
#### 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:
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\",",
```
#### Restrict Max Players
If you would like to restrict the maximum number of players that can join your client's server, you can change the permissions of the "Max Players" variable so that clients can only view this value (and not edit it). It's default value can also be changed, or the value can be changed on a server-by-server basis as desired.

View File

@ -0,0 +1,168 @@
{
"_comment": "Pterodactyl Arma Reforger Egg ~ Red-Thirten ~ 2022-05-20",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"name": "Arma Reforger",
"author": "rehlmgaming@gmail.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"
],
"images": [
"ghcr.io\/parkervcp\/games:source"
],
"file_denylist": [],
"startup": ".\/ArmaReforgerServer -gproj .\/addons\/data\/ArmaReforger.gproj -config .\/config.json -profile .\/profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}}",
"config": {
"files": "{\r\n \"config.json\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" \\\"region\\\"\": \" \\\"region\\\": \\\"{{server.build.env.REGION}}\\\",\",\r\n \" \\\"gameHostBindAddress\\\"\": \" \\\"gameHostBindAddress\\\": \\\"0.0.0.0\\\",\",\r\n \" \\\"gameHostBindPort\\\"\": \" \\\"gameHostBindPort\\\": {{server.build.default.port}},\",\r\n \" \\\"gameHostRegisterBindAddress\\\"\": \" \\\"gameHostRegisterBindAddress\\\": \\\"{{server.build.default.ip}}\\\",\",\r\n \" \\\"gameHostRegisterPort\\\"\": \" \\\"gameHostRegisterPort\\\": {{server.build.default.port}},\",\r\n \" \\\"adminPassword\\\"\": \" \\\"adminPassword\\\": \\\"{{server.build.env.ADMIN_PASS}}\\\",\",\r\n \" \\\"name\\\"\": \" \\\"name\\\": \\\"{{server.build.env.SERVER_NAME}}\\\",\",\r\n \" \\\"password\\\"\": \" \\\"password\\\": \\\"{{server.build.env.SERVER_PASS}}\\\",\",\r\n \" \\\"scenarioId\\\"\": \" \\\"scenarioId\\\": \\\"{{server.build.env.SCENARIO_ID}}\\\",\",\r\n \" \\\"playerCountLimit\\\"\": \" \\\"playerCountLimit\\\": {{server.build.env.MAX_PLAYERS}},\",\r\n\t\t\t\" \\\"autoJoinable\\\"\": \" \\\"autoJoinable\\\": {{server.build.env.AUTO_JOINABLE}},\",\r\n\t\t\t\" \\\"visible\\\"\": \" \\\"visible\\\": {{server.build.env.VISIBLE}},\",\r\n\t\t\t\" \\\"disableThirdPerson\\\"\": \" \\\"disableThirdPerson\\\": {{server.build.env.DISABLE_THIRD}},\",\r\n\t\t\t\" \\\"battlEye\\\"\": \" \\\"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\r\n## File: Pterodactyl Arma Reforger Egg - egg-arma-reforger.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2022\/05\/20\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\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\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous +app_update ${SRCDS_APPID} validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.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\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"dedicatedServerId\": \"\",\r\n\t\"region\": \"${REGION}\",\r\n\t\"gameHostBindAddress\": \"0.0.0.0\",\r\n\t\"gameHostBindPort\": ${SERVER_PORT},\r\n\t\"gameHostRegisterBindAddress\": \"${SERVER_IP}\",\r\n\t\"gameHostRegisterPort\": ${SERVER_PORT},\r\n\t\"adminPassword\": \"${ADMIN_PASS}\",\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"playerCountLimit\": ${MAX_PLAYERS},\r\n\t\t\"autoJoinable\": ${AUTO_JOINABLE},\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\"missionHeader\": {}\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": [
{
"name": "Automatic Updates",
"description": "Quickly checks for any server or mod updates on startup, and updates if necessary.",
"env_variable": "AUTO_UPDATE",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "boolean"
},
{
"name": "Server Region",
"description": "Region listed in the server browser. ISO 3166-1 alpha-2 codes can be used in this field.",
"env_variable": "REGION",
"default_value": "US",
"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"
},
{
"name": "Server Name",
"description": "Name displayed in the server browser.",
"env_variable": "SERVER_NAME",
"default_value": "Arma Reforger Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:255"
},
{
"name": "Max Players",
"description": "Maximum number of players allowed to join the server.",
"env_variable": "MAX_PLAYERS",
"default_value": "32",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|between:1,256"
},
{
"name": "Server Password",
"description": "Password required for clients to enter before they can join the server. Leave empty to have no password.",
"env_variable": "SERVER_PASS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:32"
},
{
"name": "Admin Password",
"description": "",
"env_variable": "ADMIN_PASS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:32"
},
{
"name": "Scenario ID",
"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",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "Auto Joinable",
"description": "Set if the session can be selected through the auto join feature.",
"env_variable": "AUTO_JOINABLE",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false"
},
{
"name": "Visible in Server Browser",
"description": "Set the visibility of the server in the Server Browser.",
"env_variable": "VISIBLE",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false"
},
{
"name": "Enable BattlEye",
"description": "Enables the anti-cheat engine on the server and requires all clients to be running it.",
"env_variable": "BATTLEYE",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false"
},
{
"name": "Disable Third Person",
"description": "",
"env_variable": "DISABLE_THIRD",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false"
},
{
"name": "[Advanced] Max FPS",
"description": "Sets a maximum FPS limit for the server, saving performance in some cases. Leave empty for no limit.",
"env_variable": "MAX_FPS",
"default_value": "120",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|integer|gt:0"
},
{
"name": "[Advanced] Log FPS Interval",
"description": "How often (in seconds) to log the FPS and other debug stats to the console. Set to 0 to disable.",
"env_variable": "LOG_INTERVAL",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|min:0"
},
{
"name": "[Repair] Validate Server Files",
"description": "\"true\" to enable; empty to disable. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.",
"env_variable": "VALIDATE",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "[Advanced] Arma Reforger Dedicated Server App ID",
"description": "Used for installation and updates. Rarely needs to be changed.",
"env_variable": "SRCDS_APPID",
"default_value": "1874900",
"user_viewable": false,
"user_editable": false,
"rules": "required|integer"
}
]
}