这篇笔记从obsidian导入,,日期是2024二月份

配置

物理机器

4h Intel J1900,DDR3 8g,128g 固态
系统: Ubuntu

云VPS (用于内网穿透)

去年12月份 90块钱买的
阿里云 2h2g 服务器,流量不限,速率 3mbps
系统: Ubuntu

内网穿透

首先先搞 FRP
fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)

对于物理机器

  1. 创建目录 /usr/local/bin/frpc
  2. 把frpc放进去
  3. 修改配置,如下:

frpc.toml

user = "palworld"
# 这里填 FRP服务器的ip和端口
serverAddr = "你的frp服务器ip"
serverPort = 端口

loginFailExit = false
log.to = "./frpc.log"
log.level = "info"
log.maxDays = 3

log.disablePrintColor = false

auth.method = "token"
# frps和frpc之间的密码
auth.token = "你的密码"
webServer.pprofEnable = false

transport.poolCount = 5
transport.protocol = "tcp"
transport.connectServerLocalIP = "0.0.0.0"

udpPacketSize = 1500

# 帕鲁的穿透 (注意这里用了UDP)
[[proxies]]
name = "palworld"
type = "udp"
localIP = "127.0.0.1"
localPort = 8211
remotePort = 8211

# 顺便搞个SSH
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
transport.useEncryption = false
transport.useCompression = false
remotePort = 22222
healthCheck.type = "tcp"
healthCheck.timeoutSeconds = 3
healthCheck.maxFailed = 3
healthCheck.intervalSeconds = 10

然后添加服务自动启动

先移动文件 sudo mv frpc.service /etc/systemd/system/.
重载一下systemd systemctl daemon-reload

frpc.service:

[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frpc/frpc -c /usr/local/bin/frpc/frpc.ini
Restart=always
RestartSec=20s
User=nobody

[Install]
WantedBy=multi-user.target

对于云VPS:
frps.toml

bindAddr = "0.0.0.0"
bindPort = 端口,和上面一样
kcpBindPort = 端口,和上面一样
  
webServer.addr = "0.0.0.0"
webServer.port = FRP面板端口
webServer.user = "admin"
webServer.password = "admin"

log.to = "./frps.log"
log.level = "info"
log.maxDays = 3
log.disablePrintColor = false

detailedErrorsToClient = true

auth.method = "token"
auth.token = "0090xcqwdn#SZdnaw12"
auth.oidc.issuer = ""
auth.oidc.audience = ""
auth.oidc.skipExpiryCheck = false
auth.oidc.skipIssuerCheck = false

allowPorts = [
  { start = 2000, end = 59000 }
]

maxPortsPerClient = 0
udpPacketSize = 1500
natholeAnalysisDataReserveHours = 168

云VPS的FRP自启也是和客户端一样的,写一个service,记得把frpc换成frps
至此,FRP服务器配置完毕

物理机

扩充swap,变相增加内存

首先,这个游戏吃很多内存,这个8g diy机子的可能吃不消
这里借鉴 WisdomDevil’s BLOG (miku.su)

  1. 创建一个新的 swap 文件(如果需要):
sudo fallocate -l 10G /swapfile

这会在根目录下创建一个名为 swapfile 的 10GB 大小的 swap 文件。

  1. 设置新 swap 文件的权限:
sudo chmod 600 /swapfile
  1. 将文件转换为 swap 文件:
sudo mkswap /swapfile
  1. 启用新的 swap 文件:
sudo swapon /swapfile
  1. 查看是否成功启用了新的 swap 文件:
sudo swapon --show
  1. 永久性配置,以便在系统重新启动时自动加载新的 swap 文件:
  • 打开 /etc/fstab文件:
sudo nano /etc/fstab
  • 在文件末尾添加以下行:
/swapfile none swap sw 0 0
  1. 最后,刷新文件系统表:
sudo swapon --all --verbose

服务端搭建

# 添加 32 位架构支持和安装相关库
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install lib32gcc1 lib32stdc++6

# 创建一个新用户并安装 screen 工具,这里会要求创建steam用户的密码
adduser steam

# 切换到新用户
su -ls /bin/bash steam

# 下载并安装 SteamCMD
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh

# 设置 PalServer 安装目录并使用 SteamCMD 登录并更新 PalServer
force_install_dir /home/steam/PalServer
login anonymous
app_update 2394010 validate
quit

# 进入 PalServer 目录
cd PalServer

# 创建 Steam SDK 目录并复制 steamclient.so 文件
mkdir -p ~/.steam/sdk64/
cp linux64/steamclient.so ~/.steam/sdk64/

# 运行 PalServer 脚本,出现AppID服务器即运行成功
./PalServer.sh

让palserver开机启动:

需要执行以下步骤:

  1. 打开 systemd 服务单元文件:
sudo vim /etc/systemd/system/palserver.service

palserver.service

[Unit]
Description=Palworld Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
WorkingDirectory=/home/steam/PalServer

ExecStart=/bin/bash -c "/home/steam/PalServer/PalServer.sh -port=8211 -players=16 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS"

LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID

Restart=always
RestartSec=10

User=steam
Group=steam

[Install]
WantedBy=multi-user.target

设置为自启动然后开服:

sudo systemctl enable palserver
sudo systemctl start palserver

然后就可以玩了!
我先去了局域网的服务器测试,再去连了FRP服务器

中途遇到的几个坑

  1. 记得阿里云安全组开放端口
  2. 幻兽帕鲁用的是UDP协议
  3. 内网穿透幻兽帕鲁的端口,本地端口必须和远程端口一致,否则出现ping不上的情况
  4. 世界配置里面的端口必须和palserver.service里面的一致,否则出现ping不上的情况

修改世界配置

PalWorld Settings Generator v0.11 (dysoncheng.github.io)
这个网站可以直接输入你想要的设定然后输出PalWorldSettings.ini文件
把目录/home/steam/PalServer/PalSaved/Config/LinuxServer/文件夹中的文件替换掉即可