PalWorld Server以及内网穿透
最近PalWorld挺火的,看着也很好玩,我本来没想自己搭一个Dedicated Server,但是我和同学试了一下它的邀请码联机连不上,又想了想自己手上的资源,就打算自己搞个服务器联机玩了。
资源规划
首先要根据手上现有的资源做规划。我本地有一个archlinux的小主机,前一阵子还入手了一年99的阿里云服务器,2 Core 2 GB RAM。
PalServer建议要4 Core 16GB RAM 或以上,显然直接把PalServer搭建在阿里云服务器上是不行的了,但是阿里云服务器有公网IP。
所以方案就出来了,用阿里云服务器做内网穿透,本地archlinux的小主机安装PalServer就可以了。
内网穿透
我查到的开源的内网穿透的软件是frp,所以就用它了。frp分为frps和frpc,顾名思义frps是server端,frpc是client端。
在云服务器上起server端,在本地小主机起client端。
server端
server端配置:/etc/frps/frps.ini
这个位置是我自己决定下载放在这里的哈。
1 | [common] |
client端
client端配置:/usr/local/frpc/frpc.ini
这个位置是我自己决定下载放在这里的哈。
由于我也不知道它到底用不用tcp所以就把tcp也写上去了,看一般来说就只用udp即可。
1 | [common] |
PalServer部署
我的小主机是Archlinux,打算用docker来跑PalServer。上Docker Hub上找了一下,选择了下载量最高的image,同时我还安装了docker compose,推荐使用。
PalServer docker hub jammsen
PalServer docker hub thijsvanloef
在这个image里还包括RCON,虽然不懂但是还是配上了,感觉RCON可以在研究之后单分一个章节来介绍。
这部分感觉没什么说的,就按照这个image的介绍要求来搞就行,很简单、很省事。
TroubleShooting
Archlinux上的docker配置
只yay -S docker 等是不行的,如此安装只能用root用户启动docker,但是我是个人pc的linux,一般都会建立non-root用户来使用。
需要手动将自己的用户加入docker用户组。
If you want to be able to run the
docker
CLI command as a non-root user, add your user to thedocker
user group, re-login, and restartdocker.service
.
1 | sudo groupadd docker |
同时我还想要docker自启动,所以还要设置service。
TBD
我要是没记错的话我安装完docker,docker默认是用的containerd,而不是docker.socket。这里可能需要自己填写一个service文件来指定docker使用哪个runtime。
service文件,这个也是参考ArchWiKi改的:
1 | /etc/systemd/system/docker.service.d/docker.conf |
1 | systemctl enable |
ArchLinux上crontab使用
PalServer具有不稳定性,大家在网上都在说PalWorld非常吃内存。我自己搭建的服务器也一样,一般3-4天就会炸掉一次,但还好是用的容器部署重启就很快。
但是游戏体验还是前两天还可以,后两天可能就会因为内存等问题出现各种奇怪的现象。所以我打算设置脚本每天自动重启一次PalServer。
自动重启我了解到的方案有两种,一个是在容器的image里配置定时重启;一个是在宿主机上配置定时重启。
Linux的定时任务一般使用crontab来完成。但是ArchLinux没有预装crontab?我就安装了cronie。
如此一结合这个问题算是解决了。