潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

频道:Linux教程 日期: 浏览:2766

潜渊症交流群:971454372(如果出现实在解决不了的问题可以来问我哦~)

前言

《潜渊症》是一款2D合作生存冒险潜艇模拟游戏,发行于2018年。自从2021年被森纳映画的系列节目《游戏不止》安利后,玩家数量呈明显增加。本人也是因此入手了这款游戏。玩法和机制都非常不错,让我眼前一亮。只不过这游戏联机采用的是不成熟的P2P连接方式,导致大部分玩家的联机体验都非常差。

在国内搭建一台服务器,而不是依靠Steam是一个有效的解决方案。但是潜渊症全网范围的开服教程少的可怜。仅有的那几份大部分往往讲的也十分松散。导致我在架设自己的服务器是碰了不少壁。如今我的服务器已经稳定运行两个月了,突然萌生了写个编集教程的想法,这样就不用麻烦大家全网到处找资料了。同时也可以省下一定的预算。

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器
数据来源:SteamDB

一些说明:

由于此教程比较面向新手,故添加了不少关于概念的解释说明,这些部分大佬可以无视啦~。虽说是奔着全面编写的,但不可能涵盖所有的情况。请务必按照自己的情况灵活应用,切忌完全照搬。

(我当年就是吃了这个亏QAQ)

本教程篇幅较长,所以设置了目录,方便各位根据需要查询不同的内容。

如有不当之处,欢迎指出,我会及时修改。


准备工作

基础知识

要搭建一台服务器,我们首先需要的就是一台服务器(废话)。如果不清楚服务器(Server)的概念可以自行百度,这里不过多赘述。想要拥有和管理服务器,我们先来明确以下几个概念。

  • 公网IP(Public IP Address)

众所周知,我们每台电脑都拥有一个用于接入网络的IP地址(IP Address)。我们的服务器可以是摆在家里面的实体机器,也可以是由服务商提供的云端机。它们之所以被称之为服务器(Server)与我们一般的计算机区别开来,是因为它们各自拥有一个全网独一无二的固定IPv4地址[1]xxx.xxx.xxx.xxx,这就是公网IP,正式名称为广域网IP。它在全世界范围内都可以被轻松访问到(除非......)。所以服务器主机一般是被用来给一般计算机提供计算或网络应用服务。

  • 端口(Port)

如果我们把计算机理解成一个工厂的话,那端口(port)便是工厂的门。端口也分为物理端口虚拟端口,本教程中出现的端口均为虚拟端口(Virtual Port),就是像22(SSH)80(http)443(https)等以数字为代号的端口便是虚拟端口。很多主流网络协议都有固定的默认端口。我们可以在域名或者IP后缀端口,就像baidu.com:8888来指定端口进行访问。

  • SSH协议(Secure Shell)

Secure Shell安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令[2]。我们主要用这种方式来远程连接服务器。

  • root(Linux)/Administrator(Windows)(超级用户)

计算机上拥有最高权限的用户,自系统安装成功后便存在。因为拥有控制和管理计算机上一切的权限,所以安全考虑管理者不会用于日常使用。

服务器选购Q&A

Q:如何选择合适的服务商?

A:国内最具代表性的主流大型服务提供商有:

大服务商拥有相对完整的技术支持和安全保障,但是价格就不怎么友好了。常规配置2核4G不优惠绝对下不了¥150/台*月。若预算允许,最好选择靠谱的大服务商。吃土的小伙伴们也不用为此感到遗憾。平价服务器并不是没有,不过就是是支持差一、而已(确信)。从控制台的差别上就可以看出来。

注意:如果要选择不知名的小服务商,一定要在第三方评估平台上查明企业来历再做打算。最好不要在第三方电商平台(如淘宝)上进行交易。原则就是要在最大程度上确保自己所使用的服务是安全可靠的。

Q:如何选择合适的配置?

A: 云服务器的配置主要看重两项:CPU核心数内存大小。至于硬盘大小,我们的服务器并没有大量数据储存的需求,使用服务商提供的最低标准足矣。潜渊症作为2D游戏,占用并不是很大,2核4G够用了。如果要满足8人以上同时在线的话,可以考虑4核8G。至于网络带宽,因为是游戏用,所以要求不高但为防止出现网络拥堵最好不要少于3Mbps。

Q:怎么这么贵?我在家整一个行吗?

A:当下时代云服务行业正红,如大数据、云储存等等。云计算资源非常抢手。你如果不想掏腰包购买云服务器的话,也可以向运营商给你的机子申请一个公网IP,让它充当服务器。但我是极力不推荐这样干的。首先申请过程便困难重重,运营商大概率不会吧珍贵的IPv4资源随便交给咱们臭打游戏的QWQ。即使你拥有了一个公网IP,你还需要拥有一段质量非常之好的宽带,承包服务器的全部维护工作,还要忍受散热器的噪音...等等。综合来看,根据我们需求,按时间付费的云服务器足矣,即灵活又方便。

