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.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The most reliable Docker setup for a Counter-Strike 1.6 Internet server is an x86-64 GoldSrc HLDS container with UDP port 27015 published, sv_lan set to 0, and configuration, maps, plugins, bans, and logs stored outside the container. A typical launch uses jives/hlds:cstrike with bind mounts and a restart policy, while a simpler environment-variable image is available when you want to set the map and player count from the command line.

This guide shows the exact commands, port mappings, persistence layout, FastDL arrangement, image-selection criteria, update process, and troubleshooting steps needed to run the server safely. The examples use the standard GoldSrc ports and should be adjusted to match the image you select and the ports available on your host.

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

What you are running

Counter-Strike 1.6 is not a separate server executable. It runs as the cstrike game modification on Valve’s GoldSrc Half-Life Dedicated Server (HLDS). Docker supplies an isolated process and filesystem; HLDS still needs its normal game files, configuration, network ports, maps, and optional plugins.

At startup, HLDS accepts command-line controls such as -game cstrike, +map, +maxplayers, and +sv_lan. Images package those arguments, or expose them as environment variables, so you do not have to assemble a complete SteamCMD installation manually.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

Requirements and decisions before you start

  • A Linux host, virtual machine, or cloud instance with Docker Engine and the Docker CLI installed and available to your user.
  • An x86-64 host is the safest assumption. The documented quick start for jives/hlds:cstrike is for x86-64 and does not support ARM in that setup. On ARM hardware, verify that the image publishes a compatible architecture or build and test your own image before committing to it.
  • At least one free host port for the game server. The normal client port is UDP 27015; some images also document TCP 27015 and UDP 26900.
  • Router and firewall access if players will connect from outside your LAN.
  • A plan for persistent storage. Anything left only in a container’s writable layer can disappear when the container is removed and recreated.

Decide whether the server is Internet-facing or LAN-only. Internet servers use +sv_lan 0; LAN-only servers use +sv_lan 1. Also decide whether custom maps, models, sounds, sprites, or graphics will be used. If they are, plan a FastDL HTTP location before inviting players.

Choose an image deliberately

Image names are not interchangeable. Compare maintenance activity, the provenance of the HLDS files, architecture support, mount paths, plugin support, documented ports, FastDL behavior, and the image’s security and update instructions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Option How settings are supplied Persistence documented Architecture or operational notes
jives/hlds:cstrike HLDS-style command-line arguments, including logging, RCON, map, and player count Example mounts config to /temp/config and mods to /temp/mods; confirm the image’s current paths The documented quick start targets x86-64 and not ARM; uses --restart unless-stopped in its example
archont94/counter-strike1.6:latest Environment variables such as SERVER_NAME, MAP, MAXPLAYERS, and SV_LAN Documents volume links for server.cfg, banned.cfg, listip.cfg, and mapcycle.txt, plus AMX Mod X content under the cstrike tree Documents game ports and an HTTP port for FastDL; its README warns that a mounted server.cfg can override environment values
Self-built SteamCMD/ReHLDS image Your Dockerfile, entrypoint, and configuration files Whatever bind mounts or named volumes you define More control over revisions and hardening, but you own SteamCMD inputs, testing, upgrades, and recovery

Do not select an image solely because its tag is called latest. Record the image digest or release revision used in production, read its README for mount paths, and test a replacement container before changing a live server.

Fastest working deployment with the documented HLDS image

Create a directory for files that must survive container replacement, then launch the container. The following is a practical starting point for an Internet server with 12 player slots:

mkdir -p config mods

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 and choose a map and player count appropriate for your community. The command follows the image’s documented pattern. Before relying on it, inspect the image documentation to confirm that /temp/config and /temp/mods are still the expected mount points.

The first run may need to download or initialize game data. Follow progress with:

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.
docker logs -f cs16

When the server has finished starting, detach from the log view with Ctrl+C; that stops log viewing, not the container. Check that Docker published the ports:

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
docker ps

docker port cs16

To stop and remove the container without deleting your mounted files:

docker stop cs16
docker rm cs16

You can then recreate it with the same mounts and a new image tag or command-line settings. The external directories remain in place.

A simpler environment-variable launch

If you prefer not to pass HLDS arguments as one quoted string, the archont94 image documents environment variables for common values:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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

The same project documents SERVER_NAME, MAP, MAXPLAYERS, and SV_LAN, along with volume mounts for configuration and ban files. Add the documented mounts for your chosen layout rather than guessing paths.

Environment variables are defaults, not always the final authority. A mounted server.cfg is read by HLDS and can override values supplied through the container environment. If the server keeps starting on an old map, player limit, or LAN mode, inspect the effective server.cfg first.

Ports, NAT, and LAN mode

