--- title: "How to Set Up a CS 1.6 Server on Pterodactyl (Egg + Wings)" excerpt: "Import a CS 1.6 egg, create the server, set the startup variables, and let Wings run SteamCMD and launch HLDS in a container." category: "installation" tags: "pterodactyl, panel" image: "" read_time: "8 min read" ---

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:

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

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.