属于大家的
VPS知识分享站

CS2服务器搭建教程:Linux、SteamCMD、GSLT与端口

CS2 开服常见的三个坑:照抄 CS:GO 旧教程下 App 740、把真实 GSLT 写进脚本或截图、为排障开一整段端口却没核对进程实际监听。现在 CS2 用 App ID 730,公开服的 GSLT 要按密码管理,比赛服还要把版本、地图、配置和更新窗口固定下来。

这篇按 2026年8月3日核对的 Steam 官方 App 信息、Steam Game Server Account Management 和 Steamworks 游戏服务器规则写。服务端下载通常几十 GB,这次没下 App 730,也没建真实 GSLT。

CS2和旧CS:GO教程先分开

项目 当前CS2 旧CS:GO资料
App ID 730 常见旧教程为740
Linux入口 game/bin/linuxsteamrt64/cs2 srcds_run等旧路径
启动模式 cs2 -dedicated Source 1旧参数体系
GSLT应用 App 730 不要复制旧App创建规则

如果教程仍让你执行app_update 740并运行srcds_run,先停下来确认它是否在讲历史CS:GO。CS2沿用了部分配置概念,但程序路径、插件生态和具体命令已经变化。

你要搭哪一种CS2服务器

  • 朋友私局:人数少、固定地图、密码进入;
  • 训练服:投掷物、机器人、重复回合和自定义配置;
  • 社区服:公开列表、GSLT、管理员、封禁、插件与持续更新;
  • 比赛服:固定版本、规则、地图、日志/录像、赛前冻结和故障回退。

业务目标决定配置和运维。比赛服需要的不只是更大机器,而是可重复的规则、低抖动网络和更新控制。

配置和地域怎么选

在没有本轮Tick负载实测时,配置只能作为测试起点:

场景 测试起点 验收重点
5v5朋友/训练服 4核8GB、60GB+ SSD 单核、服务器帧时间、地图加载、客户端丢包
10人比赛与日志/录像 8核16GB、100GB SSD 比赛峰值、GOTV/日志、后台任务干扰
社区插件服 8核16GB起,按插件和人数扩展 插件耗时、实体、数据库/外部服务、更新兼容

App 730下载体积和更新频率会变化,磁盘要同时容纳程序、更新暂存、日志、录像、插件与回退副本。不要按“安装完成后剩余1GB”运行生产服。

地域选择先让实际玩家测试。平均延迟接近时,优先比较晚高峰抖动、丢包和路由稳定,而不是只看一次ping。

提前准备玩家城市/运营商、模式、人数、地图、插件、录像和备份需求,再在萤光云VPS产品页核对实时地域、Linux镜像、SSD、带宽、价格与库存。

推荐结构

CS2玩家通过配置端口连接App 730 Linux服务端并由GSLT认证的社区服务器架构
/home/steam/steamcmd/             # 更新工具
/home/steam/cs2/current/          # 当前服务端程序
/home/steam/cs2/config/           # 自有配置源
/home/steam/cs2/secrets/          # GSLT等密钥,权限600
/home/steam/cs2/logs/             # 运营日志
/home/steam/cs2/backups/          # 临时归档,另有服务器外副本

用独立普通用户运行CS2,不用root。GSLT与Web API密钥不要和公开配置放在一起。

Ubuntu安装SteamCMD

以Ubuntu为例:

sudo adduser --disabled-password --gecos '' steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1
sudo -u steam mkdir -p /home/steam/cs2/current

软件包名称和仓库设置随Ubuntu版本变化。如果系统仓库没有SteamCMD,按Valve当日官方说明处理,不要从未知脚本一键安装。

下载当前CS2服务端

sudo -iu steam
steamcmd \
  +force_install_dir /home/steam/cs2/current \
  +login anonymous \
  +app_update 730 validate \
  +quit

完成后不要只看SteamCMD退出码。检查:

test -x /home/steam/cs2/current/game/bin/linuxsteamrt64/cs2
du -sh /home/steam/cs2/current
find /home/steam/cs2/current -maxdepth 3 -type f -name 'steam_appid.txt' -o -name 'cs2'

