How to Set Up a CS 1.6 Server on Pterodactyl (Egg + Wings)

November 6, 2025 Daemon666 8 min read 268 vues

Pterodactyl is a web game-server panel: an admin UI (the Panel) plus a per-node daemon called Wings that actually runs each server inside a Docker container. A game is described by an egg — a JSON definition that specifies the install script and the startup command. This guide adds a CS 1.6 server to an existing Pterodactyl install by importing an egg and creating a server from it. It assumes the Panel and Wings are already installed and a node is configured.

1. Understand the moving parts

Three pieces cooperate: the Panel (the web app and database), Wings (the daemon on each node that pulls a Docker image and runs the server in it), and the egg (the recipe). When you create a CS 1.6 server, the egg's install script runs SteamCMD to download app 90 into the server's data directory, and the egg's startup line tells Wings how to launch hlds. CS 1.6 is 32-bit, so the egg must use a Docker image that provides 32-bit libraries.

2. Import the CS 1.6 egg

In the Panel, go to Admin, Nests, Import Egg and upload the egg JSON. An egg for HLDS/CS 1.6 defines:

  • An install script that runs steamcmd +login anonymous +app_update 90 validate +quit against the server directory.
  • A Docker image with 32-bit runtime libraries (a Steam/SteamCMD image).
  • A startup command such as ./hlds_run -game cstrike +map {{SRCDS_MAP}} +maxplayers {{MAX_PLAYERS}} -port {{SERVER_PORT}}.
  • Variables the UI exposes: map, max players, and so on.

Assign the imported egg to a nest so it appears when you create a server.

3. Create the server

Go to Admin, Servers, Create New, pick the node and an allocation (the IP and port — CS 1.6 defaults to UDP 27015), choose the CS 1.6 egg, and set resource limits. Give it enough memory (256 to 512 MB is plenty for CS 1.6) and disk for the roughly 1 GB of game files. On save, Wings creates the container and runs the egg's install script.

4. Set the startup variables

Once created, open the server's Startup tab. The variables the egg declared appear as fields:

Server Map:      de_dust2
Max Players:     20
Server Port:     27015

These map onto the {{SRCDS_MAP}}, {{MAX_PLAYERS}} and {{SERVER_PORT}} placeholders in the startup command. The port must match the allocation you assigned; a mismatch is a common reason the server starts but never appears in the browser.

5. Wait for the install to finish

The install script runs once, in a separate installer container, and streams to the Install log. It is downloading app 90 via SteamCMD — the same app_update 90 covered in the SteamCMD guide, just executed by Wings. Do not start the server until the panel marks the install complete; starting mid-install produces a server missing its cstrike files.

6. Start the server

Hit Start on the console tab. Wings launches the startup command inside the container and streams the HLDS console. You should see the map load and the Console initialized banner. The web console is a full RCON-style console: type status and you get the same output as a local server.

Troubleshooting

  • Server stuck "installing" or install fails — SteamCMD could not reach Steam or the disk quota is too small. Check the Install log; raise disk and retry.
  • Starts then immediately crashes / will not start — usually a wrong startup command, a missing 32-bit Docker image, or the cstrike files not fully downloaded. Work through the CS 1.6 on Pterodactyl won't-start fix.
  • Server runs but is invisible in the browser — the startup -port does not match the allocation, or sv_lan 1. Align the port and set sv_lan 0.
  • "Segmentation fault" on start — the Docker image lacks 32-bit libs. Use a SteamCMD image that provides them.
  • Config changes do not persist — you edited files inside the container instead of via the panel's file manager; edit under the server's data directory so they survive a rebuild.

Verification

With the server started, type status in the panel console and confirm it reports the map and players : 0. From a client, add the node IP and the allocation port and confirm the server appears and is joinable. Then stop and start it from the panel to confirm the container cycles cleanly. If you would rather run CS 1.6 in a container without a full panel, the plain Docker guide covers the same image without Pterodactyl on top.

Contributeurs: Daemon666 ✦
Partager :