Fix: Pterodactyl CS 1.6 Server Won't Start (Wings / Egg Issues)

May 21, 2025 Daemon666 8 min read 222 Aufrufe

You imported a CS 1.6 egg into Pterodactyl, deployed a server, and it either sits on Starting forever or flips straight back to Offline. Pterodactyl adds two layers on top of a plain HLDS install — the Wings daemon running the container and the egg defining the startup command and detection strings — and a failure in either looks identical from the panel. This walks through the real causes in the order they actually occur.

1. Read the console, not the status pill

The status pill lies; the console tells the truth. Open the server's Console tab and start it, watching the raw output. HLDS prints its own errors there before Wings gives up. The lines you are looking for are the loader errors, for example:

./hlds_run: line 123: ./hlds_linux: not found
error while loading shared libraries: libstdc++.so.6: cannot open shared object file

That not found on a file that plainly exists is the classic 32-bit symptom — the binary is there but the loader for it is not. Note the exact line and move to the matching step below rather than restarting blindly.

2. Fix the missing 32-bit libraries

HLDS ships a 32-bit hlds_linux binary. If the Docker image the egg points to is 64-bit-only, the kernel cannot load it and you get the not found above. Check the egg's Docker Image under the server's Startup tab; it must be an image with i386 libraries. A minimal fix is an image based on Debian with libc6:i386, libstdc++6:i386, and libncurses5:i386 installed. If you built your own image, add the i386 architecture and those packages; if you used a community egg, switch the Docker image field to the one its documentation specifies. This is the same 32-bit dependency problem covered for bare-metal installs in the HLDS Linux install guide.

3. Check the startup command variables

Pterodactyl builds the launch line from the egg's startup command plus per-server variables. A wrong variable produces a server that starts and immediately exits. On the Startup tab confirm the command resolves to something like:

./hlds_run -game cstrike -console +ip 0.0.0.0 -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +maxplayers {{MAX_PLAYERS}}

Two variables break servers most often: an empty or misspelled SRCDS_MAP (set it to a map you actually have, e.g. de_dust2), and a MAX_PLAYERS above 32, which CS 1.6 rejects. Bind to 0.0.0.0 and use {{SERVER_PORT}} so the port matches the allocation Pterodactyl assigned — hardcoding 27015 when the panel gave you a different port means the container never binds where Wings expects.

4. Confirm the install script finished

The egg's install script runs SteamCMD to download HLDS into /mnt/server before the first boot. If that install failed — Steam rate-limiting, a full disk, a network block — you have a server directory with no hlds_run in it. In Settings → Reinstall Server, trigger the install again and watch the install log. It must end without SteamCMD errors and leave hlds_run and the cstrike/ folder in the root. A half-populated directory is why a freshly created server refuses to boot with no obvious HLDS error at all.

5. Fix the 'started' detection string

Wings decides a server is running by matching a configured string in the console output. If the egg's Startup Configuration looks for text HLDS never prints, the process runs fine but the panel shows Starting forever and eventually kills it. The reliable marker HLDS emits once it is up is its address line; set the egg's startup detection to a stable substring such as:

"Server IP address"

Edit this under the egg (Admin area → Nests → your egg → Configuration → Startup) as valid JSON in the done field. After saving, the next start transitions to Running the moment HLDS prints that line.

Troubleshooting

  • ./hlds_linux: not found — the Docker image lacks 32-bit libraries. Switch to an i386-capable image (step 2).
  • Sits on 'Starting' but the console shows the map loaded — the Wings detection string does not match HLDS output. Fix the egg's done string (step 5).
  • 'Container marked as running but process not responding' — the process exited immediately; scroll the console up for the real error, usually a bad variable or missing map.
  • Flaps between Offline and Starting — the install never completed. Reinstall and read the install log (step 4).
  • Starts but nobody can connect — the port bound does not match the allocation. Use {{SERVER_PORT}} and check the primary allocation. See remote connectivity for the firewall side.
  • Only 32 player slots supported or silent exitMAX_PLAYERS exceeds 32. Lower it.

Verification

Start the server and confirm the console reaches the map load and the address line, and that the status pill turns green. From another machine, query the server with status over RCON or connect directly on the panel's allocated IP and port. If it runs cleanly in the console but Wings still will not mark it online, the problem is always the detection string, not HLDS — and if HLDS itself errors, the first line of that error names the exact cause. Once it boots reliably, layer your plugins on with AMX Mod X.

Mitwirkende: Daemon666 ✦
Teilen: