Skip to content

Add Carrier Command 2#548

Open
norto22 wants to merge 1 commit into
pterodactyl:mainfrom
norto22:add-carrier-command-2-egg
Open

Add Carrier Command 2#548
norto22 wants to merge 1 commit into
pterodactyl:mainfrom
norto22:add-carrier-command-2-egg

Conversation

@norto22
Copy link
Copy Markdown

@norto22 norto22 commented May 11, 2026

Description

Adds a new egg for the Carrier Command 2 dedicated server. Resolves #299.

Tested end-to-end: install, server start (Wine), connected to Steam console output, public server browser visibility, client connect via Steam Master Server, Steam auth ticket validation.

Checklist for all submissions

  • Have you followed the guidelines in our Contributing document?
  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?
  • Have you tested and reviewed your changes with confidence that everything works?
  • Did you branch your changes and PR from that branch and not from your master branch?
    • If not, why?:
  • You verify that the start command applied does not use a shell script
    • If some script is needed then it is part of a current yolk or a PR to add one
  • The egg was exported from the panel

New egg Submissions

  1. Does your submission pass tests (server is connectable)?
  2. [] Does your egg use a custom docker image?
    • No — uses the existing ghcr.io/ptero-eggs/yolks:wine_latest yolk.
  3. Have you added the egg to the main README.md and any other README files in subdirectories of the egg according to the alphabetical order?
  4. Have you added a unique README.md for the egg you are adding according to the alphabetical order?
  5. You verify that the start command applied does not use a shell script
    • If some script is needed then it is part of a current yolk or a PR to add one
  6. The egg was exported from the panel

Implementation notes worth flagging for review

  • Wine, not Proton. Under Proton, CC2's stdout doesn't reach Pterodactyl (the "starting forever" UX problem). Under Wine, lifecycle messages flow correctly and connected to Steam is matchable as the done signal, same as AMP's module.
  • App 1007 installed to /tmp/sdk_redist, not /mnt/server. This deliberately avoids leaving an appmanifest_1007.acf in /home/container/steamapps/, which would cause the runtime image's logged-in auto-update to re-pull app 1007 (Linux variant) on every server start. The Windows DLLs we need are copied out and the temp dir is removed.
  • Config templating via inline sed. Pterodactyl's xml parser reshuffles attributes; CC2 rejects reordered XML and regenerates defaults. Inline sed substitutions preserve CC2's exact attribute order. Uses % as the delimiter — server names containing % will break the substitution (documented in the egg README).
  • AUTO_UPDATE=0 is the default. When enabled, the runtime entrypoint logs into Steam on every start and Steam's backend pushes app 1007's Linux runtime files (~50 MB) into the install dir alongside our Windows DLLs. This doesn't break the server but slows boots. Off by default; documented in the egg README.
  • Known CC2 server bug (not an egg bug): the dedicated server can load save games but cannot write them. Documented with links to upstream Geometa support tickets in the per-egg README.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Egg Request]: Carrier Command 2

1 participant