前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Debian10搭建CS1.6服务器

Debian10搭建CS1.6服务器

原创
作者头像
SakuraRain
修改2021-09-17 18:08:36
3.5K0
修改2021-09-17 18:08:36
举报
文章被收录于专栏:Rain的随笔小记

因为室友前段时间搭了个CSGO服务器,感觉挺有意思。自己手头上还有一台吃灰中的腾讯云轻量,突发奇想要不搭个CS1.6玩玩,反正吃灰也是吃灰。

我是参考了Debian10搭建CS1.6服务器-荒岛 (lala.im) 这篇文章来搭建的,只能算是自己的记录与遇到问题的补充。

准备步骤

首先更新软件源

代码语言:javascript
复制
apt -y update

添加用户、设置用户密码以及切换到用户

代码语言:javascript
复制
useradd -m -s /bin/bash steam
#-m 自动创建用户目录
#-s 指定用户shell解释器,这里设为bash
passwd steam
adduser steam sudo
su - steam
#不要尝试省略-,此符号代表将环境变量也一同切换

第一个问题:steam is not in the sudoers file. This incident will be reported

很奇怪,我按照原文中的方法添加了steam用户到sudo中,但似乎并没有生效,只能手动编辑sudoers文件

代码语言:javascript
复制
vi /etc/sudooers
#添加下面这行到文件中
steam ALL=(ALL:ALL) ALL

由于这是个只读文件,请输入wq!以保存并退出文件,保存完后reboot一下即可。

然后64位系统添加多架构支持

代码语言:javascript
复制
dpkg --add-architecture i386

安装steamcmd

代码语言:javascript
复制
apt update
apt -y install libsdl2-2.0-0:i386
apt -y install steamcmd

如果安装libsdl2-2.0-0:i386软件包时提示Couldn't find any package by glob 'libsdl2-2.0-0',请检查你有没有添加多架构支持并更新软件包列表。

安装steamcmd过程中会要让你同意使用协议,请按Tab再按回车键选择OK,再选择I AGREE即可完成安装,大概界面像下图

安装步骤

添加软连接并启动steamcmd

代码语言:javascript
复制
ln -s /usr/games/steamcmd steamcmd
steamcmd

登录匿名用户(用于下载游戏服务端文件)

代码语言:javascript
复制
login anonymous

指定目录

代码语言:javascript
复制
force_install_dir ./cs16

下载服务端文件

代码语言:javascript
复制
app_set_config 90 mod cstrike
app_update 90 validate

编辑配置文件,设置OP(管理员)密码,其中your_password替换为自己的密码

代码语言:javascript
复制
vi /home/steam/.steam/steamcmd/cs16/cstrike/server.cfg
#添加以下内容
rcon_password "your_password"

有可能会找不到目录,如果这样请切换到steam用户后重新进入steamcmd下载游戏。我也不知道为啥反正root下下载的文件不知道跑哪去了。。。

设置systemctl守护

代码语言:javascript
复制
vi /lib/systemd/system/csserver.service

写入配置

代码语言:javascript
复制
[Unit]
Description=cs 1.6 server

[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/.steam/steamcmd/cs16
ExecStart=/usr/bin/bash hlds_run -game cstrike +port 27015 +map de_dust2 +maxplayers 16
Restart=always

[Install]
WantedBy=multi-user.target

启动服务器&设置开机启动

代码语言:javascript
复制
systemctl start csserversystemctl enable csserver

原作者说有可能会遇到游戏服务端文件不全导致启动不了的BUG,但我没碰到,很顺利的就启动成功了。但这里还是写一下他的解决办法

由于steamcmd的bug,有时候你的服务端文件可能下载不完整导致启动不了,一般情况下是缺少一个steamclient.so,解决办法如下:

代码语言:javascript
复制
mkdir -p /home/steam/.steam/sdk32ln -s /home/steam/.steam/steamcmd/linux32/steamclient.so /home/steam/.steam/sdk32ln -s /home/steam/.steam/steamcmd/linux32/steamclient.so /home/steam/.steam/steamcmd/cs16

破解服务端正版验证

安装metamod-r插件

代码语言:javascript
复制
mkdir -p /home/steam/.steam/steamcmd/cs16/cstrike/addons/metamod/dlls
wget https://github.com/theAsmodai/metamod-r/releases/download/1.3.128/metamod_1.3.0.128.zip
unzip metamod_1.3.0.128.zip -d metamod-1.3.0.128
cd metamod-1.3.0.128/addons/metamod
cp metamod_i386.so /home/steam/.steam/steamcmd/cs16/cstrike/addons/metamod/dlls

编辑liblist.gam文件

代码语言:javascript
复制
nano /home/steam/.steam/steamcmd/cs16/cstrike/liblist.gam

修改以下内容

代码语言:javascript
复制
gamedll_linux "addons/metamod/dlls/metamod_i386.so"

至此 metamod-r 插件安装完成

安装Rehlds插件

下载 Rehlds 并解压,最终替换原始服务端的engine_i486.so文件即可完成安装

代码语言:javascript
复制
wget https://github.com/dreamstalker/rehlds/releases/download/v3.10.0.761/rehlds-bin-3.10.0.761.zip
unzip rehlds-bin-3.10.0.761.zip -d rehlds-bin-3.10.0.761
cd rehlds-bin-3.10.0.761/bin/linux32
cp -f engine_i486.so /home/steam/.steam/steamcmd/cs16/engine_i486.so

安装reunion插件

下载文件包,解压后进入目录

代码语言:javascript
复制
wget https://lala.im/wp-content/uploads/2020/09/reunion_0.1.92.zip
unzip reunion_0.1.92.zip -d reunion_0.1.92
cd reunion_0.1.92/

复制reunion.cfg到cs16目录:

代码语言:javascript
复制
cp reunion.cfg /home/steam/.steam/steamcmd/cs16

创建reunion目录,然后把reunion_mm_i386.so复制过去:

代码语言:javascript
复制
mkdir -p /home/steam/.steam/steamcmd/cs16/cstrike/addons/reunion
cp bin/Linux/reunion_mm_i386.so /home/steam/.steam/steamcmd/cs16/cstrike/addons/reunion

编辑metamod的插件配置文件:

代码语言:javascript
复制
vi /home/steam/.steam/steamcmd/cs16/cstrike/addons/metamod/plugins.ini

我看原文的作者使用nano编辑器打开的plugins.ini,但我半天也没见着有么个文件,Google了半天发现是要自己创建,淦!

完成

重启cs服务器

代码语言:javascript
复制
systemctl restart csserver

进入CS1.6客户端,按~唤出控制台,输入connect IP地址后回车即可链接服务器。

忘记补充了,腾讯云轻量的防火墙在重置完系统镜像后似乎会重置规则,所以需要添加一下放行规则

放行防火墙

代码语言:javascript
复制
iptables -I INPUT -p udp --dport 27015 -j ACCEPT
iptables -I INPUT -p tcp --dport 27015 -j ACCEPT
#这里是放行了27015端口的通信

参考内容

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备步骤
    • 第一个问题:steam is not in the sudoers file. This incident will be reported
    • 安装步骤
      • 原作者说有可能会遇到游戏服务端文件不全导致启动不了的BUG,但我没碰到,很顺利的就启动成功了。但这里还是写一下他的解决办法
      • 破解服务端正版验证
        • 安装metamod-r插件
          • 安装Rehlds插件
            • 安装reunion插件
              • 完成
                • 放行防火墙
                • 参考内容
                相关产品与服务
                轻量应用服务器
                轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档