关于操作系统

一般来说,就算是小服务商的产品,购买到手的机器是已经安装好操作系统了的,不需要为此费心。服务器的操作系统有别于我们一般使用的操作系统。

  • GUI?CLI?

现在的计算机操作系统的用户界面都可以分为图形用户界面(Graphical User Interface)命令行界面(Command-Line Interface)。也就是GUICLI

至于各个系统的优缺点,在此不做赘述。感兴趣的可以自行查询资料进一步了解。

  • 我为什么选择Linux CLI?

原因很简单,Linux CLI可以在配置相同的情况下最小化系统占用资源。如果选择带GUI的系统,则会白白浪费掉一部分资源。这可都是软妹币啊......且用且珍惜。

搭建过程

演示游戏版本:0.17.16.0

演示环境:

  • 系统:Ubuntu Linux 18.04 LTS(CLI)
  • 服务器配置 :2核CPU、4G内存、40G+50G硬盘、带宽10Mbps
  • 工具:Tabby TerminalLinuxGSM
潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器
Tabby Terminal - 效果图

需要的工具

  • SSH工具

用于使用SSH协议连接服务器,以通过命令行对服务器进行控制操作。除了本人使用的Tabby Terminal以外,大家还可以选择Final ShellXshellMobaXterm之类的优秀SSH工具。

  • FTP工具

用于使用FTP协议在服务器和主机之间快捷传输文件。本人推荐XftpFireFTP

  • (非必要)运维面板

简单的配置过后,就可以通过浏览器打开面板对服务器进行图形化的操作和监控。但服务商提供的控制台足够满足我们需求了。

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器
宝塔运维面板 - 效果图

服务器配置

现在我们打开服务商提供给我们的控制台,找到购置好的服务器。

在服务器详情中可以看到有两个IP地址(公网IP私网IP),我们需要记住公网IP。

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

打开安全组,检查放行端口[TCP]22(用于SSH连接)、[UDP]27015(主要)、[UDP]27016(检索)(用于潜渊症游戏连到接服务器)。

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

设置root密码。

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

到此我们的服务器就基本配置好了。

第一次连接

打开SSH工具,设置连接配置文件,填入自己的服务器公网IP、root用户和刚才设置的密码。

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

登入成功~

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

现在需要做一些系统调整

在root下进行操作更换国内软件源备份官方源$ mv /etc/apt/sources.list /etc/apt/sources.list.bak 
$ touch /etc/apt/sources.list如果没有vim就先安装,最好不要用vi$ apt install vim编辑源$ vim /etc/apt/sources.list

国内的Linux源主要有阿里源、清华源、中科院源,这里用清华源做演示。可以自行去网络上查找合适的源

清华源 适用于Ubuntu 18.04 LTS
 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

 预发布软件源,不建议启用
 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
 deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

更换完成后进行更新

$ apt update
$ apt upgrade

这里要等一段时间

使用root来开服未免太不安全。所以最好新建一个用户,专门用于服务器运行

$ adduser btserver设置密码$ passwd btserver登入$ su btserver

配置完成。

部署

现在需要一个部署工具来帮助我们安装服务端软件。

  • SteamCMD是Valve官方提供的Steam命令行工具(就是Steam客户端的CLI版),多用于Windows系统。
  • LinuxGSM是一个基于Github资源的综合工具,集成了SteamCMD并优化了相关功能,可以实现快速简单地部署游戏服务器,Linux专用。

这里我们用LinuxGSM做演示,SteamCMD的使用方法与之大同小异。

安装LinuxGSM依赖项

注:系统不同依赖项也不同,请自行查找合适的依赖
在root下操作$ dpkg --add-architecture i386;$ apt update
$ apt install curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux netcat lib32gcc1 lib32stdc++6 libsdl2-2.0-0:i386 steamcmd lib32z1

如果是境内服务器的话,部署时间将会大大降低,可以自行设置代理以解决。

获取LinuxGSM安装脚本

从现在开始使用非root用户操作$ wget -O linuxgsm.sh https://linuxgsm.sh赋权$ chmod +x rustserver

开始安装

$ ./linuxgsm install

你会看到这样的界面:

潜渊症(Barotrauma)云专用服务器一栈式搭建教程(Linux),手把手教你拥有和管理自己的服务器

选择我们需要的btserver,回车,然后得到以下输出:

btserver@Leon-CloudServer:~$ ./linuxgsm.sh install
Installed Barotrauma server as btserver

Remember to check server ports
./btserver details

然后我们开始安装服务器端软件。

服务器端安装

输入./btserver install来安装服务器,如果你没有设置加速手段,这将是一段很漫长的过程。

