Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Run a CS 1.6 Dedicated Server in Docker

Run Counter-Strike 1.6 in Docker with HLDS: choose an image, publish UDP 27015, persist server data, configure LAN or Internet access, add FastDL, and update safely.
WorldDocker Length10 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The most practical Docker setup for Counter-Strike 1.6 is a GoldSrc Half-Life Dedicated Server (HLDS) container running the cstrike game, with UDP port 27015 published and the server’s configuration, maps, plugins, and logs stored outside the disposable container layer. On an x86-64 host, the documented jives/hlds:cstrike image provides a quick start; an environment-variable-based image such as archont94/counter-strike1.6:latest is another option. The steps below show how to deploy either style, expose it safely, preserve data, add FastDL for custom content, and operate or replace the server without losing your setup.

What a Dockerized CS 1.6 server actually is

Counter-Strike 1.6 is not a separate server executable. It runs as the cstrike modification on Valve’s GoldSrc Half-Life Dedicated Server (HLDS). Docker supplies an isolated process and filesystem; HLDS still handles maps, players, RCON, plugins, bans and downloads exactly as a conventional dedicated server does.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Valve’s GoldSrc launch controls are the important interface: -game cstrike selects Counter-Strike, +map chooses the first map, +maxplayers sets the slot count, and +sv_lan determines whether the server accepts Internet or LAN clients. Container environment variables are only a convenience provided by a particular image; a mounted server.cfg or command-line argument can take precedence.

Requirements and decisions before you deploy

Install Docker and check the host architecture

Install a current Docker Engine or Docker Desktop with the Docker daemon running, then confirm that the CLI works:

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
docker version
uname -m

The documented quick start for jives/hlds:cstrike targets x86-64 and explicitly does not support ARM. Confirm the selected image’s architecture before creating directories or opening firewall rules. If your host is ARM, use an image that publishes an ARM build or build and test your own image rather than assuming x86 emulation will be suitable for a public server.

Choose the network role

  • For an Internet server, use +sv_lan 0 (or the equivalent SV_LAN=0 setting).
  • For a private network server, use +sv_lan 1 and do not expose the container to the public Internet.
  • Reserve a host port if another game server already uses 27015. If you change HLDS’s -port, change Docker’s published port, the host firewall rule and router NAT rule together.

Understand the default ports

Purpose Default What to publish Qualification
Client/game traffic UDP 27015 -p 27015:27015/udp Valve documents 27015 as the default client port.
Optional server query or image-documented TCP endpoint TCP 27015 -p 27015:27015 Publish only when the selected image documents or requires it.
VAC port UDP 26900 -p 26900:26900/udp Valve documents 26900 as the default VAC port; some images include it in their examples.

Players normally need UDP 27015. Opening TCP 27015 or UDP 26900 is image- and deployment-specific, so mirror the selected image’s documented mapping and your actual HLDS settings instead of exposing every port by habit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Image choices and their trade-offs

Approach Documented setup Strengths Checks before production
jives/hlds:cstrike Command-line launch arguments; example mounts /temp/config and /temp/mods. Direct HLDS-style controls, a simple docker run pattern, and an example with restart behavior. The README’s quick start is for x86-64, not ARM. Inspect the image’s expected mount paths and release history.
archont94/counter-strike1.6:latest Environment variables such as MAP, MAXPLAYERS, SV_LAN and SERVER_NAME. Convenient first launch and documented volume links for configuration files and AMX Mod X content. A mounted server.cfg can override environment values. Treat the latest tag as changeable.
Build from SteamCMD/ReHLDS Install HLDS with SteamCMD, including the documented app_update 90 using the steam_legacy beta, then add your own configuration and plugins. Control over binaries, revisions, filesystem layout and hardening. You own update testing, architecture support, image maintenance and recovery procedures.

Compare candidates on maintenance and release recency, SteamCMD or ReHLDS provenance, CPU architecture, volume layout, plugin support, default ports, FastDL behavior, privilege controls and the clarity of their update and backup instructions. No independent performance benchmark establishes that one of these images supports more players than another.

Deploy the documented HLDS image

1. Create directories for persistent data

Run these commands from a directory dedicated to the server:

mkdir -p cs16/{config,mods}
cd cs16

The directories are on the host, so recreating a container does not remove their contents. The exact meaning of each path is image-specific; the following command follows the jives/hlds:cstrike example, which expects them at /temp/config and /temp/mods inside the container.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

2. Start the container

