From d2599218772e797dd61b702ff92bc78ab0dc7582 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 13:59:45 -0800 Subject: [PATCH 01/11] Update README.md - Removed unneeded 64-bit egg reference. --- steamcmd_servers/arma/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/steamcmd_servers/arma/README.md b/steamcmd_servers/arma/README.md index 15e5389c..affb973f 100644 --- a/steamcmd_servers/arma/README.md +++ b/steamcmd_servers/arma/README.md @@ -4,5 +4,4 @@ ARMA is a series of first-person tactical military shooters, originally released ## Arma 3 * [Arma 3](arma3) -* [Arma 3 64 Bit](arma3_x64) -* [Arma 3 Headless Client](arma3_headless_client) \ No newline at end of file +* [Arma 3 Headless Client](arma3_headless_client) From 5c2f1019d58a6640cd7c24a60d1ddcfcc0cc77c9 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 14:02:53 -0800 Subject: [PATCH 02/11] Delete steamcmd_servers/arma/arma3_x64 directory - 64-bit directory no longer needed; 64-bit functionality integrated into base arma egg/image. --- steamcmd_servers/arma/arma3_x64/README.md | 20 --- .../arma/arma3_x64/egg-arma3-64-bit.json | 109 ------------ .../arma/arma3_x64/egg-arma3-config/basic.cfg | 83 --------- .../arma3_x64/egg-arma3-config/server.cfg | 158 ------------------ 4 files changed, 370 deletions(-) delete mode 100644 steamcmd_servers/arma/arma3_x64/README.md delete mode 100644 steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json delete mode 100644 steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg delete mode 100644 steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg diff --git a/steamcmd_servers/arma/arma3_x64/README.md b/steamcmd_servers/arma/arma3_x64/README.md deleted file mode 100644 index 15eb3296..00000000 --- a/steamcmd_servers/arma/arma3_x64/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Arma 3 -### From their [Site](https://arma3.com/) -Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. - -### Minimum RAM warning -This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though. - -### Additional settings -Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). -This can help is you see the server using to many cores/threads on the server. - -### Server Ports -Ports required to run the server in a table format. - -| Port | default | -|---------|---------| -| Game | 2302-2306 | -| BattleEye | 2344-2345 | - -#### Mods/Plugins may require ports to be added to the server. diff --git a/steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json b/steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json deleted file mode 100644 index a31e703d..00000000 --- a/steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v1" - }, - "exported_at": "2020-11-18T10:58:51-05:00", - "name": "Arma 3 (64-bit)", - "author": "brycea@terrahost.cloud", - "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.", - "features": null, - "image": "quay.io\/terrahost\/pterodactyl-images:game_arma3_x64", - "startup": ".\/arma3server_x64 -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/profiles -bepath=.\/battleye -cfg={{BASIC}} -config={{CONFIG}} {{CUSTOM}} -mod={{MODS}} -serverMod={{SERVERMODS}}", - "config": { - "files": "{}", - "startup": "{\r\n \"done\": \"Connected to Steam servers\",\r\n \"userInteraction\": []\r\n}", - "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n## install required packages to install arma\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates\r\n## install steamcmd\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\n## needs to be used for steamcmd to operate correctly\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install arma\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\n# 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\nchmod +x \/mnt\/server\/arma3server_x64\r\n# doesn't actually work with current 64 bit wrapper\r\nchmod +x \/mnt\/server\/arma3server", - "container": "ubuntu:20.04", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Game AppID", - "description": "", - "env_variable": "SRCDS_APPID", - "default_value": "233780", - "user_viewable": true, - "user_editable": false, - "rules": "required|numeric" - }, - { - "name": "Steam Username", - "description": "Used for installation", - "env_variable": "STEAM_USER", - "default_value": "anonymous", - "user_viewable": true, - "user_editable": false, - "rules": "required|string" - }, - { - "name": "Steam Password", - "description": "", - "env_variable": "STEAM_PASS", - "default_value": "!xNfMpAN*Lr3iMsJ", - "user_viewable": true, - "user_editable": false, - "rules": "nullable|string" - }, - { - "name": "Server Configuration File", - "description": "https:\/\/community.bistudio.com\/wiki\/server.cfg", - "env_variable": "CONFIG", - "default_value": "server.cfg", - "user_viewable": true, - "user_editable": true, - "rules": "string|nullable" - }, - { - "name": "Basic Network Config", - "description": "Network Configuration", - "env_variable": "BASIC", - "default_value": "basic.cfg", - "user_viewable": true, - "user_editable": true, - "rules": "string|nullable" - }, - { - "name": "Check for Updates", - "description": "Check for updates on server start.\r\n1 True | 0 False", - "env_variable": "UPDATE", - "default_value": "0", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|numeric" - }, - { - "name": "Mods", - "description": "Client mods with the -mods startup option", - "env_variable": "MODS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" - }, - { - "name": "Server Mods", - "description": "Server-sided mods with the -serverMods startup option.", - "env_variable": "SERVERMODS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" - }, - { - "name": "Extra Flags for SteamCMD", - "description": "Typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3", - "env_variable": "EXTRA_FLAGS", - "default_value": "", - "user_viewable": true, - "user_editable": false, - "rules": "nullable|string" - } - ] -} \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg b/steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg deleted file mode 100644 index 7b5a1c99..00000000 --- a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg +++ /dev/null @@ -1,83 +0,0 @@ -// **************************************************************************** -// * -// Arma 3 - basic.cfg * -// Version 060116 * -// * -// **************************************************************************** - -// Defines network tuning parameters -// -// This file is to be passed to the -cfg parameter on the command line for the server -// See http://community.bistudio.com/wiki/basic.cfg -// The following settings are the suggested settings - -// BANDWIDTH SETTINGS - -// Bandwidth the server is guaranteed to have (in bps) -// General guideline is NumberOfPlayers * 256kb -// Default: 131072 -MinBandwidth=5120000; -// Bandwidth the server can never go above (in bps) -// For a single server, use full network speed; decrease when running multiple servers -MaxBandwidth=10240000; - -// PACKET SETTINGS - -// Maximum number of packets per frame. -// Increasing the value potentially decreases lag, but increases desync -// Default: 128 -MaxMsgSend=2048; -// Maximum payload of guaranteed packet (in b) -// Small messages are packed to larger packets -// Guaranteed packets are used for non-repetitive events, like shooting -// Lower value means more packets are sent, so less events will get combined -// Default: 512 -MaxSizeGuaranteed=512; -// Maximum payload of non-guaranteed packet (in b) -// Increasing this value may improve bandwidth requirement, but may also increase lag -// Largest factor in desync -// Guidance is half of MaxSizeGuaranteed -// Default: 256 -MaxSizeNonguaranteed=256; -// Maximal size of a packet sent over the network -// Only necessary if ISP forces lower packet size and there are connectivity issues -// Default: 1400 -// class sockets{maxPacketSize=1400}; - -// SMOOTHNESS SETTINGS - -// Minimal error required to send network updates for far units -// Smaller values will make for smoother movement at long ranges, but will increase network traffic -// Default: 0.003 -MinErrorToSend=0.01; -// Minimal error required to send network updates for near units -// Using larger value can reduce traffic sent for near units -// Also controls client to server traffic -// Default: 0.01 -MinErrorToSendNear=0.02; - -// GEOLOCATION SETTINGS - -// Server latitude -serverLatitude=52; -serverLatitudeAuto=52; - -// Server Longitude -serverLongitude=0; -serverLongitudeAuto=0; -// MISC -// View Distance (not sure if this actually works) -viewDistance=10000; - -// Maximum size (in b) for custom face or sound files -// Default: 0 -MaxCustomFileSize=65536; -// Server language -language="English"; -steamLanguage="English"; -// Adapter -adapter=-1; -// Windowed mode -Windowed=0; - -3D_Performance=1.000000; \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg b/steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg deleted file mode 100644 index 2615bf70..00000000 --- a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg +++ /dev/null @@ -1,158 +0,0 @@ -// **************************************************************************** -// * -// Arma 3 - server.cfg * -// Version 060117 * -// * -// **************************************************************************** - -// ArmA 3 Server Config File -// -// More info about parameters: -// https://community.bistudio.com/wiki/server.cfg - - -// GENERAL SETTINGS - -// Hostname for server. -hostname = "Arma 3 Server"; - -// Server password - for private servers. -//password = "arma3pass"; - -// Admin Password -//passwordAdmin = "ADMINPASSWORD"; - -// Auto-admin -admins[] = {""}; - -// Server Slots -maxPlayers = 32; - -// Logfile -logFile = "arma3server.log"; - -// Minimum Required Client Build -//requiredBuild = 95691 - -class Missions -{ - class Mission1 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission2 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission3 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission4 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; -}; - -// Message of the Day (MOTD) -motd[] = { - "Welcome to My Arma 3 Server", - "TS3 Server: teamspeak.somewhere.com", - "Web: www.example.com" -}; - -// MOTD Interval (Seconds) -motdInterval = 30; - - -// VOTING - -// Server Mission Start -// minimum number of clients before server starts mission -voteMissionPlayers = 1; - -// Accepted Vote Threshold -// 0.33 = 33% clients. -voteThreshold = 0.33; - -// INGAME SETTINGS - -// Disable Voice over Net (VoN) -// 0 = voice enabled. -// 1 = voice disabled. -disableVoN = 0; - -// VoN Codec Quality -// 0-10 = 8kHz (narrowband). -// 11-20 = 16kHz (wideband). -// 21-30 = 32kHz (ultrawideband). -vonCodecQuality = 3; - -// Persistent Battlefield -// 0 = disable. -// 1 = enable. -persistent = 1; - -// Time Stamp Format -// none, short, full -timeStampFormat = "short"; - -// Server Statistics -// Set this to 0 to opt-out! More info: https://community.bistudio.com/wiki/Arma_3_Analytics -statisticsEnabled = 1; - -// SERVER SECURITY/ANTI HACK - -// Verify Signitures for Client Addons -// 0 = off. -// 1 = weak protection (depricated). -// 2 = full protection. -verifySignatures = 2; - -// Secure Player ID -// 1 = Server warning message. -// 2 = Kick client. -requiredSecureId = 2; - -// Kick Duplicate Player IDs -kickDuplicate = 1; - -// BattlEye Anti-Cheat -// 0 = disable -// 1 = enable -BattlEye = 1; - -// Allowed File Extentions -allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; - -// SCRIPTING ISSUES -onUserConnected = ""; -onUserDisconnected = ""; -doubleIdDetected = ""; - -// SIGNATURE VERIFICATION -// kick = kick (_this select 0) -// ban = ban (_this select 0) -onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; -onDifferentData = ""; - -// HEADLESS CLIENT SUPPORT -// specify ip-adresses of allowed headless clients -headlessClients[] = {"127.0.0.1", "172.18.0.1"}; -localClient[] = {"127.0.0.1", "172.18.0.1"}; - -// BattlEye Anti-Cheat License -// 0 = decline -// 1 = accept -battleyeLicense = 1; From 21b3e30d5306cfbe3ff34ecb189090aa3577933f Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 14:22:00 -0800 Subject: [PATCH 03/11] Update egg-arma3.json - Updated to latest Pterodactyl egg format - Made startup command a little more robust, and added a server binary variable to allow for the choice of 32-bit, 64-bit, and profiling binaries to be run within the same egg (as opposed to a bunch of separate eggs). - Adjusted startup complete message to more accurately represent when the server is started. It also is not dependent on if the user uses the -noLogs extra startup flag (which the previous complete message did). - Install script was adjusted slightly: No longer does missing username check, because "anonymous" user cannot be used to download Arma 3. Also sets correct permissions for the .cfg files downloaded. Adds 64-bit libraries. Lastly, allows for extra steam flags to be passed to allow beta builds to be downloaded. -- Variables -- - Changed game ID to be numeric only. Also hidden from end-user for cleanliness. - Added more verbose descriptions for Steam username and password fields to make it more clear what is required, and what is visible to the end-user. - Added server binary field to allow flexibility. - Removed Steam Auth Code field because it isn't really practical. - Cleaned up Mods, ServerMods, server.cfg, and basic.cfg fields. - Added server update and mods download/update fields. - Added "Set Mods to Lowercase" field incase the user manually uploads a mod, which likely has uppercase files/folders. The Linux Arma 3 server does not like to load any files/folders with uppercase characters. --- steamcmd_servers/arma/arma3/egg-arma3.json | 183 +++++++++++++-------- 1 file changed, 112 insertions(+), 71 deletions(-) diff --git a/steamcmd_servers/arma/arma3/egg-arma3.json b/steamcmd_servers/arma/arma3/egg-arma3.json index 66496d91..b46d65e5 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3.json +++ b/steamcmd_servers/arma/arma3/egg-arma3.json @@ -1,108 +1,149 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2019-12-26T15:50:38-05:00", + "exported_at": "2021-01-26T21:50:23+00:00", "name": "Arma 3", - "author": "daave@aaathats3as.com", + "author": "rehlmgaming@gmail.com", "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.", - "image": "quay.io\/parkervcp\/pterodactyl-images:game_arma3", - "startup": ".\/arma3server -ip=0.0.0.0 -port={{SERVER_PORT}} -cfg={{BASIC}} -config={{CONFIG}} {{CUSTOM}} -mod=\"{{MODS}}\" -serverMod=\"{{SERVERMODS}}\"", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:game_arma3" + ], + "file_denylist": "", + "startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/battleye -cfg=\"{{BASIC}}\" -config=\"{{CONFIG}}\" {{STARTUP_PARAMS}} -mod=\"{{MODS}}\" -serverMod=\"{{SERVERMODS}}\"", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"Connected to Steam servers\",\r\n \"userInteraction\": []\r\n}", + "startup": "{\r\n \"done\": \"Host identity created.\",\r\n \"userInteraction\": []\r\n}", "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\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\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg", + "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\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} +force_install_dir \/mnt\/server +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} validate +quit\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## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg\r\nchmod 755 basic.cfg server.cfg", "container": "debian:buster-slim", "entrypoint": "bash" } }, "variables": [ { - "name": "Game App ID", - "description": "Steam CMD App ID.", - "env_variable": "SRCDS_APPID", + "name": "Arma 3 Dedicated Server App ID", + "description": "Used for installation and updates.", + "env_variable": "STEAMCMD_APPID", "default_value": "233780", - "user_viewable": 1, - "user_editable": 0, - "rules": "required|alpha_dash|between:1,100" + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric" }, { - "name": "Config", - "description": "Server config", - "env_variable": "CONFIG", - "default_value": "server.cfg", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Custom Command Line Option.", - "description": "Put -autoinit or related things in here :)", - "env_variable": "CUSTOM", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "SERVERMODS", - "description": "This is where you put the files that go along with the -serverMods startup option.", - "env_variable": "SERVERMODS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Mods", - "description": "This is where you put mods that go along with the -mods startup option", - "env_variable": "MODS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Steam User", - "description": "A Steam username with Arma3 on the account.", + "name": "Steam Username", + "description": "Used for installation and updates. Account does not need to own Arma 3, but must be a valid Steam account (anonymous login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. *This info is not visible to the server owner.*", "env_variable": "STEAM_USER", - "default_value": "anonymous", - "user_viewable": 0, - "user_editable": 0, + "default_value": "your_steam_username", + "user_viewable": false, + "user_editable": false, "rules": "required|string" }, { "name": "Steam Password", - "description": "Steam User Password", + "description": "Used for installation and updates. Steam Guard must be TURNED OFF for install to complete successfully. *This info is not visible to the server owner.*", "env_variable": "STEAM_PASS", - "default_value": "", - "user_viewable": 0, - "user_editable": 0, - "rules": "nullable|string" + "default_value": "your_steam_password", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" }, { - "name": "Basic", - "description": "Basic network config", - "env_variable": "BASIC", - "default_value": "basic.cfg", - "user_viewable": 1, - "user_editable": 1, + "name": "Server Binary", + "description": "Server binary to call on server start. (32-bit: arma3server | 64-bit: arma3server_x64)", + "env_variable": "SERVER_BINARY", + "default_value": "arma3server_x64", + "user_viewable": true, + "user_editable": true, + "rules": "required|string" + }, + { + "name": "Extra Startup Parameters", + "description": "See https:\/\/community.bistudio.com\/wiki\/Arma_3_Startup_Parameters for more info.", + "env_variable": "STARTUP_PARAMS", + "default_value": "", + "user_viewable": true, + "user_editable": true, "rules": "string|nullable" }, { - "name": "Steam Auth Code", - "description": "Steam Auth Code only when you're using Steam Auth", - "env_variable": "STEAM_AUTH", + "name": "Server Configuration File", + "description": "See https:\/\/community.bistudio.com\/wiki\/server.cfg for more info.", + "env_variable": "CONFIG", + "default_value": "server.cfg", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable" + }, + { + "name": "Basic Network Configuration", + "description": "See https:\/\/community.bistudio.com\/wiki\/basic.cfg for more info.", + "env_variable": "BASIC", + "default_value": "basic.cfg", + "user_viewable": true, + "user_editable": true, + "rules": "required|string" + }, + { + "name": "Mods", + "description": "Mod folders to be used with the -mods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)", + "env_variable": "MODS", "default_value": "", - "user_viewable": 0, - "user_editable": 0, + "user_viewable": true, + "user_editable": true, "rules": "nullable|string" + }, + { + "name": "Server Mods", + "description": "Server-side only mod folders to be used with the -serverMods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)", + "env_variable": "SERVERMODS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Extra Flags for SteamCMD", + "description": "Only used when checking for server updates, and typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3", + "env_variable": "STEAMCMD_EXTRA_FLAGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Check for Server Updates", + "description": "Check for server updates on server start.\r\n1 True | 0 False", + "env_variable": "UPDATE_SERVER", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "boolean" + }, + { + "name": "Steam Workshop Mods to Download\/Update", + "description": "[*Only works if the host owns Arma 3] Comma separated list of Steam Workshop mod IDs to download\/update on server start. (ex. 450814997,463939057) Each mod will be downloaded to the root directory with the folder format: @ModIdNumber", + "env_variable": "UPDATE_WORKSHOP", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable" + }, + { + "name": "Set Mods to Lowercase", + "description": "On server start, goes through all the mod folders listed in \"Mods\" & \"Server Mods\", and makes sure every folder and file is lowercase (to prevent errors). This is particularly useful to run ONCE after copying a mod from a Windows machine to the server, or if mods seem to not be loading.", + "env_variable": "MODS_LOWERCASE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "boolean" } ] -} \ No newline at end of file +} From 9a94845c4bf9e109340f147a3311b719cd038e8d Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 14:28:42 -0800 Subject: [PATCH 04/11] Update basic.cfg - Cleaned up informational comments at the top of file. - Left "suggested" values, but commented most of them out to allow a fresh install to have developer default values. Advanced users can uncomment settings after installation if they so choose to. - Removed defunct or non-relevant values. --- .../arma/arma3/egg-arma3-config/basic.cfg | 52 +++++-------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg b/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg index 7b5a1c99..aa2c8aa4 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg +++ b/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg @@ -1,32 +1,34 @@ // **************************************************************************** // * -// Arma 3 - basic.cfg * -// Version 060116 * +// ArmA 3 Basic Network Config File - basic.cfg * +// * +// More info about parameters: * +// https://community.bistudio.com/wiki/basic.cfg * // * // **************************************************************************** -// Defines network tuning parameters +// Defines network tuning parameters. // -// This file is to be passed to the -cfg parameter on the command line for the server -// See http://community.bistudio.com/wiki/basic.cfg -// The following settings are the suggested settings +// This file is to be passed to the -cfg parameter on the command line for the server. +// The following settings are the suggested settings. +// Some settings are disabled (commented out) by default. Remove the // behind a setting to activate it. // BANDWIDTH SETTINGS // Bandwidth the server is guaranteed to have (in bps) // General guideline is NumberOfPlayers * 256kb // Default: 131072 -MinBandwidth=5120000; +//MinBandwidth=5120000; // Bandwidth the server can never go above (in bps) // For a single server, use full network speed; decrease when running multiple servers -MaxBandwidth=10240000; +//MaxBandwidth=10240000; // PACKET SETTINGS // Maximum number of packets per frame. // Increasing the value potentially decreases lag, but increases desync // Default: 128 -MaxMsgSend=2048; +//MaxMsgSend=2048; // Maximum payload of guaranteed packet (in b) // Small messages are packed to larger packets // Guaranteed packets are used for non-repetitive events, like shooting @@ -42,42 +44,16 @@ MaxSizeNonguaranteed=256; // Maximal size of a packet sent over the network // Only necessary if ISP forces lower packet size and there are connectivity issues // Default: 1400 -// class sockets{maxPacketSize=1400}; +//class sockets{maxPacketSize=1400}; // SMOOTHNESS SETTINGS // Minimal error required to send network updates for far units // Smaller values will make for smoother movement at long ranges, but will increase network traffic // Default: 0.003 -MinErrorToSend=0.01; +//MinErrorToSend=0.01; // Minimal error required to send network updates for near units // Using larger value can reduce traffic sent for near units // Also controls client to server traffic // Default: 0.01 -MinErrorToSendNear=0.02; - -// GEOLOCATION SETTINGS - -// Server latitude -serverLatitude=52; -serverLatitudeAuto=52; - -// Server Longitude -serverLongitude=0; -serverLongitudeAuto=0; -// MISC -// View Distance (not sure if this actually works) -viewDistance=10000; - -// Maximum size (in b) for custom face or sound files -// Default: 0 -MaxCustomFileSize=65536; -// Server language -language="English"; -steamLanguage="English"; -// Adapter -adapter=-1; -// Windowed mode -Windowed=0; - -3D_Performance=1.000000; \ No newline at end of file +//MinErrorToSendNear=0.02; From dc0c5658243a616e4e02d07cc4ce5c2b3b334538 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 14:32:33 -0800 Subject: [PATCH 05/11] Update server.cfg - Cleaned up informational comments. - Reorganized the list of settings to be more readable and grouped related settings. More advanced (less touched) settings were moved to the bottom of the file. - Changed some default values to better ones. - Added some missing, yet common, settings. --- .../arma/arma3/egg-arma3-config/server.cfg | 214 +++++++++--------- 1 file changed, 111 insertions(+), 103 deletions(-) diff --git a/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg b/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg index 2615bf70..20c439a2 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg +++ b/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg @@ -1,17 +1,16 @@ // **************************************************************************** // * -// Arma 3 - server.cfg * -// Version 060117 * +// ArmA 3 Server Config File - server.cfg * +// * +// More info about parameters: * +// https://community.bistudio.com/wiki/server.cfg * // * // **************************************************************************** -// ArmA 3 Server Config File -// -// More info about parameters: -// https://community.bistudio.com/wiki/server.cfg +// Some settings are not listed here; see link above for extensive list. +// Some settings are disabled (commented out). Remove the // to enable them. - -// GENERAL SETTINGS +// === GLOBAL SETTINGS === // Hostname for server. hostname = "Arma 3 Server"; @@ -22,45 +21,16 @@ hostname = "Arma 3 Server"; // Admin Password //passwordAdmin = "ADMINPASSWORD"; -// Auto-admin -admins[] = {""}; +// Whitelisted Admins - Clients that do not need a password to login. +//admins[] = { "UID OR steamID64", "0123456789", "9876543210" }; -// Server Slots -maxPlayers = 32; +// Server Command Password - for scripting and certain mods. +//serverCommandPassword = "COMMANDPASSWORD"; -// Logfile -logFile = "arma3server.log"; - -// Minimum Required Client Build -//requiredBuild = 95691 - -class Missions -{ - class Mission1 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission2 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission3 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission4 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; -}; +// Log File +logFile = "server_console.log"; +// RPT File Timestamp Format - none | short | full +timeStampFormat = "short"; // Message of the Day (MOTD) motd[] = { @@ -68,91 +38,129 @@ motd[] = { "TS3 Server: teamspeak.somewhere.com", "Web: www.example.com" }; +// MOTD Interval - Seconds between each message. +motdInterval = 5; -// MOTD Interval (Seconds) -motdInterval = 30; +// Missions Cycle +class Missions +{ + class Mission1 + { + template = MP_ZGM_m11.Altis; + difficulty = "Regular"; + class Params {}; + }; + class Mission2 + { + template = MP_ZGM_m12.Stratis; + difficulty = "Recruit"; + class Params {}; + }; +}; +// Whitelisted Missions - Only these missions can be selected on the mission select screen. +//missionWhitelist[] = { "MP_ZGM_m11.Altis", "MP_ZGM_m12.Stratis" }; -// VOTING +// === JOINING RULES === -// Server Mission Start -// minimum number of clients before server starts mission -voteMissionPlayers = 1; +// Server Slots +maxPlayers = 32; -// Accepted Vote Threshold -// 0.33 = 33% clients. -voteThreshold = 0.33; +// Enable BattlEye +BattlEye = 1; -// INGAME SETTINGS +// Addon Signature Verification - Verifies .pbos against .bisign files - 0 = Disabled | 2 = Enabled (v2) +verifySignatures = 2; -// Disable Voice over Net (VoN) -// 0 = voice enabled. -// 1 = voice disabled. +// Kick Duplicate Player IDs - 0 = No | 1 = Yes +kickDuplicate = 1; +// Allow File Patching - 0 = No Clients | 1 = Headless Clients only | 2 = All Clients +allowedFilePatching = 0; +// Minimum Required Client Version +//requiredBuild = 999999999; +// LAN Mode +loopback = 0; +// UPNP Router Mode +upnp = 0; + +// Headless Client IP Whitelists +headlessClients[] = { "127.0.0.1" }; +localClient[] = { "127.0.0.1" }; + + +// === INGAME SETTINGS === + +// Advanced Flight Model Enforcement - 0 = Up to player | 1 = Advanced model enforced | 2 = Simple model enforced +forceRotorLibSimulation = 0; + +// Disable In-Game Voice Chat (Voice over Network) disableVoN = 0; - +// VoN Codec - 0 = older SPEEX codec | 1 = newer IETF standard OPUS codec +vonCodec = 1; // VoN Codec Quality // 0-10 = 8kHz (narrowband). // 11-20 = 16kHz (wideband). // 21-30 = 32kHz (ultrawideband). -vonCodecQuality = 3; +vonCodecQuality = 10; -// Persistent Battlefield -// 0 = disable. -// 1 = enable. -persistent = 1; +// Persistent Mission - Keeps mission running when all players disconnect. +persistent = 0; -// Time Stamp Format -// none, short, full -timeStampFormat = "short"; +// Allow Drawing in Map +drawingInMap = 1; -// Server Statistics -// Set this to 0 to opt-out! More info: https://community.bistudio.com/wiki/Arma_3_Analytics -statisticsEnabled = 1; +// Enforce Difficulty - Use "Custom" for ServerProfile-defined custom difficulty +forcedDifficulty = "regular"; -// SERVER SECURITY/ANTI HACK -// Verify Signitures for Client Addons -// 0 = off. -// 1 = weak protection (depricated). -// 2 = full protection. -verifySignatures = 2; +// === VOTING === -// Secure Player ID -// 1 = Server warning message. -// 2 = Kick client. -requiredSecureId = 2; +// Allowed Vote Commands - Un-comment this to prevent voted commands (like vote-kick) +//allowedVoteCmds[] = {}; -// Kick Duplicate Player IDs -kickDuplicate = 1; +// Start mission-voting when X number of players connect. +voteMissionPlayers = 1; -// BattlEye Anti-Cheat -// 0 = disable -// 1 = enable -BattlEye = 1; +// Vote Threshold - Percentage of votes needed to confirm a vote. +voteThreshold = 0.33; -// Allowed File Extentions -allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; -// SCRIPTING ISSUES +// === CLIENT NETWORK HEALTH === + +// Seconds to wait before disconnecting a user which temporarily lost connection. +disconnectTimeout = 90; +// Max Desync Value +maxdesync = 150; +// Max Ping (ms) +maxping = 200; +// Max Packet Loss +maxpacketloss = 50; + +// Action to Take on Slow Network (defined above) +// Defines if {, , , } will be logged (0) or kicked (1) +kickClientsOnSlowNetwork[] = { 1, 1, 0, 1 }; + +// Kick Duration (temp-ban) on Network Kick +// Options {, , , } -- Timeout {>0 seconds; -1 until missionEnd; -2 until serverRestart} +kickTimeout[] = { {0, -1},{1, 1},{2, 5},{3, 1} }; + + +// === SERVER SIDE SCRIPTING === +// See https://community.bistudio.com/wiki/ArmA:_Server_Side_Scripting + onUserConnected = ""; onUserDisconnected = ""; doubleIdDetected = ""; -// SIGNATURE VERIFICATION -// kick = kick (_this select 0) -// ban = ban (_this select 0) onUnsignedData = "kick (_this select 0)"; onHackedData = "kick (_this select 0)"; onDifferentData = ""; -// HEADLESS CLIENT SUPPORT -// specify ip-adresses of allowed headless clients -headlessClients[] = {"127.0.0.1", "172.18.0.1"}; -localClient[] = {"127.0.0.1", "172.18.0.1"}; - -// BattlEye Anti-Cheat License -// 0 = decline -// 1 = accept -battleyeLicense = 1; +// Only allow files with these extensions to be loaded via loadFile command +allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; +// Only allow files with these extensions to be loaded via preprocessFile/preprocessFileLineNumber commands +allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; +// Only allow files with these extensions to be loaded via HTMLLoad command +allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; +// Leave commented to let missions/campaigns/addons decide what URIs are supported. Un-comment to define server-level restrictions for URIs +//allowedHTMLLoadURIs = {}; From 163550486f7276a92ac60147533d25d263183228 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 15:11:36 -0800 Subject: [PATCH 06/11] Update README.md - Added Installation Requirements. - Added CPU usage information. - Added more info and removed spelling errors from Additional Settings. - Corrected default server ports list. --- steamcmd_servers/arma/arma3/README.md | 29 ++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/steamcmd_servers/arma/arma3/README.md b/steamcmd_servers/arma/arma3/README.md index 15eb3296..b31c554e 100644 --- a/steamcmd_servers/arma/arma3/README.md +++ b/steamcmd_servers/arma/arma3/README.md @@ -1,20 +1,31 @@ # Arma 3 ### From their [Site](https://arma3.com/) -Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. +Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. -### Minimum RAM warning -This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though. +### Installation Requirements +- A valid, real Steam account, with Steam Guard turned off, is required to install the server (default "anonymous" login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. This account *does not* need to own Arma 3. +- For automatic Steam Workshop mod downloading to work, the Steam account *does* need to own Arma 3. This is, of course, optional functionality, and mods can be manually uploaded to the server if desired. -### Additional settings +### Minimum RAM Warning +This server requires about 2048 MB to run properly. + +### CPU Usage Information +ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary *can* run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is *very* limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU alloted to it for AI processing seems to be limited as well. Therefore, a [headless client](https://community.bistudio.com/wiki/Arma_3_Headless_Client) ***and*** a properly written mission file are highly recommended if large amounts of AI units will be used. An Arma 3 Headless Client Egg can be found [here](arma3_headless_client). + +### Additional Settings Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). -This can help is you see the server using to many cores/threads on the server. +These can help you fine tune how the server will behave during runtime. + +*Note: The `-maxMem=` flag is currently known to cause an unknown segmentaion fault crash on startup. Other hardware related flags may cause similar behavior.* ### Server Ports -Ports required to run the server in a table format. +Default server ports. It is [recommended](https://community.bistudio.com/wiki/Arma_3:_Dedicated_Server#Port_Forwarding) that each server be 100 ports seperate from each other. -| Port | default | +| Port | Default | |---------|---------| -| Game | 2302-2306 | -| BattleEye | 2344-2345 | +| Arma 3 Game & VON | 2302 | +| Steam Query (+1) | 2303 | +| Steam Port (+2) | 2304 | +| BattleEye (+4) | 2306 | #### Mods/Plugins may require ports to be added to the server. From 2c792b5959c7a02b3d377645b94114d9b196a142 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 15:14:22 -0800 Subject: [PATCH 07/11] Update README.md Added clarity that server supports both 32 and 64-bit binaries. --- steamcmd_servers/arma/arma3/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/steamcmd_servers/arma/arma3/README.md b/steamcmd_servers/arma/arma3/README.md index b31c554e..13487aee 100644 --- a/steamcmd_servers/arma/arma3/README.md +++ b/steamcmd_servers/arma/arma3/README.md @@ -1,4 +1,4 @@ -# Arma 3 +# Arma 3 (32 or 64-bit) ### From their [Site](https://arma3.com/) Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. From 65645401e5ab239cb4d3742ed2724bce16ab8d61 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 15:45:59 -0800 Subject: [PATCH 08/11] Update egg-arma3-headless-client.json - Updated to latest Pterodactyl egg format - Made startup command a little more robust, and added a server binary variable to allow for the choice of 32-bit, 64-bit, and profiling binaries to be run within the same egg (as opposed to a bunch of separate eggs). - Install script was adjusted slightly: No longer does missing username check, because "anonymous" user cannot be used to download Arma 3. Also adds 64-bit libraries. Lastly, allows for extra steam flags to be passed to allow beta builds to be downloaded. -- Variables -- - Changed game ID to be numeric only. Also hidden from end-user for cleanliness. - Added more verbose descriptions for Steam username and password fields to make it more clear what is required, and what is visible to the end-user. - Added server binary field to allow flexibility. - Removed Steam Auth Code field because it isn't really practical. - Cleaned up Connect IP, Connect Password, Mods, and ServerMods fields. - Added server update and mods download/update fields. - Added "Set Mods to Lowercase" field incase the user manually uploads a mod, which likely has uppercase files/folders. The Linux Arma 3 server does not like to load any files/folders with uppercase characters. --- .../egg-arma3-headless-client.json | 176 +++++++++++------- 1 file changed, 113 insertions(+), 63 deletions(-) diff --git a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json index 775b722a..e75297b2 100644 --- a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json +++ b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json @@ -1,14 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2019-12-26T15:50:34-05:00", + "exported_at": "2021-01-26T21:54:10+00:00", "name": "Arma 3 Headless Client", - "author": "brainp4in@blueberry-hood-clan.de", + "author": "rehlmgaming@gmail.com", "description": "Headless Clients are used to offload AI calculations from the Arma 3 Server.", - "image": "quay.io\/parkervcp\/pterodactyl-images:game_arma3", - "startup": ".\/arma3server -client -connect={{SERVERIP}} -port={{SERVERPORT}} {{CUSTOM}} -mod=\"{{MODS}}\"", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:game_arma3" + ], + "file_denylist": "", + "startup": ".\/{{SERVER_BINARY}} -client -connect={{CONNECT_IP}} -port={{CONNECT_PORT}} -password=\"{{CONNECT_PASSWORD}}\" -profiles=.\/serverprofile -bepath=.\/battleye {{STARTUP_PARAMS}} -mod=\"{{MODS}}\"", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Client connected\",\r\n \"userInteraction\": []\r\n}", @@ -17,83 +22,128 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\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\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg", - "container": "ubuntu:18.04", + "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\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} +force_install_dir \/mnt\/server +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} validate +quit\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## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"", + "container": "debian:buster-slim", "entrypoint": "bash" } }, "variables": [ { - "name": "Game App ID", - "description": "Steam CMD App ID.", - "env_variable": "SRCDS_APPID", + "name": "Arma 3 Dedicated Server App ID", + "description": "Used for installation and updates.", + "env_variable": "STEAMCMD_APPID", "default_value": "233780", - "user_viewable": 1, - "user_editable": 0, - "rules": "required|alpha_dash|between:1,100" + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric" }, { - "name": "Server IP", - "description": "IP address of the Arma 3 server that should be supported by the Headless Client.", - "env_variable": "SERVERIP", - "default_value": "127.0.0.1", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:30" - }, - { - "name": "Server Port", - "description": "Port of the Arma 3 server that should be supported by the Headless Client.", - "env_variable": "SERVERPORT", - "default_value": "2302", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:5" - }, - { - "name": "Custom Command Line Option.", - "description": "Put -autoinit or related things in here :)", - "env_variable": "CUSTOM", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Mods", - "description": "This is where you put mods that go along with the -mods startup option", - "env_variable": "MODS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Steam User", - "description": "A Steam username with Arma3 on the account.", + "name": "Steam Username", + "description": "Used for installation and updates. Account does not need to own Arma 3, but must be a valid Steam account (anonymous login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. *This info is not visible to the server owner.*", "env_variable": "STEAM_USER", - "default_value": "anonymous", - "user_viewable": 0, - "user_editable": 0, + "default_value": "your_steam_username", + "user_viewable": false, + "user_editable": false, "rules": "required|string" }, { "name": "Steam Password", - "description": "Steam User Password", + "description": "Used for installation and updates. Steam Guard must be TURNED OFF for install to complete successfully. *This info is not visible to the server owner.*", "env_variable": "STEAM_PASS", + "default_value": "your_steam_password", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" + }, + { + "name": "Server Binary", + "description": "Server binary to call on server start. (32-bit: arma3server | 64-bit: arma3server_x64)", + "env_variable": "SERVER_BINARY", + "default_value": "arma3server_x64", + "user_viewable": true, + "user_editable": true, + "rules": "required|string" + }, + { + "name": "Connect IP", + "description": "IP address of the server to connect to.", + "env_variable": "CONNECT_IP", + "default_value": "127.0.0.1", + "user_viewable": true, + "user_editable": true, + "rules": "required|ip" + }, + { + "name": "Connect Port", + "description": "Open port of the server to connect to.", + "env_variable": "CONNECT_PORT", + "default_value": "2302", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric" + }, + { + "name": "Connect Password", + "description": "If the server you are connecting to has a password, enter it here.", + "env_variable": "CONNECT_PASSWORD", "default_value": "", - "user_viewable": 0, - "user_editable": 0, + "user_viewable": true, + "user_editable": true, "rules": "nullable|string" }, { - "name": "Steam Auth Code", - "description": "Steam Auth Code only when you're using Steam Auth", - "env_variable": "STEAM_AUTH", + "name": "Mods", + "description": "Mod folders to be used with the -mods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)", + "env_variable": "MODS", "default_value": "", - "user_viewable": 0, - "user_editable": 0, + "user_viewable": true, + "user_editable": true, "rules": "nullable|string" + }, + { + "name": "Extra Startup Parameters", + "description": "See https:\/\/community.bistudio.com\/wiki\/Arma_3_Startup_Parameters for more info.", + "env_variable": "STARTUP_PARAMS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Extra Flags for SteamCMD", + "description": "Only used when checking for server updates, and typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3", + "env_variable": "STEAMCMD_EXTRA_FLAGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Check for Server Updates", + "description": "Check for server updates on server start.\r\n1 True | 0 False", + "env_variable": "UPDATE_SERVER", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "boolean" + }, + { + "name": "Steam Workshop Mods to Download\/Update", + "description": "[*Only works if the host owns Arma 3] Comma separated list of Steam Workshop mod IDs to download\\\/update on server start. (ex. 450814997,463939057) Each mod will be downloaded to the root directory with the folder format: @ModIdNumber", + "env_variable": "UPDATE_WORKSHOP", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Set Mods to Lowercase", + "description": "On server start, goes through all the mod folders listed in \"Mods\" & \"Server Mods\", and makes sure every folder and file is lowercase (to prevent errors). This is particularly useful to run ONCE after copying a mod from a Windows machine to the server, or if mods seem to not be loading.", + "env_variable": "MODS_LOWERCASE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "boolean" } ] -} \ No newline at end of file +} From 03f2d20a96cb62313e9e24442548cb84c7862808 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 16:03:38 -0800 Subject: [PATCH 09/11] Update README.md - Generally cleaned it up and made it more clear what a Headless Client does. - Added Installation Requirements - Cleaned up, and removed spelling errors in, the Additional Settings section. --- .../arma/arma3_headless_client/README.md | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/steamcmd_servers/arma/arma3_headless_client/README.md b/steamcmd_servers/arma/arma3_headless_client/README.md index c674f030..a77ff1af 100644 --- a/steamcmd_servers/arma/arma3_headless_client/README.md +++ b/steamcmd_servers/arma/arma3_headless_client/README.md @@ -1,21 +1,27 @@ # Arma 3 Headless Client ### From their [Site](https://community.bistudio.com/wiki/Arma_3_Headless_Client) What is a Headless Client (HC) used for? -* Headless Client is used to offload AI calculations from the server -* Headless Client is integrated into game client and dedicated server executable (WIndows and Linux, use -client parameter) -* The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients IPs in the server.cfg, +* Headless Client is used to offload AI calculations from the server [to improve the main server's performance]. +* Headless Client is integrated into dedicated server executable, and uses the `-client` parameter to activate. +* The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients' IPs in the `server.cfg`. ### But why? -If you host an Arma 3 Server with lots of AI in it, the Server FPS will drop fast. -Since the server files are only 32 Bit you will need some kind of magical assistant to prevent slow AI. +If you host an Arma 3 Server with lots of AI in it, the Server FPS will drop fast. The headless client helps alleviate the AI's stress on the server. -### Minimum RAM warning -This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though. +### Installation Requirements +- A valid, real Steam account, with Steam Guard turned off, is required to install the client (default "anonymous" login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. This account *does not* need to own Arma 3. +- The Arma 3 server this client is connecting to **must** be running a properly written mission file that accepts and utilizes headless clients. If you want to know how to implement, take a look at the Wiki [here](https://community.bistudio.com/wiki/Arma_3_Headless_Client#Spawning_the_AI) or at a guide in the A3 Forums [here](https://forums.bohemia.net/forums/topic/178434-arma3-headless-client-guide/). +- For automatic Steam Workshop mod downloading to work, the Steam account *does* need to own Arma 3. This is, of course, optional functionality, and mods can be manually uploaded to the client if desired. -### Additional settings -Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). -This can help is you see the server using to many cores/threads on the server. -If you want to know how to implement, take a look at the Wiki [here](https://community.bistudio.com/wiki/Arma_3_Headless_Client#Spawning_the_AI) or at a guide in the A3 Forums [here](https://forums.bohemia.net/forums/topic/178434-arma3-headless-client-guide/). +### Minimum RAM Warning +This client requires about 2048 MB to run properly. + +### Additional Settings +Additional client flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). +These can help you fine tune how the client will behave during runtime. + +*Note: The `-maxMem=` flag is currently known to cause an unknown segmentaion fault crash on startup. Other hardware related flags may cause similar behavior.* ### Server Ports -Since this is basically a client, this Egg does not need a port. \ No newline at end of file +Since this is basically a client, this Egg does not need a port. +Therefore, the port assigned to this Egg goes unused. From 12ee708965f6e558eff308f5f07c4efa62e4554b Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 20:51:55 -0800 Subject: [PATCH 10/11] Update egg-arma3.json Removed currently unsupported `file_denylist` variable for now. --- steamcmd_servers/arma/arma3/egg-arma3.json | 1 - 1 file changed, 1 deletion(-) diff --git a/steamcmd_servers/arma/arma3/egg-arma3.json b/steamcmd_servers/arma/arma3/egg-arma3.json index b46d65e5..308acb5f 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3.json +++ b/steamcmd_servers/arma/arma3/egg-arma3.json @@ -12,7 +12,6 @@ "images": [ "quay.io\/parkervcp\/pterodactyl-images:game_arma3" ], - "file_denylist": "", "startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/battleye -cfg=\"{{BASIC}}\" -config=\"{{CONFIG}}\" {{STARTUP_PARAMS}} -mod=\"{{MODS}}\" -serverMod=\"{{SERVERMODS}}\"", "config": { "files": "{}", From 868bc1e8eaa1102a04b67d27f7cc8f3e447e2849 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Jan 2021 20:52:15 -0800 Subject: [PATCH 11/11] Update egg-arma3-headless-client.json Removed currently unsupported `file_denylist` variable for now. --- .../arma/arma3_headless_client/egg-arma3-headless-client.json | 1 - 1 file changed, 1 deletion(-) diff --git a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json index e75297b2..60f20365 100644 --- a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json +++ b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json @@ -12,7 +12,6 @@ "images": [ "quay.io\/parkervcp\/pterodactyl-images:game_arma3" ], - "file_denylist": "", "startup": ".\/{{SERVER_BINARY}} -client -connect={{CONNECT_IP}} -port={{CONNECT_PORT}} -password=\"{{CONNECT_PASSWORD}}\" -profiles=.\/serverprofile -bepath=.\/battleye {{STARTUP_PARAMS}} -mod=\"{{MODS}}\"", "config": { "files": "{}",