Commit Graph

15 Commits

Author SHA1 Message Date
Red-Thirten
97c14bceab [Arma 3] Yolk Rewrite
- Bumped platform & dependencies from `bullseye-slim` to `bookworm-slim`.
- Removed `numactl` package as it no longer seems required for SteamCMD to login correctly with real credentials.
- Updated `EGG_URL` to point to the new repo.
- Removed depreciated environment variables (see Egg changelog to see what has changed).
- Consolidated beta branch system.
- Replaced the mod installation system (which *moved* mods out of `Steam` directory into the home directory) with a new system that makes a new hard-link copy of the mod to the home directory. This solves two issues. First, SteamCMD's ACF cache will no longer get out of sync and label mods as "dirty", potentially causing issues with mod updates. Second, it allows files and directories of the mod in the home folder to be lowercased (for Arma compatibility) without "dirtying" the original SteamCMD files. The optional mod system was also adjusted to support this.
- Generalized home directory references so it could easily be changed in the future if needed.
- Fixed RPT log file location to match Arma docs.
- Updated the Startup Command of the server and HCs to use a Yolk-generated parameter (par) file. This should hopefully avoid any further issues with mod or parameter parsing in the future, as trying to organize and escape everything correctly is too much of a pain to maintain. This also future-proofs the Egg if Pelican decides to stop supporting Yolk-generated variables in the Startup Command (ie. pre-evaluated Startup Commands).
- Changed the server start to echo the par startup parameters instead of the raw Startup Command (for easier debugging under the new par system).
- Fixed exit-code-checking false positive.
- Made comments & code more consistent/clean.
- Fixed the license. First, as the original author of this Yolk (not to be confused with Daave's retired Yolk, which this is not a derivative work of), I can say with authority that the original license of this Yolk was written in error. No part of this Yolk was originally written ***by*** Pterodactyl Software; it was written by myself ***for*** the Pterodactyl community. This is further evidenced by the original top comments of `entrypoint.sh` stating the author is myself and the license is MIT. Second, with this new, major revision of the Yolk, I am updating the license to be GNU AGPL-3.0.
2025-03-24 20:49:28 -07:00
David Wolfe
9ce202da7c [Arma 3 & DayZ] Fix SteamCMD error checking (#276)
* Fix SteamCMD error checking

Added `libcurl` as an excluded keyword for error checking. Was causing mod-timeout errors to be misreported as an unknown error.
2024-12-20 11:39:17 -08:00
Matthew Dangerfield
681ffc488d [Arma 3] Added RPT logging (#253)
- Adds RPT logging (logs will be located in `/home/container/serverprofile/rpt/`, but only if `-noLogs` is not used as a startup parameter)
- Fixes edge case where clearing HC cache on first boot may fail due to a missing `serverprofile/` folder.
2024-07-07 16:24:02 -07:00
Red-Thirten
4310c0902c Fix SteamCMD unknown error & improve logging
- Lastest SteamCMD update throws new steamservice.so error that does not seem to affect downloads, so we will ignore it.
- Now prints found unknown error/failure logs to the console if they occur for easier debugging.
- Updates `libtbb2` to `libtbbmalloc2`, as `libtbb2` has been depreciated.
- Fixes error message coloring for certain error messages.
2023-06-17 14:33:57 -07:00
Red-Thirten
5742a2b8d8 Hot Fix Intermittent SteamCMD Failure & Improvements
- Fixes current issue where SteamCMD will intermittently present a "Failure" error when downloading Workshop mods due to a corrupt cache file.
- Replaced hard coded workshop directory path with a variable.
2022-11-29 11:17:22 -08:00
Red-Thirten
38ec9eb9dc Change entrypoint.sh to run SteamCMD on one CPU
- Utilize `numactl` to force SteamCMD to run on only one CPU which resolves its current crashing issues on Debian.
- SteamCMD now complains about thread priority due to it failing to properly load `libSDL` (`libSDL` is included in the image, but will not load properly if it is not installed on the host due to it containing a kernel extension). Therefore, any warnings regarding threads will now be ignored.
- If SteamCMD fatally crashes, copy the directory where it saves its dumps (`/tmp/dumps`) to `/home/container` for easier debugging access.
2022-11-26 22:38:19 -08:00
Red-Thirten
e750a642c9 Arma 3 Image Cleanup & Refurbishment
Files:
- Remove dependency of having `libnss_wrapper.so` libraries directly in the image. Instead, use the libraries provided with their respective packages. This fixes the current 32-bit version being broken and ensures the libraries stay up to date with their respective packages.
- Slight change to passwd.template to accommodate variable name change.

Dockerfile:
- Change the base image to Debian, which from testing appears to run cleaner and faster for Arma. It also should yield a smaller image.
- Fix depreciated `ENV` call format.
- Removed un-needed packages.
- Added iproute2 package.
- Consolidated the NSS Wrapper setup to a commented group of lines to make understanding it's purpose and setup more clear.
- Added shell flag to `useradd` command.

Entrypoint:
- General cleanup.
- Changed `LD_PRELOAD`s to point to package-provided library file locations.
2022-05-22 17:35:03 -07:00
Alex
cd6b949868 fix: invalid INTERNAL_IP environment value
New IP route output appends UID to the result, causing the value to be set to that instead of the IP. Fix it by ignoring the last two appended UID results
2022-04-24 18:10:20 +03:00
IAmSilK
e79e8cdd4d Ensure optional mods files are deleted after downloading and keys are removed if an optional mod is unconfigured 2022-03-25 01:50:24 -03:00
IAmSilK
1769dffa31 Add optional mods environment variable which allows for downloading mods without requiring them from clients 2022-03-23 19:39:55 -03:00
Red-Thirten
ac894c3267 Arma3's entrypoint.sh SteamCMD fix
SteamCMD apparently put an update out today that now displays a warning if `+force_install_dir` is after `+login`. This removes the error from appearing.
2021-11-19 19:29:31 -08:00
Red-Thirten
577d18ce26 Arma 3 - Small Bug Fix
- Fixed RemoveDuplicates function adding an extra trailing semicolon if the input string is empty.
- Added Aussie Server Hosts as a credited contributor for help and ideas on the project.
2021-07-13 23:24:28 -07:00
Red-Thirten
4b47c04777 Update entrypoint.sh
- Moved the mod movement, lowercase command, and key movement to the "success" portion of the SteamCMD function to prevent the code from trying to perform these actions on failed mod downloads.
- Changed some of the echos to print this process more cleanly
2021-07-13 12:19:12 -07:00
Red-Thirten
1811271a68 Update entrypoint.sh 2021-07-12 19:57:34 -07:00
Red-Thirten
06ca1edce7 Added Arma 3 image files
These files originate from https://github.com/parkervcp/images/tree/game/arma3 which is currently hosted at quay.io/parkervcp/pterodactyl-images:game_arma3
However, the entire image has been mainly rewritten in this update, which includes the following changes:
- Code styling / nomenclature has been normalized across the entire file.
- A robust RunSteamCMD function has been added to run SteamCMD with advanced error handling and reporting. Works for both the server and mods, and is configurable with the STEAMCMD_ATTEMPTS environment variable to specify how many times it should retry a download after a recoverable error (like large Workshop mod downloads timing out).
- Added support for a MOD_FILE environment variable, to specify an exported Arma 3 modlist HTML file for import into the server (for downloads and runtime). These mods are combined with any mods listed in MODIFICATIONS.
- A more robust and automatic way of downloading/updating mods is now included with the UPDATE_SERVER function. All mods to be used during runtime are checked for updates by comparing local file's creation dates against the mod's Workshop page last update. This allows for fast and reliable mod updates compared to the old manual system, and allows users to comfortably leave the update server function on all the time if they'd like.
- Added a RemoveDuplicates function to prevent a user from accidentally loading a mod twice.
- Checks for missing, trailing semicolons in manual mod lists due to human error.
- Mod update information echos are less cryptic and now use the mod's human-readable name, as well as printing the date they last updated.
- Made the server binary check error messages less cryptic and provided solution recommendations.
- Added a CLEAR_CACHE env. var. function to delete headless client profiles on startup to help with potential issues they cause.
- Un-hardcoded the basic.cfg URL and replaced with env. var.
- Added HC_HIDE env. var. to prevent headless client console spam.
- Added VALIDATE_SERVER env. var. to manually validate, because the new automatic update function skips validation to speed it up.
- Added CDLC env. var. for easy download of Creator DLCs incase the user doesn't know how to use SteamCMD beta branches.
2021-07-12 17:01:41 -07:00