docker run -d --name cs16 
  --restart unless-stopped 
  -v "$PWD/config:/temp/config" 
  -v "$PWD/mods:/temp/mods" 
  -p 27015:27015/udp 
  -p 27015:27015 
  -p 26900:26900/udp 
  jives/hlds:cstrike 
  "+log on +rcon_password CHANGE_ME +maxplayers 12 +map de_dust2"

Replace CHANGE_ME with a long, unique RCON secret before anyone can connect. Change de_dust2 to the map you want as the first level and adjust 12 to your planned slot count. The 12-slot value is the image README’s example, not a performance recommendation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The command publishes both UDP and TCP 27015 because the image documents that pattern, plus UDP 26900. If your image or network does not need one of those mappings, remove it and close the corresponding firewall rule. --restart unless-stopped starts the container again after a host reboot unless you explicitly stopped it; it does not create backups, apply patches or monitor the process.

3. Check startup and retrieve the server address

docker ps
 docker logs -f cs16

Wait for HLDS to finish loading before testing. On a home connection, find the host’s public address from your router or hosting provider, then forward the chosen external UDP port to the Docker host. From a different network, add the address in the CS 1.6 console with connect your.public.address:27015. A test from inside the same LAN can succeed even when Internet NAT is wrong, so perform an outside-LAN test as well.

Use the environment-variable image instead

If you prefer settings in the docker run command, the archont94 project documents this launch:

docker run --name cs16-server 
  -p 27015:27015/udp -p 27015:27015 
  -e MAP=de_dust2 
  -e MAXPLAYERS=16 
  -e SV_LAN=0 
  archont94/counter-strike1.6:latest

That project also documents SERVER_NAME, MAP, MAXPLAYERS and SV_LAN. Its example uses 16 as the default slot value. Do not assume an environment variable wins after you add a configuration file: the project warns that a mounted server.cfg can override those values.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

For a repeatable deployment, create the configuration files on the host first and mount them using the paths specified by that image’s README. It documents volume links for server.cfg, banned.cfg, listip.cfg and mapcycle.txt, and supports adding AMX Mod X content under the cstrike tree.

Make configuration, maps and mods survive recreation

A container’s writable layer is disposable. Keep the files that define your server in bind mounts or named volumes, and back up the host-side data.

Configuration to persist

  • server.cfg, including hostname, gameplay cvars and the RCON password.
  • mapcycle.txt and any map lists used by your plugins.
  • banned.cfg, listip.cfg and other ban or IP records.
  • Custom .bsp maps, models, sounds, sprites and gfx assets.
  • AMX Mod X plugins, modules and their configuration files.
  • Logs, if you need an audit trail or debugging history.

Mount the paths the image actually reads

There is no universal HLDS-in-container path. One image may import a host config directory into /temp/config; another may expect individual files in the cstrike directory. Read the selected image’s documented volume layout, then verify it from inside the running container:

docker exec -it cs16 sh
# inspect the image's documented config and cstrike paths
exit

After mounting a file, restart the container and inspect logs or in-game cvars to confirm that HLDS loaded it. If an environment value appears to be ignored, check for a mounted server.cfg or another later-loaded config before changing the command.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Back up before changing an image tag

tar -czf cs16-backup-$(date +%F).tgz config mods

Also copy any separately mounted HLDS or cstrike data directory. A restart policy can recover a process after a reboot, but only a separate backup protects against accidental deletion, a bad plugin, disk failure or an image update that changes paths.

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC

Set LAN or Internet access deliberately

Internet server

Pass +sv_lan 0 to HLDS, publish UDP 27015, and allow that port through the host firewall and router. If you use a non-default port, pass the corresponding -port argument and publish the same number on the host:

docker run ... 
  -p 28015:28015/udp 
  image-name 
  "-port 28015 +sv_lan 0 +map de_dust2"

The outside port, Docker mapping, firewall rule and router forwarding must agree. A mismatch usually appears as a server that works locally but cannot be reached from the Internet.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

LAN-only server

Use +sv_lan 1, omit public router forwarding, and limit the host firewall to your local subnet. Do not rely on a private hostname alone as an access control mechanism.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Add FastDL only when custom content requires it

Vanilla maps already present on clients do not need FastDL. Custom maps, models, sounds, sprites and gfx files do. FastDL is an ordinary HTTP location that mirrors the relevant cstrike asset tree.

Prepare the download tree

The archont94 image documents an HTTP service on port 80 and a /cstrike/ path containing those asset directories. Put each file in the same relative location clients expect, for example cstrike/maps/custom.bsp or cstrike/sound/custom/beep.wav.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Publish HTTP without colliding with another service