生产环境记录App manifest和更新日期。validate会核对文件,但不能证明服务端能加载地图或客户端能加入。

创建和保管GSLT

Steam Game Server Account Management为App ID 730创建令牌。官方页面当前要求账户正常、非受限、有合格手机号并拥有对应游戏。

GSLT保管规则:

  1. 每个同时运行的服务实例使用独立令牌;
  2. 不在文章、工单、截图和Git仓库出现真实值;
  3. 令牌文件权限设为600;
  4. 只允许steam用户和必要管理员读取;
  5. 泄露后立即从Steam页面删除并重建;
  6. Steam密码重置会导致GSLT重新生成,维护流程要包含轮换。
sudo -u steam install -m 600 /dev/null /home/steam/cs2/secrets/server.env
sudo -u steam editor /home/steam/cs2/secrets/server.env

文件示意:

CS2_GSLT=YOUR_GSLT_TOKEN

YOUR_GSLT_TOKEN必须替换,且真实文件不得进入版本控制。

CS2服务器GSLT账户核对、独立创建、安全注入、限制读取和泄露轮换流程

创建server.cfg

配置目录通常位于游戏内容下的game/csgo/cfg/。最小私人服示意:

hostname "Private CS2 Server"
sv_lan 0
sv_password "CHANGE_ME"
rcon_password "CHANGE_RCON"
sv_cheats 0
log on
writeid
writeip

玩家密码与RCON密码必须不同。不要在公开文章提供可直接上线的固定密码,也不要为了训练配置把sv_cheats 1永久留在公共服务器。

模式和回合规则应放在单独配置文件,例如:

cfg/ygk-training.cfg
cfg/ygk-competitive.cfg
cfg/ygk-community.cfg

让每个文件只负责一个场景,便于审阅和回退。

启动CS2专用服务器

cd /home/steam/cs2/current
set -a
source /home/steam/cs2/secrets/server.env
set +a

exec ./game/bin/linuxsteamrt64/cs2 \
  -dedicated \
  -console \
  -usercon \
  -port 27015 \
  +map de_mirage \
  +game_type 0 \
  +game_mode 1 \
  +sv_setsteamaccount "$CS2_GSLT" \
  +exec server.cfg

命令中的地图、模式和二进制入口发布前仍需核对Valve当前文档。密钥不会显示在进程列表之外完全隐形;管理员还应限制本机进程可见性、日志输出和脚本读取权限。

systemd服务

创建包装脚本时让它读取受限环境文件,再由systemd调用。示意服务:

[Unit]
Description=Counter-Strike 2 Dedicated Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/cs2/current
EnvironmentFile=/home/steam/cs2/secrets/server.env
ExecStart=/home/steam/cs2/current/game/bin/linuxsteamrt64/cs2 -dedicated -console -usercon -port 27015 +map de_mirage +game_type 0 +game_mode 1 +sv_setsteamaccount ${CS2_GSLT} +exec server.cfg
Restart=on-failure
RestartSec=10
NoNewPrivileges=true
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

环境变量是否按预期展开必须在目标systemd版本验证。若不展开,改用权限受控的包装脚本,不要把GSLT直接写入公开unit文件。

端口怎么开

这篇使用显式-port 27015。先启动,再核对实际监听:

ss -lunpt | grep 27015
sudo ufw allow 27015/udp
sudo ufw reload

不同功能可能还使用查询、GOTV、RCON或Workshop相关连接。正确方法是按实际启用功能和Valve当前文档增加精确规则,不是直接开放27015–27030的TCP/UDP全集。

SSH只允许管理员来源IP。RCON不要对全球开放;能通过VPN或运维跳板访问时,优先使用内网。

启动验收不能只看进程

至少确认:

  1. 控制台报告当前CS2版本;
  2. 指定地图加载完成;
  3. GSLT认证没有失败或过期;
  4. 实际端口与安全组一致;
  5. 外网客户端能通过地址加入;
  6. 服务器列表、密码、队伍、回合和重连符合预期;
  7. 比赛场景还要验证日志、录像、暂停/恢复和赛后文件。

