cs2服务器吧 关注:2贴子:9
  • 0回复贴,共1

如何搭建cs2服务器(linux)

只看楼主收藏回复

1 前言&目录
1.1 前言
CS2官方社区最近推出了CS2服务器的搭建教程,我根据此教程进行了尝试,最终做成此专栏,后续会不断的更新和完善
CS2官方社区网址:https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers
目前已有docker版本的CS2服务器,请自行在网上搜索教程
如果有服务器插件和创意工坊相关需求,可以参考我的其他专栏
CS2服务器 - 添加创意工坊地图
CS2服务器 - 1v1单挑对战
MetaMod、CounterStrikeSharp、MatchZy插件的安装和使用
↓↓↓ 再增加一个视频版教程 ↓↓↓
CS2服务器搭建+创意工坊地图(Debian 12)
==============================
本专栏首次发布:2023-10-20
最新一次更新于:2024-04-07
更新内容在第5章节
==============================
1.2 目录
2.1章节 ==> 准备debian系统
2.2章节 ==> 下载安装FinalShell
2.3章节 ==> 配置debian系统
2.4章节 ==> 申请CS2开服令牌
3.x章节 ==> 搭建服务器的详细步骤
4.2章节 ==> 玩家连接CS2服务器的方法
4.3章节 ==> 更新CS2服务器文件
4.4章节 ==> 解决硬盘可用空间不足问题
4.5章节 ==> 后台运行CS2服务器 点此跳转
5.x章节 ==> 本专栏更新日志
2 准备工作
2.1 准备debian系统
带公网IP的电脑或云服务器,安装debian-11.8 x64或debian-12 x64系统
注:
① 一定要有公网IP,因为其他玩家要根据公网ip来连接CS2服务器。如果没有公网IP,则CS2服务器只能在局域网内使用,有些软件能实现异地的虚拟局域网,或者内网穿透也能解决无公网IP的问题
② 服务器硬盘可用空间最好不低于40G(CS2游戏文件约34G,其他空间预留给游戏更新包、插件、Mod、第三方地图)
关于硬盘可用空间不足的解决方法在4.4章节
③ 建议安装无图形化界面的debian系统以节省资源开销,提高服务器性能
④ 如果想购买云服务器,这是一些建议:硬盘可用空间不低于45G;CPU方面无法给出建议;内存不低于4G;网络带宽方面,csgo时代5Mbps满足10人对战,CS2时代的带宽要求更高,10人对战可能需要8Mbps甚至10Mbps带宽
2.2 下载安装FinalShell
下载页面:http://www.hostbuf.com/t/988.html
FinalShell的功能介绍和用法请自行百度或在B站找教程,选择它作为ssh终端是因为能方便的监控CPU、内存、磁盘和网络等资源的使用情况,对新手比较友好且免费(也可以购买高级版支持一下作者)
在linux系统中,复制、移动、编辑文件都需要使用对应的命令来操作,对新手不太友好,可以通过FinalShell来进行这些操作
也可参考我的另一专栏:ssh终端推荐
2.3 简单配置debian系统
2.3.1 更新apt源
使用FinalShell连接到debian系统,以root用户登录
更新apt源列表,命令:apt update

注:
在国内使用linux系统,建议更换软件源以便能更高速的下载、更新软件,具体方法请自行在网上搜索,也可以参考我的视频版CS2服务器搭建教程 第1分47秒
2.3.2 安装vim
安装vim命令:apt install vim -y
2.3.3 安装wget
安装wget命令:apt install wget -y
2.3.4 安装sudo
安装sudo命令:apt install sudo -y
2.3.5 新建一个普通用户
新建一个普通权限的用户aaa,命令:adduser aaa
然后输入两次密码,会提示填Full Name等信息,直接按回车键略过,最后输入 y 确认
注:
有些人觉得新建普通用户没啥用就跳过此步骤,全程用root用户来操作,表面上也能正常运行服务器,实则暗藏了很多隐患

2.3.6 为用户aaa添加权限
作为普通用户,aaa有时需要执行一些需较高权限的命令,切换root用户又麻烦,所以执行以下操作后,在命令前加sudo即可暂时拥有管理员权限
① 给sudoers文件添加“写”权限,命令:chmod u+w /etc/sudoers
② 使用vim编辑sudoers文件,命令:vim /etc/sudoers
先按 i 键进入编辑模式,将光标移到要改写的位置输入内容,写完后按键盘esc键退出编辑模式,输入:wq执行保存和退出操作(w代表保存,q代表退出)