Valve’s GoldSrc reference defines UDP 27015 as the default client port and UDP 26900 as the default VAC port. Publish UDP 27015 for normal player traffic. Some images publish TCP 27015 as well, so follow the selected image’s documented mapping and open the same protocol on the host firewall and router.

Port Protocol Purpose What to do
27015 UDP Normal GoldSrc client traffic Publish with -p 27015:27015/udp; forward UDP 27015 on the router for an Internet server
27015 TCP Documented by some images in addition to UDP Publish only when the selected image expects it, using -p 27015:27015, and permit it in the host firewall if required
26900 UDP Default VAC port Publish when the image uses it, with -p 26900:26900/udp; keep router and firewall rules consistent

If you change HLDS’s game port with -port, change Docker’s host-to-container mapping and every firewall and NAT rule together. For example, an internal port of 27016 requires a mapping such as -p 27016:27016/udp and a matching HLDS -port 27016. A mismatch makes the container appear healthy locally while outside players cannot join.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

Set +sv_lan 0 for an Internet server. Use +sv_lan 1 only when all players are on the same LAN or reachable private network. Test from a device outside your home network; a successful connection from the host itself does not prove that NAT and firewall rules are correct.

Persist configuration, maps, plugins, and logs

Container replacement is normal Docker administration. Treat the container as disposable and store important data in bind mounts or named volumes.

  • Configuration: persist server.cfg, mapcycle files, and any image-specific configuration directory.
  • Access control: persist banned.cfg, listip.cfg, and other ban lists.
  • Content: persist custom maps, models, sounds, sprites, graphics, and plugin files under the HLDS cstrike tree.
  • Mods: persist AMX Mod X or other plugins in the image’s documented mods path.
  • Logs: retain HLDS logs outside the writable container layer if you need history after recreation.

A bind mount is easy to inspect and back up:

mkdir -p $PWD/data/cstrike

docker run -d --name cs16 
  --restart unless-stopped 
  -v $PWD/data:/server-data 
  -p 27015:27015/udp 
  jives/hlds:cstrike

The path above is illustrative; use the actual data path documented by the image. Mounting an empty host directory over a populated image directory hides the image’s original files, so initialize the directory according to the image instructions before placing custom files in it.

Back up the host directories before changing image tags. A restart policy can bring a process back after a host reboot, but it is not a backup, patch-management, monitoring, or disaster-recovery system.

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

Understand configuration precedence

Several layers can set the same value:

  1. Docker environment variables or image defaults.
  2. Command-line arguments passed to the image entrypoint or HLDS.
  3. server.cfg and other files loaded by the game.
  4. Map-specific or plugin configuration that executes after startup.

When troubleshooting, inspect the startup command and the mounted files, then check the live console or log output for the final value. Keep one authoritative copy of each setting. For example, do not set MAXPLAYERS=16 in the environment while a mounted server.cfg sets a different limit unless that override is intentional.

FastDL for custom maps and assets

Players need a web-download source when they do not already have a custom map, model, sound, sprite, or graphics file. FastDL is separate from the game socket: the server advertises an HTTP URL, and clients retrieve files from that URL.

The archont94 image documents an HTTP service on port 80 and a /cstrike/ path containing the asset directories. If port 80 is occupied on the host, map the container’s HTTP port to another host port and use the resulting public URL in the server configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
  1. Copy the exact custom-content tree into the HTTP document root, preserving directories such as maps, models, sound, sprites, and gfx beneath cstrike.
  2. Expose the HTTP port through Docker, the host firewall, and the router or reverse proxy.
  3. Set the server’s download URL to the externally reachable address, including the /cstrike/ path required by the image’s layout.
  4. Join with a client that lacks the custom files and verify that downloads complete before the map changes.

FastDL does not replace persistence. Keep the HTTP content in a host directory or volume and back it up with the game files.

Building your own image with SteamCMD or ReHLDS

A custom image is useful when you need a pinned HLDS or ReHLDS revision, a specific plugin set, a non-root runtime user, or an architecture and filesystem layout not provided by a prebuilt image. The ReHLDS Docker project documents installing HLDS through SteamCMD with app_update 90 and the steam_legacy beta.

Treat SteamCMD’s beta branch, downloaded binaries, and ReHLDS releases as changeable inputs. Pin a base image digest and a known release revision where possible, record the build date, and test the resulting image on a staging port before replacing the production container.

A sensible build pipeline has these stages:

  1. Install SteamCMD and download app 90 using the documented steam_legacy branch.
  2. Copy only the required HLDS and cstrike files into the runtime image.
  3. Add your configuration, entrypoint, and plugin installation steps.
  4. Define a configurable server port and expose the ports used by the final command.
  5. Run as a non-root user when the image supports it, and grant write access only to data directories.
  6. Test map changes, RCON, custom downloads, restarts, and container recreation before publishing the image.

