Counter-Strike 1.6 服务器是带 cstrike mod 的 HLDS(Half-Life Dedicated Server,SteamCMD app 90)。它很轻量,小型 VPS 即可。参考来源:Vultr 与 Gentoo 指南、托管商指南和 Pterodactyl egg;Valve Wiki 无法访问,请自行核对。
分步安装
准备 Linux(Ubuntu/Debian)或 Windows 机器;该服务器非常轻量。
创建非 root 用户(steam),安装带 32 位库的 SteamCMD。
用 app_set_config 90 mod cstrike 然后 app_update 90 validate 安装 HLDS。
多次运行 app_update 90 validate,直到不再下载任何内容(HLDS 的已知特性)。
编辑 cstrike/server.cfg(“CS 1.6 server.cfg 生成器”)和 cstrike/mapcycle.txt(“mapcycle.txt 编辑器”)。
用所需地图和人数运行 hlds_run -game cstrike(Windows 下为 hlds.exe)。
在 ufw、服务商和路由器中开放 27015 UDP 与 TCP(HLTV 用 27020 UDP)。
先本机测试(游戏控制台输入 connect 127.0.0.1),再从另一条网络连接测试。
创建 systemd 服务,并安排更新与备份。
前提条件
- 系统:Linux(Ubuntu/Debian)或 Windows。HLDS 是 32 位程序。
- 资源:所查资料未给出官方要求。无重型插件时,1 vCPU、1 GB 内存通常足以支持 16 至 32 人(估算,需自行验证)。
- 账号:匿名安装。所查资料未提及 HLDS 需要 GSLT 令牌。
- 社区变体:ReHLDS(非官方)是广泛使用的替代品;本指南介绍 Valve 的 HLDS。
Windows 本地安装
将 SteamCMD 解压到 C:\steamcmd,安装 HLDS(重复更新直到不再下载内容),然后运行 hlds.exe。在 Counter-Strike 1.6 控制台中用 connect 127.0.0.1 测试。
cd C:\steamcmd
steamcmd +force_install_dir C:\hlds +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit
steamcmd +force_install_dir C:\hlds +login anonymous +app_update 90 validate +quit
cd C:\hlds
hlds.exe -console -game cstrike +maxplayers 32 +map de_dust2Linux VPS:用户与依赖
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 steamcmd
su - steamLinux VPS:安装 HLDS
多份指南(Vultr、Gentoo、托管商)指出 HLDS 需要多次更新:第二、三条命令重复 app_update 90 validate。mod 通过 app_set_config 90 mod cstrike 选择。
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quit
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quitLinux VPS:首次启动
在安装目录中运行 hlds_run。服务器每次换图读取 cstrike/server.cfg,轮换读取 cstrike/mapcycle.txt;cstrike/liblist.gam 描述该 mod(加载 Metamod 请参见“liblist.gam 编辑器”工具)。
cd /home/steam/hlds
./hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2需开放的端口与 Linux 防火墙(ufw)
这些是 HLDS 的常用值(所查官方页面未确认)。要更改端口,请在启动命令中使用 +port N,并开放该端口代替 27015。
只开放必要端口,并从另一条网络连接(而非服务器本机)测试。
- 27015/udp:游戏(HLDS 默认端口)
- 27015/tcp:RCON
- 27020/udp:HLTV(可选)
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusWindows 防火墙(netsh)
在管理员命令提示符中为每个端口创建入站规则(或打开“高级安全 Windows Defender 防火墙”)。
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27020 UDP" dir=in action=allow protocol=UDP localport=27020服务商防火墙与端口转发(路由器)
在托管商(OVH、Hetzner、Scaleway 等)处,还需在服务商防火墙或“安全组”中开放相同端口:若上游有防火墙,仅靠 ufw 不够。家用服务器则在路由器中把每个端口转发(NAT)到机器的本地 IP(设为静态或 DHCP 保留)。
测试:从另一条网络连接,在 Counter-Strike 1.6 的服务器浏览器或控制台中以“IP:端口”添加服务器。若失败,依次检查:服务是否运行、本机防火墙、服务商防火墙、NAT 转发。
开机自启:systemd 服务
以 root 创建 /etc/systemd/system/cs16.service 并启用。请按需修改用户与路径;用 journalctl -u cs16 -f 查看日志。
[Unit]
Description=Counter-Strike 1.6 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/hlds
ExecStart=/home/steam/hlds/hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now cs16Windows:开机计划任务
在 Windows 上,计划任务会在系统启动时运行 .bat 脚本(请在管理员命令提示符中执行命令)。
schtasks /Create /TN "Counter-Strike 1.6 server" /TR "C:\hlds\start-cs16.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST更新、备份与计划重启
更新前先停止服务(与安装相同的 SteamCMD 命令),定期备份配置与数据文件;若服务器运行久了变差,可安排每日重启。
sudo systemctl stop cs16
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quit
sudo systemctl start cs16
# backup
tar czf ~/cs16-$(date +%F).tar.gz -C /home/steam/hlds cstrike/server.cfg cstrike/mapcycle.txt cstrike/liblist.gam cstrike/addons cstrike/banned.cfg cstrike/listip.cfg
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart cs16登记并找到你的服务器
在 https://game-rank.com/jeux/counter-strike-1-6 登记你的服务器,让社区看到。游戏内可通过服务器浏览器查找,或直接用 IP:端口 连接。
故障排查:常见错误
- 安装后缺文件或服务器无法启动:HLDS 以首次安装不完整而闻名。解决:重复运行 app_update 90 validate(配合 app_set_config 90 mod cstrike)两到三次。
- 换图时卡住:mapcycle.txt 中列出的地图不在 cstrike/maps/ 中。解决:确认每个 .bsp 都存在,或删除该行。
- 外部看不到服务器:服务在运行但无人能连接。原因:端口被关闭(ufw、服务商防火墙或缺少 NAT 转发)。解决:在三个层面开放上述端口,并从另一条网络测试。
- 启动时端口已被占用:另一个实例占用了端口。解决:用 ss -lunp | grep 27015 查看进程,停止旧实例,或用 -port 为每个服务器指定不同端口。
- SteamCMD 提示 “Failed to install app” 或下载卡住:常见原因是磁盘已满或目录权限不足。检查 df -h 和目录所有者,然后带 validate 重新运行命令(必要时多次)。
- srcds_run 报 “No such file or directory” 或缺少 32 位库:Source 服务器是 32 位程序。解决:启用 i386 架构(dpkg --add-architecture i386)并安装 lib32gcc-s1 与 lib32stdc++6。
常见问题
- CS 1.6 服务器的 SteamCMD ID 是什么?
- HLDS 是 app 90;在 +app_update 90 validate 之前用 +app_set_config 90 mod cstrike 选择 mod。
- Metamod 或 AMX Mod X 放在哪里?
- 这些社区模块放在 cstrike/addons/,Metamod 通过 cstrike/liblist.gam 中的 gamedll_linux(或 gamedll)行加载。请遵循所选发行版的文档;“liblist.gam 编辑器”工具可修改该行。
- 可以用 root 运行服务器吗?
- 不建议:请创建不含管理员权限的专用用户(如 steam),用它安装并运行服务器,这样服务器或插件的漏洞不会危及整台机器。
- 我的 Counter-Strike 1.6 服务器不在列表中:该检查什么?
- 先确认各层端口均已开放、服务器未处于 LAN 模式(sv_lan 0),且在游戏要求时提供了有效的服务器令牌(GSLT)。Steam 列表刷新可能需要几分钟,期间可用 IP:端口 直连。