LinuxGSM加载中。。。

mdMMMMbm
                              mMMMMMMMMMMm
                              mMMMMMMMMMMMMm
                             mMMMMMMMMMMMMMMm
                             hMMMV^VMMV^VMMMh
                             MMMMM  MM  MMMMM
                             hMMs   vv   sMMh
                            hMMM:        :MMMh
                          .hMMMh          hMMMh.
                         -dMMMh     __     hMMMd-
                        :mMMMs      ||      sMMMm:
                       :MMMM+       || _     +NMMN:
                      .mMMM+     ========     +MMMm.
                      yMMMy      yMMMy
                      mMMM:      :MMMm
                      mMM   nn   nn    nn   nn   MMm
                      o   nNNNNNNNn    nNNNNNNNn   o
                         nNNNNNNNNNn  nNNNNNNNNNn
                        nNNNNNNNNNNN  NNNNNNNNNNNn
                         +NNNNNNNNN:  :NNNNNNNNN+
                           nNNNNNNN /\ NNNNNNNn
                             nnnnn  db  nnnnn

888      d8b                             .d8888b.   .d8888b.  888b     d888
888      Y8P                            d88P  Y88b d88P  Y88b 8888b   d8888
888                                     888    888 Y88b.      88888b.d88888
888      888 88888b.  888  888 888  888 888          Y888b.   888Y88888P888
888      888 888  88b 888  888  Y8bd8P  888  88888      Y88b. 888 Y888P 888
888      888 888  888 888  888   X88K   888    888        888 888  Y8P  888
888      888 888  888 Y88b 88Y .d8pq8b. Y88b  d88P Y88b  d88P 888   *   888
LinuxGSM 888 888  888  Y8888Y  888  888   Y2012P88   Y8888P   888       888

=================================
LinuxGSM_
by Daniel Gibbs
Version: v22.1.0
Game: Barotrauma
Website: https://linuxgsm.com
Contributors: https://linuxgsm.com/contrib
Sponsor: https://linuxgsm.com/sponsor
=================================
fetching GitHub install_server_dir.sh...

一路确定,如果失败的话从头开始就行了。

Update state (0x61) downloading, progress: 74.31 (223959766 / 301400740)
 Update state (0x61) downloading, progress: 75.65 (227998220 / 301400740)
 Update state (0x61) downloading, progress: 76.09 (229344974 / 301400740)
 Update state (0x61) downloading, progress: 76.44 (230393550 / 301400740)
 Update state (0x61) downloading, progress: 76.87 (231691544 / 301400740)
 Update state (0x61) downloading, progress: 79.68 (240154167 / 301400740)
 Update state (0x61) downloading, progress: 83.12 (250512951 / 301400740)
 Update state (0x61) downloading, progress: 84.55 (254833883 / 301400740)
 Update state (0x61) downloading, progress: 86.80 (261622811 / 301400740)
 Update state (0x61) downloading, progress: 89.29 (269120433 / 301400740)
 Update state (0x61) downloading, progress: 91.07 (274478801 / 301400740)
 Update state (0x61) downloading, progress: 93.35 (281352788 / 301400740)
 Update state (0x61) downloading, progress: 94.47 (284731560 / 301400740)
 Update state (0x61) downloading, progress: 97.44 (293689428 / 301400740)
 Update state (0x61) downloading, progress: 98.93 (298163532 / 301400740)
 Update state (0x61) downloading, progress: 99.65 (300352164 / 301400740)
Success! App 1026340 fully installed.
Complete! Installing btserver: SteamCMD

=================================
Was the install successful? [Y/n] Y

再确定。。。

LinuxGSM Stats
=================================
Assist LinuxGSM development by sending anonymous stats to developers.
More info: https://docs.linuxgsm.com/configuration/linuxgsm-stats
The following info will be sent:
* game server
* distro
* game server resource usage
* server hardware info
Allow anonymous usage statistics? [Y/n] Y

漫长的等待后,安装成功!

=================================
Install Complete!

To start server type:
./btserver start

第一次运行

我们可以输入./btserver details来查看服务器信息,可以在输出的末尾看到:

DESCRIPTION  PORT   PROTOCOL  LISTEN
Game         27015  udp       1
Query        27016  udp       1

Status: STOPPED

这表示它需要[UDP]27015[UDP]27016两个端口,也就是我们前面设置过的。

我们输入./btserver start./btserver st来启动服务器

bterver@Leon-CloudServer:~$ ./btserver st[OK]Starting btserver: Server

然后输入./btserver console./btserver c进入控制台。

输出如下

Barotrauma Access console
=================================
* Verbose output: yes
* Interactive output: yes

Information! Press "CTRL+b" then "d" to exit console.
Warning! Do NOT press CTRL+c to exit.
* https://docs.linuxgsm.com/commands/console

