前言
自从我架设了Trinitycore 3.3.5的魔兽世界服务器之后,我也在想还可以架设一些其他什么游戏服务器,毕竟,我博客"游戏世界"这个板块不能只有一个魔兽世界啊,名字那么大,格局却那么小,太low了。经过一番研究,Turnkey-gameserver解决方案入了我的法眼,基本是一键式搭建,而且有100多种游戏服务器端可供选择,本文就以架设Minecraft(bedrock edition)的服务器为例,演示如何利用PVE的LXC模板快速搭建游戏服务器。
简单介绍一下Turnkey linux:"Turnkey GNU/Linux 是一个基于 Debian 的免费系统映像库,它将最好的自由软件组件预集成并打磨成安全、易用的解决方案。 TurnKey 的灵感来源于对自由软件民主化力量的信念,就像科学一样,自由软件可以促进自由和人性化社会的进步。如果没有自由发布、修补和学习自由软件的自由,我们所知的互联网将不复存在。自由软件是我们这个时代最伟大的技术奇迹背后无声的、往往是无形的力量。"
简单来讲,就是Turnkey已经将各种优秀的自由软件以debian系统为基础部署完成并形成了众多的ct模板,用户只需要使用这些ct模板创建虚拟机,就可以立即得到一个已经部署好相关软件的基于debian的LXC,这和采用docker方式部署一个应用一样简单。
其实在PVE的ct模板里,就可以看到很多的turnkey-(软件名)命名模板:
采用这些ct模板建立LXC,就能立刻拥有已经部署完成对应软件的linux容器,本文就将以这种方式搭建gameserver。
使用ct模板:Turnkey-gameserver创建LXC
跟着以下步骤创建gameserver的LXC:
点击即可完成创建LXC。
初始化gameserver
在PVE里选择刚刚创建的gameserver的linux容器,并在右边的控制台界面里用root及前面创建的密码登录终端:
登录之后直接进入了gameserver的初始化界面,会新建一个名为"gameuser"的账号并为其设置密码:
设置完密码之后,进入"Initialize Hub services"界面:
这里主要配置Turnkey的备份、迁移、域名管理等功能,如果需要就要提供API key,需要去https://hub.turnkeylinux.org/profile注册以及需要AWS的免费账号等,如果大家需要就跟着提示去折腾一下,这步不是必须,可以选择下方的Skip按钮跳过,进入系统通知和安全警告界面:
如果需要接受通知就在email里填入自己的邮箱然后选择下方的Enable,否则可以直接选择Skip跳过,然后进入安全更新界面:
如果需要马上安装安全更新,选择下方的Install按钮进行安装,否则选择Skip跳过,我选择了Install,安装完更新之后,推荐reboot:
reboot之后终端显示如下界面:
上图中的2个红框可以看到这个linux容器的ip地址以及进入高级命令行控制台的命令
confconsole
,这个时候已经可以直接使用SSH客户端直接访问ip地址进行管理了。
安装游戏
GUI安装(不推荐,问题多)
使用ssh客户端或者pve上的控制台登录进gameserver,然后运行confconsole
命令进入游戏服务器应用服务界面,如下图(上一节最后的安全更新如果选择skip,会直接到这个界面):
上图中Web shell为基于web的命令行工具,Webmin可以理解为一个面板工具(在我另一篇文章:docker系列 搭建基于bind9的DNS服务器中也有涉及过),这里我们先选择下方红框中的"Advanced menu"进入高级菜单:
选择上图中的Game Server,然后选择下方的Select:
选择上图中的Select game,然后选择下方的Select:
上图提示有些游戏可能需要进行一些例如服务器名称之类的基本配置,直接选择下方的ok,然后终于进入选择安装游戏的环节了:
因为本次我们要架设的是Minecraft基岩版服务器,所以选择60,然后选下面的ok:
很快就安装完成:
因为gameserver安装游戏必须将游戏绑定到一个非root的账号上,所以通过gui这种方式安装游戏,系统会将游戏绑定到初始化时创建的gameuser账号上,并将游戏安装到/home/gameuser/gameserver/
目录下,因为本次是安装的minecraft(bedrock edition),所以最终执行程序的最终路径为/home/gameuser/gameserver/mcbserver
:
注:尽量不要用GUI的方式进行安装,感觉出问题的可能性比较大啊,我也遇到了安装文件不全的问题,官方推荐的命令行方式安装。
命令行安装
执行auto_install.sh
命令进行安装,如下:
cd /root/gameservers
./auto_install.sh --list #查看有哪些游戏可以安装
然后可以看到需要安装游戏对应的code(第一列),如上图红框,Minecraft(bedrock edition)的code就是mcb,然后运行如下命令:
./auto_install.sh --game mcb --user gameuser --path /home/gameuser/gameserver/
--user gameuser
是将Minecraft绑定到gameuser这个用户, --path /home/gameuser/gameserver/
是指定游戏的安装目录,默认是/home/$USERNAME/gameserver
,回车即可完成游戏的安装,讲道理,命令行比GUI安装要快得多。
大家注意安装过程是否缺少依赖:
可以直接在root模式下使用apt install 安装相应依赖或者在root模式下进入
/home/gameuser/gameserver
目录运行./mcbserver install
自动安装相应依赖。
运行游戏
用游戏绑定的账号(gameuser)登录系统,进到游戏的安装目录,找到可执行程序用start参数运行即可,步骤如下:
su gameuser
cd /home/gameuser/gameserver
./mcbserver start
直接运行./mcbserver
可以看到支持的操作:
如果要检查server的运行状态,可以使用monitor选项:
当然,如果要放在公网上,需要做好对应的域名解析和udp 19132端口映射(或者防火墙的策略允许)。
本文虽然是以我的世界为例,但是实际上还有100多个游戏服务器可以使用相同的方法创建,唯一要注意的是,如果是国内环境,需要科学技术辅助。