If port 80 is already occupied on the host, map the container’s HTTP port to another host port, such as 8080. Set the resulting URL in the server configuration, including the path that serves the cstrike tree. Test the URL from a separate machine and verify that a known file downloads before asking players to join.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

FastDL should contain only the files clients need. Keep RCON credentials, backups and unrelated host files outside the web root.

Build your own image with SteamCMD or ReHLDS

Pulling a prebuilt image is fastest, but a build pipeline gives you control over the HLDS binary, plugins and hardening. The documented ReHLDS Docker approach installs HLDS with SteamCMD using app_update 90 and the steam_legacy beta, then uses a configurable server port.

What to pin and review

  • Pin an image digest or a known release revision instead of silently tracking a mutable tag.
  • Record the SteamCMD branch and the date you built it.
  • Keep configuration and custom content in external volumes so a rebuilt image does not erase them.
  • Stage updates with a copy of the server data and test map loading, plugins, downloads and RCON before replacing production.

SteamCMD downloads and third-party plugins are changeable inputs. A reproducible Dockerfile does not make those upstream files permanently identical, so retain the revision information needed to recreate a known-good build.

Secure and operate the server

Protect RCON

Use a strong, unique RCON password and do not publish administrative interfaces beyond the game ports required by your image. Never place the password in a public repository or paste it into a screenshot. If it appears in shell history, restrict access to that account or rotate the secret.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Reduce container privileges

The ReHLDS project demonstrates a non-root process, a read-only root filesystem, dropped Linux capabilities, no-new-privileges and narrowly scoped writable temporary filesystems. These are image-specific examples, not guarantees. Verify that the image can write only to the mounts it needs before enabling equivalent Docker flags.

Watch logs and disk usage

docker logs --tail 200 cs16
docker inspect cs16

Look for map-load errors, missing libraries, repeated restarts and download failures. Rotate or archive logs if your image writes them to a persistent directory. Check free disk space because custom maps and logs accumulate outside the container layer.

Plan updates and recovery

  1. Stop or drain the server and create a dated backup of configuration, bans, maps, plugins and logs.
  2. Record the current image tag or digest and container command.
  3. Pull or build the candidate image and recreate the container with the same mounts and port mappings.
  4. Join from a test account, load a custom map, verify plugins and check FastDL before announcing the update.
  5. If anything fails, stop the new container, restore the previous image reference and data backup, then inspect the changed path or binary.

Troubleshooting by symptom

Symptom Likely cause Fix
Container exits immediately Invalid image arguments, unsupported architecture or a startup script error. Run docker logs cs16, confirm x86-64 support where required, and compare arguments with the image README.
Players on the Internet cannot join, but LAN players can UDP 27015 is blocked or NAT forwards to the wrong host or port. Publish UDP 27015, allow it in the host firewall, forward the same external port, and test from outside the LAN.
Server is visible only on LAN sv_lan is set to 1 or the Internet port is not reachable. Use +sv_lan 0, then verify Docker, firewall and router mappings.
Players receive the wrong map or hostname A mounted server.cfg overrides environment variables or command-line defaults. Edit the mounted file, check load order, and restart the container.
Custom map says files are missing FastDL tree does not mirror the cstrike paths, or the download URL is wrong. Test the HTTP URL for each missing file, preserve case and directory names, and correct the configured URL.
Maps or plugins disappear after recreation They were written only into the container’s writable layer. Move them to the documented bind mount or named volume and restore them from backup.
RCON does not work Password mismatch, a later config override or an incorrect administrative command. Set one known password in the effective server.cfg, restart, and rotate it after testing.

Pre-launch checklist

  • Docker daemon and CLI are installed; the image supports the host architecture.
  • cstrike is selected and the initial map and player count are intentional.
  • UDP 27015 is published and reachable; TCP 27015 and UDP 26900 are opened only when documented or needed.
  • sv_lan matches the intended LAN or Internet role.
  • RCON uses a unique secret that is not stored in public text.
  • Configuration, bans, mapcycle, maps, plugins and logs are mounted outside the container layer.
  • FastDL is configured only for custom content, with an independently tested HTTP URL.
  • A dated backup exists, and you know how to recreate the container with the same mounts.
  • You have tested joining from outside the LAN and reviewed startup logs.

With those controls in place, Docker gives CS 1.6 a repeatable launch and straightforward replacement path without treating the container itself as permanent storage. The game remains an HLDS service: ports, configuration precedence, custom-content hosting and operational security still need to be managed explicitly.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.