如何搭建自己的CS GO服务器和小伙伴快乐联机,并配合Sourcemod设置管理员

2022-10-06 11:18:01 浏览数 (3)

博客:https://www.mintimate.cn Mintimate’s Blog,只为与你分享

CS GO确实是一个经久不衰的游戏。如何搭建自己的CS GO私人服务器呢?体验自己当服主,随时联机的快乐。

头图不能少~头图不能少~

前言

CS GO(《反恐精英:全球攻势》英语:Counter-Strike: Global Offensive,中国香港和台湾译作“绝对武力:全球攻势”)发布于2012年,随着不断的更新,游戏依旧火爆。

最近一位B站的粉丝,就发私信,希望和小伙伴搭建一个CS GO的个人私服;我之前并没有玩过CS GO,不过,既然是铁粉的需求,我们就尝试了一下。总的来说,确实有一些坑。

准备工具

服务器

目前,CS GO的服务器自建,支持Linux Server和Windows Server服务器,这两个就要看自己的取舍了:理论上,Windows Server更容易上手,毕竟大多数人的操作系统是Windows,但是对资源的浪费很大,举个例子:一台2C 4G的服务器,Windows Server可能系统占用1G内存,而Linux才占100M不到。

为了重新体现我们是Linux技术博主,本次搭建CS GO,使用Linux Server进行演示(腾讯云Debian Linux系统)。

如果你并没有服务器设备,需要一个购买/租借,强烈推荐学生用户:

  • 腾讯云轻量应用服务器学生优惠

另外,为大家争取到优惠*(੭ˊᵕˋ)੭ଘ,本站专属优惠~~(可能比学生优惠还优惠哦~)

  • 本站专属腾讯云秒杀链接(可低价购买轻量应用服务器)

中国香港、新加坡等地区,还可以买Lighthouse的中国香港、新加坡地区服务器,性价比高,适合有国际建服的需求。

  • 腾讯云轻量应用服务器

