记录一下在服务器上搭建csgo服务端的过程。
关于本文中所用到的服务器相关信息参数可点击此处查看。
一、安装SteamCMD
客户端上玩csgo需要安装steam,那在服务器上想要安装csgo,也需要安装一个steam,steam的服务器版本是SteamCMD。
这里是官方地址。
使用以下命令安装:
1 | sudo apt install steamcmd |
如果是64位的机器,则需要加一个multiverse
1 | sudo add-apt-repository multiverse |
二、安装CSGO
1、编写安装/更新脚本
可先执行命令steamcmd打开steam,若出现警告Failed to init SDL priority manager: SDL not found,说明缺少32位SDL库,可以通过以下命令安装:
1 | sudo apt install libsdl2-2.0-0:i386 |
用vim打开编辑器,新建编辑文件update_csgo.txt。
1 | // update_csgo.txt |
执行上述steam脚本命令:
1 | steamcmd +runscript update_csgo.txt |
2、服务器配置
我们在CSGO服务器目录下的csgo/cfg文件夹中新建一个文件叫做server.cfg(每次切换地图加载将会读取),然后在这里面修改我们需要的配置。一些参考的命令点击此处查看。
另外一个配置文件叫autoexec.cfg,这个文件同样位于位于csgo/cfg 。
这个文件会在第一张地图被加载之前执行。valve.rc执行autoexec.cfg ,并在下一句命令 stuffcmds ,将从命令行中执行带 + 的参数
在autoexec.cfg 中,你只需要设置一次指令。参考指令请点击此处查看。
其中有几个比较重要的参数:
rcon_password管理员密码,在控制台可以输入密码使用管理员权限,就不需要在后台使用指令
hostname服务器名称(记分板右上方显示),记得一定要修改,之前翻社区服务器的时候发现很多没修改的都是写着Counter-Strike Global Offensive的
sv_password玩家加入需要的密码,填入了就会加密你的服务器,只有输入正确的密码才能够进入
sv_setsteamaccount社区服注册秘钥,此项暂时留空,等以后需要用到创意工坊的地图再填上。
如果想在记分板左下方显示特定网址(如服务器使用说明),则可将URL填入文件csgo/motd.txt。
如:
1 | echo "https://rickyliu0w0.github.io/article/2022-01-29--Counter-Strike-Global-Offensive-Dedicated-Servers.html" > csgo/motd.txt |
三、安装常用插件
安装
两大模组:MetaMod、SourceMod,是玩服务器必不可少的模组,从半条命时代延续至今,已经非常成熟,如今几乎所有的插件都基于两大模组开发,功能非常强大!
还有一个满十pug-setup插件,用于十人竞技比赛使用。
模组、插件官方下载地址:
记住选择linux版本,下载方法不限,推荐右键复制下载地址,在命令行中使用wget <复制过来的下载地址>进行下载。
下载完毕后,依次解压,注意顺序,先Metamod,再SourceMod,最后csgo-pug-setup。
1 | tar -xzf mmsource-1.11.0-git1145-linux.tar.gz # 解压出addons |
设置管理员
在路径csgo/addons/sourcemod/configs/admins_simple.ini文件下,加上"STEAM_1:0:XXXXXXX" "99:z"
STEAM_1:0:XXXXXXX是SteamID,如果你想查询自己的ID,可以随便本地进图然后游戏控制台输入status,来获取你的ID。
99是优先级,一个普通整数,Z是最高权限。
附:系统内置的等级
| 名字 | 标志 | 目的 |
|---|---|---|
| reservation | a | 获取保留通道的权限 |
| generic | b | 通用管理员;需要管理员权限 |
| kick | c | 踢出其他玩家 |
| ban | d | 封禁其他玩家 |
| unban | e | 移除封禁 |
| slay | f | 攻击其他玩家 |
| changemap | g | 更改地图或者游戏属性 |
| cvar | h | 更改大多数cvars. |
| config | i | 执行config文件 |
| chat | j | 特殊聊天权限 |
| vote | k | 创建投票 |
| password | l | 给服务器设定密码 |
| rcon | m | 使用RCON命令 |
| cheats | n | 改变sv_cheats或使用作弊命令 |
| root | z | 开启所有标志并且无视免疫等级 |
| custom1 | o | 自定义组1. |
| custom2 | p | 自定义组2. |
| custom3 | q | 自定义组3. |
| custom4 | r | 自定义组4. |
| custom5 | s | 自定义组5. |
| custom6 | t | 自定义组6. |
免疫(优先级):
在SourceMod中,免疫是一个基于“免疫等级”的灵活的系统。每一个管理员都有一个免疫等级。一个管理员能否对另一个管理员进行操作取决于谁有更高的免疫等级。
例如,假设管理员#1免疫等级为3,管理员#2免疫等级为10。#2可以操作#1,反之不行。这些数字十分随意,并且他们可以是任何不小于0的数。注意,0代表着没有免疫。
默认情况下,同免疫等级的管理员可以相互操作。这个可以cfg/sourcemod.cfg在中的sm_immunity_mode里面修改。
拥有root权限(z)的管理员不受免疫等级影响 意味着他们可以操作任何人。
更多选项(密码,用户组)可参考添加管理员文档。
四、申请社区服令牌
需要注册一个 Steam 游戏服务器账号,这个账号是为了说明这个服务器是谁开的,只有在服务器启动的时候附上这个服务器账号,我们的服务器才能在互联网上被玩家使用。同时,也作为日后 Valve 追责的证明,因为按 V 社的规定,服务器不能提供改皮肤等插件,这个服务器账号会关联到你的 Steam账号,如果有一天他们发现你违反了规定,可以通过这个账号找到你的 Steam 账号。如果你是在局域网里开服务器,那么可以跳过这一步。
官方Steam账号要求
- 您的 Steam 帐户目前不能处于社区封禁或锁定状态。
- 您的 Steam 帐户不能受限。
- 您的 Steam 帐户必须拥有一个[合格的注册手机](https://support.steampowered.com/kb_article.php?ref=8625-WRAH-9030&l=simplified\ chinese)。
- 您的 Steam 帐户必须拥有所创建游戏服务器对应的游戏。
- 您的 Steam 帐户可以创建 1000 个游戏服务器帐户。
访问Steam 社区::Steam 游戏服务器帐户管理这个链接,在这里登陆你的Steam账号(一定要没有VAC记录和社区违规记录!!!否则会无法注册)。由于访问steam社区,记得要梯子。
然后我们在下面的APPID里面填入730,备忘录按照自己喜好填,主要是用来区分不同的秘钥使用。记住这个密钥,服务器启动参数要用。
五、 开放安全组端口
由于腾讯云的安全原因,默认安全组仅开放常用端口。在您启动您的 CS:GO 服务器之前,您必须放行端口以使服务器可在社区服务器浏览器中被发现。 打开腾讯轻量云的管理面板,点击“防火墙”后新建新建2个策略。因为你需要打开 27015 的 TCP 和 UDP 端口。
六、启动服务器
终于到最后一步了,创建脚本start_csgo.sh:
1 | #!/bin/bash |
根据实际情况修改XXX内容,保存。赋予执行权限:sudo chmod +x start_csgo.sh,然后./start_csgo.sh执行,即可启动。
执行该命令后,将会开一个新窗口执行csgo服务端程序,使用ctrl+A+D可以关闭这个运行窗口,它仍在后台执行。
使用screen -r重新将这个窗口调出来。quit或ctrl+C终止当前进程。
参数说明:
| 命令/参数 | 说明 |
|---|---|
| screen -S “CSGO” <command> | 新开一个窗口运行command中的命令 |
| srcds_run | 起源软件运行 |
| -game | 起源软件运行需要运行的软件,这里csgo |
| -tickrate | 服务器启动tick数 64/128 |
| -console | 使用控制台 |
| -usercon | 允许远程控制服务器 |
| +rcon_password | 远程控制服务器权限密码,自设 |
| +net_public_adr | 公布的服务器ip地址 |
| -port | 服务器开放给csgo的端口,默认27015 |
| +game_type +game_mode | 游戏模式,参考此处 |
| +mapgroup +map | 指定加载的地图组以及加载的首张地图 |
| +sv_setsteamaccount | 社区服务器令牌,参考第四步,将申请到的令牌填在这 |
| -net_port_try | 指定这是与令牌绑定的唯一服务器 |
| +sv_password | 私人服务器密码,自设 |