文章目录
幻兽帕鲁最近在社区呈现了爆火的趋势,在线人数已突破百万级别,官方服务器也开始出现不稳定,卡人闪退的情况。对于有一定财力的小伙伴,搭建一个私人服务器是一个最稳定而舒服的解决方案。本文章将讲解一下如何搭建palworld的私服(专用服务器),如果有不明白的,可以参考官方文档作为补充https://tech.palworldgame.com/dedicated-server-guide,或者在评论区留言,我会耐心解答。
总步骤分为三步:准备机器,下载SteamCMD,以及下载PalServer。
1、准备机器,云服务器标配是4核16G,预算大概300/月,最好用Ubuntu/Debian的机器,有现成的apt安装包,别的操作系统没试过。
2、SteamCMD 是 Steam 客户端的命令行版本。它的主要用途是使用命令行界面安装和更新Steam上可用的各种专用服务器。
3、PalServer就是PalWorld私服的启动脚本,运行这个脚本之后,游戏里就能通过地址【云服务器ip:8211
】游玩私服。
一、准备
机器准备
第一步是购买云服务器。云服务器的厂商没有特别要求,腾讯云、阿里云、华为云都行。这里以腾讯云为例子~
系统记得选择Ubuntu,配置的话推荐四核十六GB的服务器,保底也是四核八G(像笔者跟两三个基友玩的话可以),内存太小根本带不动。
笔者一开始用了两核两G的机器,内存直接被拉爆了Orz。
机器登录
有计算机背景的同学可以跳过这部分,比较基础。
登录云服务器,可以直接用ssh命令,当然也可以用会话管理工具,使用起来会比较方便。个人比较喜欢的一个工具是tabby,可以在这个网站下载:https://tabby.sh/
然后在应用中添加新会话
会话类型选择SSH
创建ssh会话界面,填写会话标题(随便填个名字)
然后在下方的连接配置中,第一个箭头指向的部分填入云服务器的ip,第二个箭头指向的地方填用户名,第三个箭头指向的地方填写密码。ip、用户名、密码从哪里获取?可以在云平台的控制台中查看。
获取ip方法
获取密码方法
获取用户名方法
点击控制台的登录按钮后,弹出页面。
可以看到我的用户名是ubuntu,在tabby的会话设置中填入即可。
设置密码
然后会话就配置完成了,点击播放键即可连入机器。
当出现这个界面的时候,连接就算成功了。
二、SteamCMD下载
更改账号
在终端执行以下命令生成一个名为steam
的云服务器账号
sudo useradd -m steam
sudo passwd steam
# 设置密码时,建议密码8字符以上带特殊符号
密码不要设置的太简单,密码不要设置的太简单,密码不要设置的太简单!!!!!!
重要的事情说三遍,否则你可能会看到这样的画面
在终端中输入以下命令,这样在steam账号才能使用sudo命令。
sudo echo "steam ALL=(ALL:ALL) ALL" >> /etc/sudoers
如果sudo之后还是显示没权限,可以用vim编辑/etc/sudoers文件,加上steam ALL=(ALL:ALL) ALL
vim /etc/sudoers
然后在终端中输入以下命令,切换账号
sudo -u steam -s
cd /home/steam
如果回话关闭,重新登录时需要重新执行sudo -u steam -s指令
下载包
不同的操作系统下载包的方法不一样
Ubuntu系统
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
Debian系统
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository non-free
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd
CentOS
没有RPM包,而且手动安装有bug,笔者没亲自尝试过,不过评论区有个大佬@加蛙练习生试了出来
可以参考一下他的操作
yum install glibc.i686
yum install libstdc++.i686
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
其他系统
更多系统下的steamcmd下载方法请参考https://developer.valvesoftware.com/wiki/SteamCMD#Linux
运行SteamCMD
如果是ubuntu系统或者debian系统安装的steamcmd,路径在/usr/games/steamcmd
,可以通过以下指令把二进制链接到系统路径。
sudo ln -s /usr/games/steamcmd /usr/bin/steamcmd
然后在终端直接输入steamcmd,就能启动服务。
第一次启动steamcmd,程序会下载包,完成下载后会弹出报错,提示缺少steamservice.so,这个报错可以先不管。
完成steamcmd安装后输入quit退出steamcmd
下面可以开始安装幻兽帕鲁的专用服务器程序了。
三、Palserver下载
执行以下命令,即可开始下载服务器程序
steamcmd +login anonymous +app_update 2394010 validate +quit
这里有小概率连接不成功,一直retry,可以多尝试几次输入该命令。
出现Success提示,表明安装完成。
steamcmd会在/home/steam/目录下生成.steam文件夹或者Steam文件夹,新版本生成的文件夹都是Steam,要注意
如果没有生成.steam文件夹,要手动创建一个
mkdir /home/steam/.steam
mkdir /home/steam/.steam/sdk64
服务ini配置修改【非必需步骤】
配置服务的ini不是强制的,如果没有特别要求,可以直接跳过该步骤,游戏会自动使用默认的配置。
启动PalServer前可以修改一下配置文件,可以把默认的配置文件DefaultPalWorldSettings.ini 拷贝一份,重命名为
PalWorldSettings.ini,然后手动修改里面的内容,用vim修改内容。
cd ~/Steam/steamApps/common/PalServer
cp ./DefaultPalWorldSettings.ini Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
vim Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
vim的使用方法可以上网找
启动PalServer
下一步就是进入palserver的目录中,然后执行以下命令:
mkdir /home/steam/.steam/sdk64
cd ~/Steam/steamapps/common/PalServer
cp linux64/* ~/.steam/sdk64
上面这段命令,无论是steamcmd生成的是.steam文件夹还是Steam文件夹,都要执行
不然启动服务后,会显示没有steamclient.so报错,导致服务启动失败
最后就是启动服务器的脚本
cd ~/Steam/steamapps/common/PalServer
./PalServer.sh
可以看到,一切运行正常。
这个时候已经可以用游戏连接私服了,但我们想把程序挂在后台,这样哪怕会话结束进程也不会被杀死。先输入ctrl+c把当前服务杀掉,然后输入以下命令挂起服务。
cd ~/Steam/steamapps/common/PalServer
nohup ./PalServer.sh &
这样幻兽帕鲁的私服就成功拉起来了。
这个时候,别忘了看一下云服务器的安全规则,有些云服务器对8211端口不放行,需要手动添加出入站规则。
在控制台中点击机器的查看详情
点击红箭头处的添加规则按钮,增加端口为8211的UDP和TCP放行规则。
这样一来,流量就不会被云服务器的防火墙阻挡。
连入私服
我们在游戏的专用服务器页面,把127.0.0.1换成云服务器的公网ip,点击“联系”,就能进入私服。
四、Q&A
Q1: 云主机重启之后怎么重新启动服务器
A1:
登录切换到steam账户
sudo su steam
然后执行
cd /home/steam/Steam/steamapps/common/PalServer
nohup ./PalServer.sh &
Q:如果我想重启服务器怎么办
A:终端输入
sudo su steam
ps -aux | grep Pal
能看到两个进程,以及它们对应的进程号
kill杀掉进程,然后执行重启命令即可
# 杀进程示例
kill -9 556582
kill -9 556589
# 根目录为Steam的用户执行这条
cd /home/steam/Steam/steamapps/common/PalServer
# 根目录为.steam的用户执行这条
cd /home/steam/.steam/SteamApps/common/PalServer
nohup ./PalServer.sh &
Q2: 第一次运行steamcmd后没找到~/.steam文件夹
A2: 有些主机的下载路径是~/Steam,可以把命令中的.steam换成Steam再试试
Q3: 启动PalServer后报错,显示找不到steamclient.so
文件
A3: 说明~/.steam/sdk64/下面没有steamclient.so
如果主机的下载路径是~/.steam,可以执行以下操作
mkdir ~/.steam/sdk64
cd ~/.steam/SteamApps/common/PalServer
cp linux64/* ~/.steam/sdk64
主机的下载路径是Steam,但是PalServer.sh读的还是.steam/sdk64,所以可以执行以下操作
sudo mkdir ~/.steam
mkdir ~/.steam/sdk64
cd ~/Steam/SteamApps/common/PalServer
cp linux64/* ~/.steam/sdk64
Q4: 怎么上传文件到机器
A4: 如果是linux用户
cd 指定目录
rz
然后会有文件选择框弹出,选择文件即可上传
Q5: 我想用Windows做服务器,应该怎么办
A5: 自己的主机可以参考https://cloud.tencent.com/developer/article/2382150,然后用一个弹性公网IP来做公网转发,如果要用云主机服务器可以参考https://cloud.tencent.com/developer/article/2382000
Q6: vim是什么,我没接触过linux不是很懂
A6: vim是linux下最常用的文档编辑器,其实主要的用法就是
- 打开文件sudo vim xxx文件上下左右键移动光标
键盘打i
,进入编辑模式
编辑完了键盘打esc键,退出编辑模式
保存输入:wq!
然后回车
Q7: 重启服务器之后存档无了,怎么办
A7:可以参考https://cloud.tencent.com/developer/article/2382998
这个攻略的pallbackup.sh是关键,原理是定期把存档数据压缩,然后拷贝到/palbackup文件夹。
数据桶看需选用,也可以直接把备份文件下载到本地(用sz命令下载),需要的时候解压到~/.steam/SteamApps/common/PalServer/Pal/Saved/SaveGames/0
或者~/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0
即可
对于技术大佬,可以研究一下这个防丢存档的补丁https://github.com/xNul/palworld-host-save-fix
Q8:设置好了密码,怎么进房
A8:可参考视频https://www.bilibili.com/video/BV1EK4y1i7Lx
Q9:搭好了私服,还要用加速器吗
A9:不需要,直连即可
Q10: 游戏客户端更新了,服务端怎么更新?
A10:跟安装PalServer的指令一样,输入
steamcmd +login anonymous +app_update 2394010 validate +quit
如果原来安装的目录是/home/steam/.steam,那么新版本可能会下载到/home/steam/Steam下,这种情况要先kill原来的服务,然后执行
cd /home/steam/Steam/steamapps/common/PalServer
nohup ./PalServer.sh &
然后把存档文件拷贝到/home/steam/Steam/steamapps/common/PalServer目录下,重启服务即可
Q11: 如何挑选云服务器?
A11: 如果对OS没有特别的要求,又特别想参考本教程搭建服务器,建议选操作系统为Ubuntu 20.0 TLS或Ubuntu 22.0 TLS的机器,机器的地域没有特别需求,就近即可。