Rebuilding is not automatically safer than pulling an image. You become responsible for SteamCMD failures, licensing and distribution rules, update review, vulnerability response, and restoring a known-good build.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Security and operational hardening

Protect RCON

Use a long, unique RCON password. Do not reuse an administrator, hosting, or personal account password. Avoid exposing administrative interfaces beyond the required game ports, and remove the password from shell history or shared launch scripts where other users can read it. Store secrets in a protected environment file or Docker secret mechanism when your deployment supports one.

Reduce container privileges

The ReHLDS project demonstrates hardening measures such as a non-root process user, a read-only root filesystem, dropped Linux capabilities, no-new-privileges, and writable temporary filesystems only where needed. These are image-specific examples, not guarantees. Verify that the selected image actually supports each setting before enabling it.

Control updates

Pulling a new tag can change binaries, startup behavior, mount paths, or defaults. Record the current image digest, back up configuration and custom content, read release notes, and test the replacement on a different host port. Keep the previous image available so you can roll back quickly.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Monitor and back up

Watch container logs for crashes, map-load errors, plugin failures, and repeated authentication attempts. Set a log-retention policy so a busy server cannot fill the host disk. Back up server.cfg, mapcycle files, ban lists, plugins, custom maps, and FastDL assets; periodically restore a backup into a temporary container to verify that it is usable.

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

Updating or recreating the server safely

  1. Announce a maintenance window and record the current container name, image digest, published ports, and mount paths.
  2. Stop the server cleanly with docker stop cs16.
  3. Archive the host directories containing configuration, HLDS data, mods, logs, and FastDL files.
  4. Pull or build the candidate image and inspect its documentation for changed ports, users, entrypoints, and volume paths.
  5. Start a test container on alternate host ports using copies of the production data.
  6. Join the test server, change maps, exercise plugins, test RCON, and download a custom asset.
  7. Recreate the production container with the approved image and the original persistent mounts.
  8. Check logs and perform an external join test before declaring the update complete.

If the new container fails, stop it and recreate the previous image with the same persistent data. Do not delete the only copy of your configuration while investigating.

Troubleshooting by symptom

Players cannot see or join the server

  • Confirm the container is running with docker ps and inspect docker logs cs16.
  • Verify UDP 27015 is published and allowed through the host firewall.
  • Verify the router forwards UDP 27015 to the Docker host’s current private address.
  • Check that sv_lan is 0 for an Internet server.
  • If you changed -port, ensure the HLDS port, Docker mapping, firewall rule, and router rule all match.
  • Test from outside the LAN; hairpin NAT can make an internal test misleading.

The server starts with the wrong map or player limit

Inspect the mounted server.cfg and mapcycle files. They can override environment variables or command-line defaults. Remove conflicting lines or make the intended source authoritative, then recreate the container.

Custom content will not download

  • Check that the file exists in the HTTP document root under the expected cstrike subdirectory.
  • Open the public FastDL URL from a browser or command-line HTTP client and verify a non-error response.
  • Confirm the URL in the server configuration uses the public hostname, port, and path rather than a container-only address.
  • Check that router and firewall rules permit the HTTP port.

Changes disappear after recreation

The files were probably written inside the container layer or a mount hid the directory that contained the initialized data. Identify the image’s documented data paths, copy required files to the host, and recreate the container with explicit bind mounts or named volumes.

The image will not run on the host

Check the host architecture with uname -m and compare it with the image’s published platforms. The documented jives/hlds:cstrike quick start is x86-64 and not ARM. On an unsupported architecture, use a compatible image, an x86-64 virtual machine, or a tested custom build rather than assuming emulation will provide reliable game-server behavior.

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

Operational checklist

  • Docker Engine and CLI are installed and usable by the account running the deployment.
  • The image architecture matches the host.
  • UDP 27015 is published and forwarded; TCP 27015 and UDP 26900 are added only when required by the selected image.
  • sv_lan is set correctly for Internet or LAN use.
  • RCON uses a unique secret.
  • server.cfg, mapcycle, bans, plugins, maps, logs, and FastDL assets are on persistent storage.
  • The effective configuration has no unintended overrides.
  • Custom assets are reachable from the public FastDL URL.
  • Backups exist and have been restored in a test container.
  • Image updates are reviewed, tested, and reversible.

Which deployment should you use?

Choose the documented jives/hlds:cstrike pattern when you want a conventional HLDS command line, explicit mounts, and a straightforward restart policy on x86-64. Choose the environment-variable image when its documented volume paths and FastDL behavior fit your needs and you prefer simple map and player settings. Build with SteamCMD/ReHLDS when you need control over revisions, plugins, users, or hardening and are prepared to maintain the build pipeline.

In every case, the durable design is the same: publish the correct UDP game port, configure LAN mode intentionally, keep the server state outside the container, expose FastDL only for custom content, and treat image updates and backups as operational work rather than automatic Docker features.

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.