③ 撤销sudoers文件的“写”权限,命令:chmod u-w /etc/sudoers
注:
其实root用户可以直接编辑sudoers文件,最后用 :wq! 强制保存并退出即可,无需修改sudoers的写权限,但考虑到linux系统版本众多可能有不适用的情况,所以两种方式任选一种即可
2.4 申请CS2开服令牌
【提示:目前CS2服务器不需要开服令牌,此章节仅供参考】
与csgo时代搭建服务器相同,需要申请 Steam account token 并添加在server.cfg中,否则网络上的玩家无法连接到自己搭建的CS2服务器。在CS2服务器启动过程中,可以看到有添加token的提醒,如下图所示

V社已经给CS2专用服务器分配了 app id:2347773,但可能因为目前CS2服务器端和游戏端共用一套游戏文件,即共用 app id:730。截止于2024-04-07,是否添加token并不影响CS2服务器的运行
先放上申请token的链接(国内需开加速器打开链接)https://steamcommunity.com/dev/managegameservers
首次打开链接需在网页右上角登录steam账号
检查steam账号是否符合要求,如下图所示

若不满足要求,那就换个steam账号,如果你搭建CS2服务器后还会安装一些插件,例如全皮肤插件,那最好换手机号重新创建一个steam小号,因为无论VAC还是GSLT封禁,绑定同一个手机号/邮箱的steam号要连坐的
接下来看网页最下端,填写app id后就可以创建令牌,如下图所示

根据个人经验,新申请的令牌,如果在一周内没有使用,就会过期,如果曾经使用过令牌,一个月内没有再次使用,令牌也会过期,过期的令牌就失效了,需要重新申请。目前搭建CS2服务器并不需要令牌,可以不申请
如果有一天需要用到开服令牌,可以参考3.4或3.6章节的步骤来设置开服令牌3 搭建CS2服务器
3.1 安装SteamCMD所需的依赖库
安装命令:apt install lib32gcc-s1

3.2 下载并安装SteamCMD
① 在FinalShell里新建一个ssh连接,填写普通用户aaa的账号和密码进行连接
② 在/home/aaa路径下新建Steam文件夹,SteamCMD相关的东西都放这里,命令:mkdir /home/aaa/Steam
注:
SteamCMD相当于windows系统下的steam客户端,只不过它没有图形化界面,只能通过输入命令来执行各种操作
③ 打开Steam文件夹,命令:cd /home/aaa/Steam
④ 下载SteamCMD安装包,命令:sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
注:
首次使用sudo命令时,需要输入用户aaa的密码
⑤ 解压并删除SteamCMD安装包,命令:tar xvf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz

⑥ 保持当前路径/home/aaa/Steam,继续安装SteamCMD,命令:./steamcmd.sh安装完成后,命令行会变成以Steam>开头

注:
需要升级SteamCMD程序时,执行步骤⑥即可自动更新升级SteamCMD
⑦ 退出SteamCMD,命令:quit 或 exit
3.3 下载并校验CS2服务器文件
① 进入SteamCMD的安装目录,命令:cd /home/aaa/Steam
运行SteamCMD,命令:./steamcmd.sh
注:接下来步骤②③④⑤的操作均是在Steam>后输入命令
② 指定CS2服务器文件的安装目录,命令:force_install_dir /home/aaa/Steam/cs2-ds
③ 使用匿名账号登录SteamCMD,命令:login anonymous
注:
也可以使用steam账号登录SteamCMD,命令格式:login 账号 密码
如果绑定了steam手机令牌,接下来还要输入steam令牌验证码
因为目前CS2的游戏端和服务器端使用的是相同的游戏文件,若使用自己的steam账号登录SteamCMD后,下载或更新CS2的同时也会将已订阅的创意工坊地图下载到CS2的服务器端,文件路径:/home/aaa/Steam/cs2-ds/steamapps/workshop/content/730/ ,这部分文件只是白白浪费服务器硬盘空间,因此建议匿名登录SteamCMD
④ 下载并校验CS2服务器文件,命令:app_update 730 validate
要下载的CS2服务器文件大小约34G,下图为安装成功的截图