经过测试,一台2C 4G 6M配置腾讯云轻量应用服务器,可以流畅运行CS GO服务器,6M带宽足够十个人以128tick进行 5v5(・_・;

如果你是Windows Server用户,那么建议至少选择2C 4G的服务器配置。

传输软件

后续我们需要设置管理员,管理员的设定,需要借助两个mods:

  • sourcemod:https://www.sourcemod.net/downloads.php?branch=stable
  • Metamod:http://www.sourcemm.net/downloads.php?branch=stable

而CS GO安装mod主要的方法就是替换和追加文件。为了方便我们把本地的文件,拖拽上传到Linux服务器上,我们这里使用filezilla进行数据传输:

左边本地,右边服务器左边本地,右边服务器

Filezilla下载地址:https://filezilla-project.org/download.php?type=client

辅助视频

嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连哦~

B站视频地址:https://www.bilibili.com/video/BV1ud4y1R7Rk

如果感兴趣,还可以关注我们,带你初识Linux Server的魅力⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄

服务器初始化

服务器初始化,我们Linux Server和Windows Server都讲一下,不过后续章节就只讲Linux Server了哦。Windows Server用户,可以按图索骥(因为Windows Server操作比Linux Server简单,需要切换用户的时候,Windows用户无需操作)。

Linux Server

如果你购买的是Linux Server(Debian、Ubuntu和CentOS等)服务器:

以腾讯云服轻量应用服务器Lighthouse为例,如果你购买的是Linux服务器(Debian、Ubuntu或CentOS等Linux发行版本服务器),如果想快速初始化,可以按

  • 详解如何SSH远程登录自己的Linux服务器;
  • 服务器搭建宝塔面板快速初始化;

Windows Server

如果你购买的是Windows Server(Windows Server2019、Windows Server 2022)。我们购买服务器后,切换到腾讯云服务器后台,重制我们的Administrator用户密码:

重制密码重制密码
重制密码重制密码

之后,就可以远程连接服务器。你可以使用腾讯云的WebRDP(远程桌面):

VNC远程VNC远程

后续如需上传本地配置给服务器使用时,我们可以使用微软远程桌面(Microsoft Remote Desktop),并开设共享文件夹。

macOS远程macOS远程
设置本地交互目录设置本地交互目录

并且创建一个共享的文件夹,用来文件交互:

远程后效果远程后效果
进入文件夹进入文件夹

Windows如下:

Windows自带的远程:鼠标右击开始菜单>>运行,输入mstsc命令,打升远程桌面对话框:

初始化初始化

打开高级选项:

设置高级设置高级

并且,对本地文件夹进行映射:

设置本地交互目录设置本地交互目录
远程后效果远程后效果
进入文件夹进入文件夹

SteamCMD

本章节目录,所有操作均在Linux Server的Terminal内操作(SSH连接服务器后的“黑窗”),不是本地Windows或者macOS、Linux,特此提醒。

在Terminal上,我们首先依靠软件包管理器先安装依赖:

代码语言:shell复制
sudo apt install -y systemd-sysv wget screen libstdc  6 lib32stdc  6 lib32z1 tar libcurl4-openssl-dev lib32gcc1
使用软件包管理器安装依赖使用软件包管理器安装依赖

这样就安装了我们SteamCMD所需的前置依赖,也方便我们后续使用wget下载SteamCMD和Mod等操作。

观察SteamCMD官方文档,SteamCMD需要用一个叫steam的用户,并在steam用户的“家”目录下的steam文件夹内操作。所以,我们提前创建:

代码语言:shell复制
# 创建一个用户叫steam
sudo useradd -m steam
# 给steam重置密码
sudo passwd steam 
添加Steam用户添加Steam用户

之后,我们切换到steam用户,并创建文件夹:

代码语言:shell复制
mkdir ~/Steam && cd ~/Steam
创建Steam文件夹创建Steam文件夹

下载SteamCMD原始文件并解压:

代码语言:shell复制
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
下载SteamCMD原始文件下载SteamCMD原始文件

到此,我们的SteamCMD前期的准备就完成了,准备接下来的CS GO服务器拉取以及初始化等操作。

拉取CS_GO服务端

本章节目录,所有操作均在Linux Server的Terminal内操作(SSH连接服务器后的“黑窗”),不是本地Windows或者macOS、Linux,特此提醒。

通过steamcmd创建游戏目录及安装对应游戏(这里重定向CS GO游戏的下载目录到Steam用户“家”目录下的Steam/my_csgo_server内:

代码语言:shell复制
./steamcmd.sh  force_install_dir ~/Steam/my_csgo_server  login anonymous  app_update 740  quit

其中:

  • ~/Steam/my_csgo_server:CS GO服务器重定向下载地址;
  • 740:CS GO服务器游戏代号(appid)。
SteamCMD拉取CSGOSteamCMD拉取CSGO
SteamCMD拉取CSGO中SteamCMD拉取CSGO中
SteamCMD拉取CSGO成功SteamCMD拉取CSGO成功

可以看到,我们这样就拉取成功了,可以进行CS GO的初始化步骤了。

如果出现错误,比如这样的:

SteamCMD拉取CSGO失败SteamCMD拉取CSGO失败

只需要重新运行./steamcmd.sh force_install_dir ~/Steam/my_csgo_server login anonymous app_update 740 quit即可。

Steamaccount

在进行CS GO社区服务器初始化前,我们需要获取一个steamaccount创建的子ID,也就是CS GO配置文件的sv_setsteamaccount;有了这个进行开服,小伙伴才可以使用Steam的账号登陆CS GO的游戏并使用自己Steam的用户资料进入。

获取的条件:

  • Steam 帐户目前不能处于被社区封禁或锁定状态。
  • Steam 帐户不能处于受限状态。
  • Steam 帐户必须以及绑定了手机令牌。
  • Steam 帐户必须拥有所创建游戏服务器对应的游戏。
  • Steam 帐户可最多能创建1000个游戏服务器。
  • Steam 账号最少实际消费达5美元(折合人民币35元左右,礼品卡激活的商品价值不计算到其中)

首先,我们进入Steam Account的官网:https://steamcommunity.com/dev/managegameservers并选择登录Steam账号:

登录登录

登录后,填写信息:

登录后,填写信息登录后,填写信息

最后,提交后,即可得到sv_setsteamaccount

得到sv_setsteamaccount得到sv_setsteamaccount

我们拿着这个sv_setsteamaccount,后续开服会使用到,比较关键。

CS_GO服务端初始化

本章节目录,所有操作均在Linux Server的Terminal内操作(SSH连接服务器后的“黑窗”),不是本地Windows或者macOS、Linux,特此提醒。 并且,当前在/home/steam/Steam目录内,以下相对路径需要注意

配置文件编写

首先,我们根据官方给的配置文件模版进行配置文件的创建,复制内容:

代码语言:shell复制
// ************************************************************************** //
//                                                                            //
//     Counter-Strike: Global Offensive - server.cfg                          //
//     Version 120719                                                         //
//                                                                            //
// ************************************************************************** //

// .................................. Basic ................................. //

// Hostname - Name of the server.
hostname "" // 服务器名称

// RCON - remote console password.
rcon_password "" // OP 密码

// Server password - for private servers.
sv_password ""//进入服务器所需密码(如果不需要可以直接删除此行)

sv_setsteamaccount "" // Steamaccount(上文获取的sv_setsteamaccount)

// Email - Server admin email.
// Example: sv_contact "email@example.com"
sv_contact ""

// LAN mode - Server is a LAN server; can't connect from the internet. VAC (Valve Anti-Cheat) is disabled in this mode.
// Default: sv_lan 0
sv_lan 0

// Cheats mode - Server is disabled to use cheats by default;Commands like noclip,god are disabled to be exploited by the players. VAC (Valve Anti-Cheat) is disabled in this mode when value is set to '1'.
// Default: sv_cheats 0
// Cheats ON: sv_cheats 1
sv_cheats 0

// Tags - Used to provide extra information to clients when they're browsing for servers. Separate tags with a comma.
// Example: sv_tags "128-tick,deathmatch,dm,ffa,pistol,dust2"
sv_tags ""

// Region - The region of the world to report this server in.
// Default: -1
// 0 - US East, 1 - US West, 2 - South America, 3 - Europe, 4 - Asia, 5 - Australia, 6 - Middle East, 7 - Africa
sv_region -1

// ............................. Server Logging ............................. //

// Enable log - Enables logging to file, console, and udp < on | off >.
// Recommended: log on
log on

// Log bans - Log server bans in the server logs.
// Default: sv_logbans 1
// Recommended: sv_logbans 1
sv_logbans 1

// Log echo - Display log information to the server console.
// Default: sv_logecho 1
// Recommended: sv_logecho 1
sv_logecho 1

// Log file - Log server information in the log file.
// Default: sv_logfile 1
// Recommended: sv_logfile 1
sv_logfile 1

// One file log - Log server information to only one file.
// Default: sv_log_onefile 0
// Recommended: sv_log_onefile 0
sv_log_onefile 0

// Server Hibernation
sv_hibernate_when_empty 1
sv_hibernate_ms 5

// ............................. Server Query ............................. //
// More info at: https://www.gametracker.com/games/csgo/forum.php?thread=91691
host_name_store 1
host_info_show 1
host_players_show 2

// ................................ Ban List ................................ //

// User ban - Server banlist based on user steam ID.
// Recommended: exec banned_user.cfg
exec banned_user.cfg

// IP ban - Server banlist based on user IP.
// Recommended: exec banned_ip.cfg
exec banned_ip.cfg

// Write ID - Writes a list of permanently-banned user IDs to banned_user.cfg.
writeid

// Write IP - Save the ban list to banned_ip.cfg.
writeip

my_csgo_server/csgo/cfg下创建一个叫server.cfg的文件,粘贴内容到其中,你可以使用vim,也可以本地配置好后,上传到服务器内对应文件夹内。

比如,使用vim,创建并编辑文件:

代码语言:shell复制
# 当前在/home/steam/Steam目录下;如果你和我步骤一样,那么无需修改
vim my_csgo_server/csgo/cfg/server.cfg
使用vim创建并编辑使用vim创建并编辑

修改配置项为自己内容:

编辑配置项编辑配置项

其中:

  • hostname:服务器昵称,用于联机大厅内显示;
  • rcon_password:rcon的密码,通常不会使用;
  • sv_password:服务器密码,加入该CSGO服务器时,需要输入的密码;
  • sv_setsteamaccount:上个章节获取的。

最后的文件目录效果:

编辑配置项编辑配置项

之后,就可以进行启动了。

启动服务器

CS GO服务器,默认也是使用脚本进行启动并且和Minecraft服务器,持续处于交互模式,方便我们在后台输入指令进行服务器的控制;所以,我们也是使用screen挂起后台比较好。 但是,我们后期还要安装mod,所以这里我就不演示screen如何挂起CS GO的服务器了,screen的使用,可以参考:终端命令神器--Screen命令详解。助力Unix/Linux使用和管理

我们这里回到CS GO的安装目录,如果你按着本文的操作方法,Terminal在上章节基础上,进入my_csgo_server目录,即:在/home/steam/Steam/my_csgo_server目录内即可:

CS GO目录CS GO目录

我们运行srcds_run即可(Windows Server用户运行srcds.exe):

代码语言:shell复制
./srcds_run

之后,CSGO的服务器就会开始运行:

CS GO运行CS GO运行

可选内容=>

你也可以添加启动参数进行CS GO服务器的启动:

代码语言:shell复制
./srcds_run -game csgo -tickrate 128 -console -rcon -usercon -ip 0.0.0.0  game_type 0  game_mode 1  mapgroup mg_active  map de_dust2 -maxplayers_override 10  port 27015  tv_port 27020 -autoupdate -steam_dir "../steamcmd" -steamcmd_script "../steamcmd/update_csgo.txt"  net_public_adr "IP"

其中:

  • tickrate:服务器每秒钟接收并运算的次数,CS GO默认为64次(tickrate 64);
  • game_type&game_mode:游戏模式,各个数值含义参考教程;
  • maxplayers_override:最大玩家数量;
  • port:游戏端口;
  • autoupdate:自动更新,开启后,需要定义steam_dirsteamcmd_script
  • steam_dir:SteamCMD安装地址;
  • steamcmd_script:基于SteamCMD的更新命令存放地址。

如果你跟着本教程来的,可以在~/Steam下创建一个叫update_csgo.txt的文件夹,并追加内容:

代码语言:shell复制
force_install_dir ~/Steam/my_csgo_server 
login anonymous
app_update 740 
quit

出现sv_setsteamaccount的数值,说明CSGO运行成功:

CS GO运行成功CS GO运行成功

这个时候,我们的CS GO就可以进行本地与服务器的连接了。但是还是需要对防火墙进行放行。

关闭服务器

这里提供一个可选项,如果你需要关闭服务器,只需要在控制台上输入quit即可安全关闭CS GO服务器:

安全关闭安全关闭

服务器防火墙

现在,我们需要对服务器防火墙进行放行。本着用那个端口就放行那个的原则,CS GO默认使用的是UDP协议的27015端口,为了确保端口联通,我们把TCP也放行:

腾讯云后台放行CSGO的UDP端口腾讯云后台放行CSGO的UDP端口

之后,就可以服务器连接了,可以看看下一章节。

本地连接

本章节目录,所有操作没有特别说明,均在本地Windows、macOS上操作哦;特此提醒。

本地,其实很多种方法连接到远程服务器;比如,你可以在开始游戏后,在社区服务器浏览器内查找你的服务器;也可以更简单点,直接使用开发者控制台进行连接,我们就使用这个建党的方法。

打开本地的CS GO,选择各项设置菜单,选择启动开发者控制台

启动控制台启动控制台

之后,我们按~即可打开控制台:

打开控制台打开控制台

在之后,一次输入:

代码语言:shell复制
password "你的服务器密码"
connect "你的服务器IP"

即可进行连接:

远程连接远程连接

进入游戏成功:

远程连接成功远程连接成功

服务器上的控制台也有成功加入的日志反馈:

远程连接成功远程连接成功

添加管理员

添加管理员,其实是依靠CS GO的社区插件SourceMod;而SourceMod需要前置依赖MetaMod,一些第三方插件,还需要前置依赖Ptah;总的来说:

代码语言:shell复制
MetaMod  这个是相当于 Framework
SourceMod  相当于 Admin
Ptah 相当于 Extension
其他的mod(皮肤,死斗啥的。。) 才相当于 Plugins
-- 博哥

Ptah安装,其实和MetaMod和SourceMod一样,这里我们就演示这两个。

安装MetaMod

现在,我们安装我们的MetaMod,这个是相当于所有插件的前置依赖。

我们首先进入MetaMod的官网:http://www.sourcemm.net/downloads.php?branch=stable

下载MetaMod的插件包到本地:

下载MetaMod到本地下载MetaMod到本地

下载后,并解压文件:

MetaMod解压后,得到addons文件夹MetaMod解压后,得到addons文件夹

这个时候,打开FileZilla软件,上方填入我们的服务器信息:

下载MetaMod到本地下载MetaMod到本地

之后,左边就是本地,右边就是服务器。我们这边定位到addons文件夹(MetaMod解压出的addons文件夹),右边定位到CSGO下载目录下的csgo文件夹内,并移动addons到其中:

上传addons到服务器(拖拽即可)上传addons到服务器(拖拽即可)

到此,Metamod就安装好了。(是不是很神奇?合并大法好呀);

我们重启CS GO就会生效(也就是先quit,之后再启动CS GO服务器)。

安装SourceMod

接下来,我们来安装SourceMod,其实安装的方法也很简单,也是简单的下载、合并。

我们首先进入SourceMod的官网:http://www.sourcemod.net/downloads.php

下载SourceMod的插件包到本地:

下载SourceMod到本地下载SourceMod到本地

下载后,并解压文件:

SourceMod解压后,得到的文件夹SourceMod解压后,得到的文件夹

这个时候,回到FileZilla软件,右键刷新一下本地目录,打开SourceMod解压后的文件夹:

FileZilla打开SourceMod文件夹FileZilla打开SourceMod文件夹

之后,可以看到有addonscfg文件,我们打开addons,将里面文件合并到服务器内addons文件夹内,注意是合并,而不是替换,比如:addons下metamod合并后的效果:

合并后的效果合并后的效果

同理,将cfg文件夹合并到服务器上与addons同级的cfg文件夹内:

合并后的效果合并后的效果

到此,SourceMod就安装好了,我们可以重启CS GO服务进程,之后,就可以使用命令看看CS GO是否有sm命令了:

代码语言:shell复制
sm plugins list
使用SourceMod的sm命令,查看已经安装的插件使用SourceMod的sm命令,查看已经安装的插件

如果出现命令不存在,那就是没有安装对哦,可以再检查一下后,重新启动CS GO服务器再看看。

更多的SourceMod命令,可以查看官方文档:https://wiki.alliedmods.net/index.php/Category:SourceMod_Documentation

设置管理员

现在,我们就来设置管理员,其实很简单。首先,我们客户端登录CS GO,呼出控制台(上文设置的按~),输入status

获取SteamID获取SteamID

这里我们就获取了用户的SteamID,比如是这样的:

代码语言:shell复制
STEAM_1:0:9999999999

我们只需要打开CS GO游戏目录下的csgo/addons/sourcemod/configs/admins_simple.ini:

代码语言:shell复制
# 当前在CS GO目录下
vim csgo/addons/sourcemod/configs/admins_simple.ini
修改admins_simple.ini修改admins_simple.ini

在文件的末尾追加:

代码语言:shell复制
"STEAM_1:0:9999999999" "99:z"

其中:STEAM_1:0:9999999999替换为你的ID哦。

保存并退出。重启服务器,用户就是管理员了(如果你CS GO在screen内并没有关闭,也可以直接执行sm_reloadadmins,这样不需要重启服务器,也可以设置好管理员)。

PS:管理员在控制台(~)内输入sm_admin可激活控制面板:

sm_admin使用效果sm_admin使用效果

因为我使用macOS登录CS GO,所以字库不全。

Q&A

如何服务器迁移

服务器迁移其实很简单,你可以把所有自己的配置文件打包备份,不过我建议你可以直接备份CS GO安装目录下的CSGO:

备份该文件备份该文件

这样备份,可以保存服务器配置的同时,插件也保存下来,避免二次配置的麻烦。

如何24小时运行服务器

其实就是如何挂起CS GO,可以在screen内启动CS GO,并让screen后台运行即可。

如何更新CSGO服务器

首先,你备份CSGO服务器前,建议先备份CS GO安装目录下的CSGO,之后,到SteamCMD所在目录下,执行:

代码语言:shell复制
./steamcmd.sh  force_install_dir ~/Steam/my_csgo_server  login anonymous  app_update 740  quit

等待完成后,即可更新完成。

修改配置不生效

修改服务器配置,如:允许传送等配置。但是客户端查看服务器却没有生效,可以排查:

  • 修改配置后,服务器上CSGO服务器需要重新启动;
  • 配置可能填错了。

如何使用创意工坊地图

其实,使用创意工坊的地图很简单,需要添加启动参数:

  • host_workshop_map:创意工坊地图ID
  • -authkey:Steam Web API,用于远程拉取验证;获取Steam Web API参考:https://steamcommunity.com/dev?l=schinese

创意工坊的地图ID,其实就是地址栏的Get请求:

获取创意工坊地图路径获取创意工坊地图路径
获取地图ID获取地图ID

authkey获取就也很简单,打开https://steamcommunity.com/dev/apikey进行申请:

获取authkey获取authkey
获取authkey获取authkey

最后,在CS GO启动时候,启动参数内添加即可。

比如,原本的启动是:

代码语言:shell复制
./srcds_run

添加上启动参数:

代码语言:shell复制
./srcds_run  host_workshop_map 223333 -authkey 332222 

其中:22333332222需要替换为真实数值。

比如,我的启动参数:

代码语言:shell复制
./srcds_run  -game csgo -tickrate 128 -maxplayers_override 10   host_workshop_map 243702660 -authkey 27E42**************
更改地图更改地图

最后,成功加载到地图:

地图加载完成地图加载完成

启动后连接:

客户端载入地图客户端载入地图

需要注意:

  • 地图一般100~300MB,你可以打开服务器上CSGO服务器安装地址/csgo/maps/workshop/,根据地图ID,查看地图下载情况,判断地图是否成功下载。
  • 有时候设置了host_workshop_map后,无法连接服务器,这个时候……可能是因为你服务器无法连接Steam的创意工坊。可以多重启CS GO试试看。或者手动安装地图。

END

到此,CSGO服务器的搭建流程就结束了嗷,有问题可以留言哦~~

(*☻-☻*)~~

0 人点赞