本轮没有执行以上运行验收,因此正文不提供假日志截图。

更新策略:社区服和比赛服不同

社区服可以在低峰维护窗口更新,但仍需通知、备份和回归。比赛服应在赛前冻结版本:

记录manifest → 备份配置/插件/日志 → 停服 → 更新副本
→ 加载固定地图 → 客户端进服 → 规则回归 → 再切生产

不要在比赛开始前让systemd每次启动自动app_update。客户端强制更新时,需要明确的应急维护流程。

插件、Metamod和社区框架

插件会拥有读取服务器文件、执行代码或访问网络的能力。安装前检查来源、提交记录、发行哈希、CS2构建兼容和回退方法。

每次只升级一个层:

CS2服务端 → Metamod → 插件框架 → 业务插件

保存插件JAR/二进制哈希、配置和加载顺序。服务端能启动不代表插件钩子、比赛逻辑或数据库写入正确。

备份哪些数据

CS2没有大型持久世界,但运营资产同样重要:

  • server.cfg与场景配置;
  • 封禁用户/IP列表;
  • 插件、扩展和它们的数据;
  • GSLT轮换记录(不保存到普通备份);
  • 日志、比赛录像、地图清单;
  • 当前manifest与启动脚本;
  • systemd和防火墙说明。

令牌备份应单独加密和限权,不要和可分享的配置包混在一起。

常见故障

SteamCMD提示安装成功,但找不到cs2

检查App ID、force_install_dir位置、磁盘空间和实际文件树。旧740教程可能把文件装到了不适用目录。

服务器能在局域网连,公网不行

核对GSLT、UDP端口、云安全组、UFW、公网IP和NAT。不要因为局域网能进就假设公开认证已完成。

GSLT失效

检查是否泄露、重复用于多个实例、长时间未使用或Steam密码已重置。删除旧令牌并创建新令牌,再安全更新环境文件。

客户端提示版本不一致

服务端与客户端更新节奏不同。记录manifest,停服更新并重新加载地图,不要只重启旧二进制。

插件更新后崩溃

先用纯净服务端验证当前构建,再按加载顺序逐层恢复扩展。保留旧程序和插件组合,避免在唯一目录直接覆盖。

ping不高但对枪卡

继续看抖动、丢包、服务器帧时间、单核占用、后台更新和磁盘写入。平均ping不能代表比赛稳定性。

FAQ

CS2专用服务器App ID是730还是740?

当前CS2使用730。740常见于旧CS:GO专用服务器教程,不能直接照搬。

私人服务器也需要GSLT吗?

公开列表和公网连接场景通常需要按Valve当前规则处理GSLT。纯局域网和特殊私局行为可能不同,发布当天以官方文档及实际客户端验收为准。

GSLT能放在启动脚本里吗?

技术上可以传入,但脚本必须限权且不能进入公开仓库。更推荐受限环境文件或密钥管理方式。

27015需要同时开放TCP和UDP吗?

这篇只把显式游戏端口按实际监听处理。附加功能和协议要查看当日Valve文档并用ss验证,不建议无依据开放宽范围。

4核8GB一定能跑5v5吗?

只是测试起点。地图、插件、GOTV、系统CPU型号和后台任务都会改变服务器帧时间,必须用真实比赛样本验收。

购买前检查

  • 朋友服、训练服、社区服还是比赛服;
  • 玩家地域、运营商和晚高峰网络;
  • App 730下载与更新所需SSD空间;
  • 独立GSLT和密钥保管责任人;
  • 端口、RCON、GOTV和插件范围;
  • 比赛前冻结、日志/录像、备份和回退;
  • 公网IP、DDoS、扩容、退款和迁移条款。

继续阅读:云服务器配置选择服务器地域怎么选测试IP与丢包安全组设置备份恢复方法。确认需求后,再到萤光云VPS页面查看实时地域、Linux镜像、配置、价格和库存。

赞(0)
未经允许不得转载:VPS知识分享站 » CS2服务器搭建教程:Linux、SteamCMD、GSLT与端口