- 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.
- 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.
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.
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.