Cyang39's 的笔记

用 Docker 运行一个 PalWorld 服务器

Last update: 1/21/2024

第一步:下载服务器文件

这里使用 steamcmd 的容器:https://github.com/CM2Walki/steamcmd

bash
# 创建卷(不然重启容器,服务器文件就删除了) docker volume create steamcmd_login_volume # Optional: Location of login session docker volume create steamcmd_volume # Optional: Location of SteamCMD installation # 进入容器 docker run -it \ -v "steamcmd_login_volume:/home/steam/Steam" \ -v "steamcmd_volume:/home/steam/steamcmd" \ cm2network/steamcmd bash # 在容器内下载服务器文件,保存的路径是 /home/steam/Steam/steamapps/common/PalServer ./steamcmd.sh +login anonymous +app_update 2394010 validate +quit

下载完成后建议删除掉这个容器,后面会重新启动一个,不用担心文件消失,已经保存在卷里了。

第二步:用 Docker 服务器运行服务器

bash
docker run -d --name=palword-server \ -v "steamcmd_login_volume:/home/steam/Steam" \ -v "steamcmd_volume:/home/steam/steamcmd" \ -p 8211:8211/udp cm2network/steamcmd \ /home/steam/Steam/steamapps/common/PalServer/PalServer.sh

游戏的默认端口是 8211 ,所以需要将他映射到宿主机上(这里这个 udp 很重要,折腾我半天)。查看 Docker 日志,如果是像下面这样,说明是成功了:

39f1b393-7f83-4fd0-aafd-0998194b26e3

第三步:内网穿透(按需)

因为官方的建议最低配置是 4 核心 8 GB 内存,这样的云服务器我自然是租不起的,所以只能用家里的服务器进行内网穿透。内网穿透的方法有不少,蒲公英、ZeroTier、TaileScale、Frp 等等……

我选用 Frp 是为了方便小伙伴能快速登录,不用下载各种客户端,当然门槛在于需要一个公网 VPS(只要带宽 OK,不需要 4 核心 8 GB)。

客户端侧配置如下(这是旧版 frp 的 ini 格式配置,新版建议改成 toml 格式):

bash
[palword-server] type = udp local_ip = 127.0.0.1 local_port = 8211 remote_port = 8211

FRP服务器侧面板的显示如下,如果连通的话,点击登录流量就会有1MB左右:

242665b4-f7b0-4b3f-aabe-5b41efc000f5

注意需要将服务器的 8211/udp 添加防火墙白名单,不然连不上。

第四步:登录游戏

19a96863-6502-477b-8742-45da3aac6718

IP 用公网服务器的 IP 地址,如果绑定了域名,直接用域名更方便。