Continue? [Y/n] Y

同意后即可进入服务器后台

Barotrauma Dedicated Server 0.17.16.0 (ReleaseLinux, branch release, revision 05309f303f)
Loading game settings
Loading MD5 hash cache
Initializing SteamManager
Initializing GameScreen
Selected sub: Azimuth                                                          
[S_API] SteamAPI_Init(): Loaded local steamclient.so OK.                      
CAppInfoCacheReadFromDiskThread took 5 milliseconds to initialize
Setting breakpad minidump AppID = 602960
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils003 before SteamAPI_Init succeeded.
Selected shuttle: Hemulen                                                      
[2022/6/7 下午9:44:49]
  Starting the server...                                  
[2022/6/7 下午9:44:49]
  Using Lidgren networking. Manual port forwarding may be required. If players cannot connect to the server, you may want to use the in-game hosting menu (which uses SteamP2P networking and does not require port forwarding).                                                                          
[2022/6/7 下午9:44:49]
  Server started

先按Ctrl+b,再按d退出后台。

输入./btserver stop./btserver sp来停止运行服务器

btserver@Leon-CloudServer:~$ ./btserver sp[OK]Stopping btserver: Graceful: sending"exit": 2: OK

正式运行

直接运行./btserver可以查看它可用的命令,得到以下输出

btserver@Leon-CloudServer:~$ ./btserver
Usage: ./btserver [option]

LinuxGSM - Barotrauma - Version v21.5.1
https://linuxgsm.com/btserver

Commands
start         st   | Start the server.
stop          sp   | Stop the server.
restart       r    | Restart the server.
monitor       m    | Check server status and restart if crashed.
test-alert    ta   | Send a test alert.
details       dt   | Display server information.
postdetails   pd   | Post details to termbin.com (removing passwords).
skeleton      sk   | Create a skeleton directory.
update-lgsm   ul   | Check and apply any LinuxGSM updates.
update        u    | Check and apply any server updates.
force-update  fu   | Apply server updates bypassing check.
validate      v    | Validate server files with SteamCMD.
check-update  cu   | Check if a gameserver update is available
backup        b    | Create backup archives of the server.
console       c    | Access server console.
debug         d    | Start server directly in your terminal.
send          sd   | Send command to game server console.
install       i    | Install the server.
auto-install  ai   | Install the server without prompts.
developer     dev  | Enable developer Mode.
donate        do   | Donation options.

我们重点记住这些:

start | st    开始运行服务器
stop | sp     停止运行服务器
restrat | r   重启服务器
console | c   打开服务器后台(Ctrl+b、d退出)
update | u    更新服务器

配置文件那些事

我们可以通过修改配置文件来修改服务器信息,服务器软件的本体储存在./serverfiles目录下,以下文件路径中的.均为该目录。

  • ./serversettings.xml

在这里设置服务器的基本信息,需要手动修改的有以下几项

name="你自己的服务器"服务器名称public="true"是否公开服务器,一定要为true,不然找不到port="27015"主要端口queryport="27016"检索端口password=""服务器密码,空就是没有enableupnp="false"是否自动结束巡回autorestart="false"是否自动重启MaxPlayers="16"最大玩家数量/>

至于其他项,均可在进入服务器之后修改。

  • ./config_player.xml

在老版本中是config.xml,此文件主要控制MOD开启情况和服务器语言,这里需要手动修改

language="Simplified Chinese"主要应用于AI对话的语言,这里修改成简体中文/>

如果需要安装MOD,要修改此项:

>name="Vanilla 0.9"/>path="Content/ContentPackages/Vanilla.xml"/>/>
  • ./Data/clientpermissions.xml

这是权限名单,详细记录了每个拥有权限的玩家的各种情况。无需手动修改。可以在持有权限的情况下在服务器内进行更改。

  • ./Data/bannedplayers.txt

这是你封禁过的玩家记录。无需手动修改。


做好设置后启动服务器,就可以愉快地玩耍辣╰( ̄▽ ̄)╭

在进入服务器之后给自己权限:

giveperm [你滴名字] ALL

管理技巧

一些控制台指令:

giveperm [playerID] ...给予玩家权限

kickid [playerID]踢出玩家

相关链接

《游戏不止》第60期:这游戏能让你感受到什么叫深海恐惧症〖游戏不止〗_哔哩哔哩bilibili

《潜渊症》中文维基百科:潜渊症 - 维基百科,自由的百科全书

《潜渊症》SteamDB数据库:SteamDB

《潜渊症》官方开服教程(英文):Hosting a Dedicated Server - Official Barotrauma Wiki

参考

  1. ^一般来说是这样的(別骂我QAQ)
  2. ^Secure Shell - 维基百科https://zh.wikipedia.org/wiki/Secure_Shell

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码