⑤ 下载和校验完成后退出Steam>,命令:quit 或 exit
注:
① 如果下载时报错,错误代码0x2,可多次重试下载或改天再试,可能是网络问题
② 如果下载时报错:Error! app '730' state is 0x202 after update job.,错误代码0x202,原因是安装CS2的磁盘分区可用空间不足
3.4 配置server.cfg
server.cfg文件里包含服务器的各种设置选项
① 将当前目录切换到cfg文件夹,命令:cd /home/aaa/Steam/cs2-ds/game/csgo/cfg
② 编辑server.cfg文件,命令:vim server.cfg
写入以下内容(//之后是注释内容,可以不写):
hostname "XXX's CS2 Server" //设置CS2服务器的名称
sv_region 4 //设置服务器区域为亚洲
sv_password "" //在引号内填写客户端连接服务器的密码,引号内不填就是不设密码
rcon_password "" //在引号内填写远程连接服务器控制台的密码,引号内不填就是不设密码
mp_autokick 0 //防止因 挂机、友伤、自杀 等原因被服务器踢出房间
mp_drop_knife_enable 1 //可以扔掉匕首
sv_cheats 1 //打开作弊
写入后按下键盘的Esc键,然后输入:wq即可保存并退出
注:
① 关于CS2服务器名称 hostname,以前csgo会在游戏内Tab计分板上显示此信息,现在更新CS2后只在国际服的社区服浏览器内显示此服务器名称
② 目前 rcon 功能不可用,可以通过从github下载fake-rcon插件来实现 rcon 功能
③ 可以在server.cfg中添加指令 host_workshop_map 来加载创意工坊地图,具体用法请参考我的另一篇专栏或视频
④ 如果CS2服务器强制要求添加开服令牌,则可以加入指令:sv_setsteamaccount "xxxxxxxxxx" 也可在CS2服务器的启动项中添加开服令牌,参考3.6章节,效果是一样的
⑤ 以上指令并非全都要写入的,可以根据个人需求增减,其他的指令请参考CS2官方社区文档:
https://developer.valvesoftware.com/wiki/List_of_Counter-Strike_2_console_commands_and_variables
3.5 解决找不到steamservice.so的报错
根据V社的文档,linux系统下会遇到steamservice.so missing/failed to load的报错,如下图所示

以下是解决办法
①打开用户aaa的目录,命令:cd /home/aaa
列出所有文件目录,命令:ls -al
查看有没有名为 .steam 的文件夹,如果有则检查它是否包含 sdk64 和 sdk32 两个文件夹,如果没有则按以下步骤继续操作
② 创建并进入 .steam 文件夹,命令:mkdir .steam && cd .steam
③ 创建两个文件夹,命令:mkdir sdk64 && mkdir sdk32
④ 创建第一个软连接,命令:ln -s /home/aaa/Steam/linux64/steamclient.so /home/aaa/.steam/sdk64
创建第二个软连接,命令:ln -s /home/aaa/Steam/linux32/steamclient.so /home/aaa/.steam/sdk32
3.6 启动CS2服务器
有两种方式启动CS2服务器
方式一(不推荐,因为每次启动服务器太麻烦)
打开指定目录,命令:cd /home/aaa/Steam/cs2-ds/game/bin/linuxsteamrt64/
再输入命令:
./cs2 -dedicated -insecure -usercon -console -nomaster +port 27015 +map de_dust2 +game_type 0 +game_mode 0 +exec server.cfg -maxplayers_override 10
稍等片刻,看到GC Connection established for server version 2000168, instance idx 1,代表CS2服务器启动完成
方式二(推荐)
打开CS2服务器文件目录,命令:cd /home/aaa/Steam/cs2-ds
创建一个包含启动项的启动脚本,命令:vim start.sh,按下键盘的i键进入编辑模式,写入:
/home/aaa/Steam/cs2-ds/game/bin/linuxsteamrt64/cs2 -dedicated -insecure -usercon -console -nomaster +port 27015 +map de_dust2 +game_type 0 +game_mode 0 +exec server.cfg -maxplayers_override 10
写入时注意每个启动项之间只能有一个空格
写入后按下键盘的Esc键,再输入 :wq 即可保存并退出
然后给脚本赋予可执行权限,命令:chmod +x start.sh
最后通过此脚本启动CS2服务器,命令:./start.sh
注:
① 注意要在云服务器的安全组或debian防火墙设置中开放27015端口
② CS2启动项说明
-dedicated //起源2专用服务器(目前没有CS2专用服务器)
-insecure //禁用VAC(-secure是启用VAC)
-usercon //允许拥有rcon密码的人进行远程管理
-console //启用控制台输出(csgo时代的启动项,CS2里效果未知)
-nomaster //隐匿CS2服务器(防止别人恶意攻击服务器)
-debug //打开调试模式(csgo时代的启动项,CS2里效果未知)
+port 27015 //服务器端口默认是27015,可更改端口号(要在服务器防火墙或安全组里打开此端口的TCP和UDP)
+mapgroup mg_bomb //设置地图组为拆弹地图组
+map de_dust2 //设置默认打开的地图,这里de_dust2指炙热沙城2
+game_type 0 //设置game_type
+game_mode 1 //设置game_mode
+exec server.cfg //服务器启动时自动执行server.cfg
-maxplayers 10 //设置服务器的最大玩家数量
-maxplayers_override 10 //设置服务器的最大玩家数量
+sv_setsteamaccount xxxxxx //CS2新增的一种添加开服令牌的方法,需将 xxxxxx 替换为自己申请的token
-ip //设置CS2服务器ip(个人最痛恨的启动项,虽然它出现在CS2官方社区文档里,很多人从别的教程里抄来这个启动项导致无法连接CS2服务器,还要我来帮他排查问题!而我从来没用过这个启动项也不影响我运行CS2服务器。猜测docker里会用到)
备注:CS2官方社区文档给出的是 -maxplayers 启动项,但实测 -maxplayers_override 也能实现相同效果
③ CS2游戏模式说明
休闲模式:game_type 0 game_mode 0
竞技模式:game_type 0 game_mode 1
搭档模式:game_type 0 game_mode 2
死亡竞赛:game_type 1 game_mode 2
军备竞赛:game_type 1 game_mode 0
自定义模式:game_type 3 game_mode 0
参考CS2官方社区文档:https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers#Game_Modes_.26_Types
④ CS2地图说明
【远古遗迹 Ancient】de_ancient
【阿努比斯 Anubis】de_anubis
【炙热沙城2 Dust II】de_dust2
【炼狱小镇 Inferno】de_inferno
【荒漠迷城 Mirage】de_mirage
【核子危机 Nuke】de_nuke
【死亡游乐园 Overpass】de_overpass
【殒命大厦 Vertigo】de_vertigo
【意大利小镇 Italy】cs_italy
【办公室 Office】cs_office
【行李仓库 Baggage】ar_baggage
【山林小寨 Shoots】ar_shoots
参考CS2官方社区文档:https://developer.valvesoftware.com/wiki/Counter-Strike_2/Maps
⑤ csgo地图组说明
mg_bomb //拆除地图组
mg_casualsigma //炸弹拆除地图组I号
mg_casualdelta //炸弹拆除地图组II号
mg_hostage //人质解救地图组
mg_reserves //后备生涯地图组
mg_demolition //爆破模式地图组
mg_armsrace //军备竞赛地图组
这是csgo的地图组,有一部分不适用于CS2
CS2服务器启动项中可以不指定地图组,指定地图名和游戏模式即可3.7 关闭CS2服务器
在服务器端输入命令:quit 或 exit
3.8 向CS2服务器添加创意工坊地图
这部分我单独写了专栏,点击此处跳转
4 日常使用
4.1 启动CS2服务器
启动方法在本文3.6章节,根据地图和游戏模式来调整启动项
4.2 玩家连接CS2服务器
玩家在CS2游戏的控制台输入连接指令:connect xx.xx.xx.xx:27015
如果在服务器端server.cfg中设置了连接密码,则连接指令变为:connect xx.xx.xx.xx:27015;password xxx
注:
① 这里的 xx.xx.xx.xx 要替换为服务器的公网ip,同时将27015替换为启动项中指定的端口号,将 xxx 替换为连接密码
② 第一次连接成功后电脑会记住密码,以后的连接指令里可不写;password xxx
③ 如果使用的是默认的27015端口,连接指令里可以不写:27015
④ 如果玩家连接失败,请再检查连接指令是否写错,同时检查服务器端是否有开放指定的端口号,或者CS2的服务器文件需要更新
4.3 更新CS2服务器文件
如果玩家连接CS2服务器时出现客户端已过期之类的弹窗,其实是CS2服务器文件需要更新。有两种方式更新CS2服务器文件,原理是相同的
【备注】目前CS2服务器更新后,像server.cfg这种修改过内容的文件可能会被还原为初始内容,因此升级更新前请做好备份
【方式一】
按本文3.3章节的步骤,重新下载一遍CS2服务器文件(不是下载完整的CS2,它会自动的只下载需要更新的部分)
【方式二】
在debian系统中,打开路径/home/aaa/Steam,确保能找到steamcmd.sh(如果没有,则按照本文3.2章节的步骤重新下载并解压),在同路径下创建一个脚本用来更新CS2服务器文件,命令:vim update-cs2.sh ,写入:
#!/bin/bash
./steamcmd.sh +force_install_dir /home/aaa/Steam/cs2-ds +login anonymous +app_update 730 +quit
然后保存并退出
(说明一下,上面蓝色部分是两行命令,B站新版页面显示存在bug,如果你复制时中间多了空行或者第二行多了#号,请手动删除)
给脚本赋予可执行权限,命令:chmod +x update-cs2.sh
以后每次需要更新CS2服务器时,就先打开路径 /home/aaa/Steam
再执行检查更新的命令:./update-cs2.sh
4.4 解决硬盘可用空间不足的问题
首先说明一下CS2的更新机制:假如更新包为2G,硬盘可用空间为800M,CS2更新时会先删除一部分旧文件腾出一部分空间,再下载安装一部分新文件,然后再删除一部分旧文件,如此循环进行,也就是说当硬盘可用空间比更新包小的时候,也是有可能完成更新的
如果更新过程中确实因为可用空间不足而报错,有以下两种解决办法
【方法一】完全删除CS2服务器文件,再重新下载安装
【方法二】熟悉linux系统的可以卸载一些不需要的软件以腾出空间;也可以打开CS2的服务器文件目录:/cs2-ds/game/csgo/maps/ 删除几个官方地图,也能腾出一部分硬盘空间,等CS2完成更新后,执行本文3.3章节的步骤,对CS2服务器文件进行完整性校验(主要是 validate 这个命令),这样就可以把缺失的地图重新下载回来
【方法三】诸如阿里云、华为云这些云服务器厂家会提供硬盘扩容服务,每1GiB/年大约为2元,花几块钱给硬盘扩容2GiB用担心CS2更新时硬盘空间不足了。不知道怎么操作的可以找对应的客服咨询或提交工单
4.5 后台运行CS2服务器的方法
参考我的其他专栏:screen 软件介绍和用法
5 本专栏更新日志
【2023-10-20】
本专栏创建
【2023-11-05】
3.4和3.8章节,添加链接指向新专栏:CS2服务器 - 添加创意工坊地图
【2023-11-09】
2.4和3.4章节,添加服务器令牌(Steam account token)相关内容
3.6章节,增加两个启动项:-maxplayers 和 +host_workshop_map
【2023-11-20】
2.1章节,新增购买云服务器的一些建议
3.6章节,新增一个启动项 -ip ,以及相关介绍
【2023-12-25】
3.6章节,新增一个添加开服令牌的启动项 +sv_setsteamaccount
4.4章节,新增硬盘可用空间不足的解决办法
【2024-02-25】
3.6章节,新增行李仓库和山林小寨地图名,新增军备竞赛模式
经验证:本专栏所述的服务器搭建方法仍旧有效,目前CS2开服依旧不需要token
经验证:使用frp方式进行内网穿透可用于解决无公网IP开服的问题
【2024-4-2】
增加视频版搭建CS2服务器教程,以便纯新手遇到问题时能有所对照
4.4章节新增方法三
【2024-4-7】
3.2章节删掉 su 切换linux账户的命令,因为这个方法容易误导新手。在FinalShell、Windterm等ssh终端里,仅在命令行界面用 su 命令切换账户一般无法同步到自带的文件管理器,导致后续读者向服务器传输的文件的所有者仍是root,最终读者以普通用户运行CS2服务器时会收到找不到文件的报错
6 总结
CS2目前算是半成品,MetaMod的Dev版本已支持CS2,还有皮肤插件,但考虑到CS2各种更新的不确定性,指不定哪天就被V社给封号了(参考近期AMD显卡驱动的anti-lag功能)。本文的一些内容也肯定随着CS2的不断更新而失效,如果读者有问题请留言,但我可能不会及时回复,甚至不回复,因为CS2更新太频繁,现阶段不建议花费太多精力去探索新功能或解决其他问题
关于CS2服务器的可用插件,可以参考国外论坛的汇总列表,网址:https://www.ghostcap.com/cs2-plugins-list/


IP属地:广东1楼2024-05-04 02:24回复