服务器端设置

启动参数

-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS

端口转发

  • RCON:不转发->25575
  • 连接:8888->8211 UDP
  • 管理:9999->8212 TCP

软件使用

Palworld-server-protector-DotNet

用途

  • 进程守护
  • 钉钉通知

配置文件

{
  "CmdPath": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\PalServer\\PalServer.exe",
  "Parameters": "",
  "BackupPath": "",
  "GameDataPath": "",
  "MemTarget": 90,
  "RconHost": "127.0.0.1",
  "RconPort": 25575,
  "RconPassword": "{RconPassword}",
  "RebootSeconds": 10,
  "CheckSeconds": 20,
  "BackupSeconds": 1800,
  "WebhookUrl": "",
  "IsReboot": false,
  "IsStartProcess": true,
  "IsParameters": false,
  "IsNoti": false,
  "IsSave": false,
  "IsGetPlayers": true,
  "IsWebhook": false,
  "IsWebGetPlayers": false,
  "IsWebReboot": false,
  "IsWebSave": false,
  "IsWebStartProcess": false,
  "IsWebPlayerStatus": false,
  "IsOutputMemInfo": false
}

palworld-server-toolkit

用途

  • 最全面的存档管理编辑软件
  • 可用于在 Palworld 世界间转移角色,允许朋友们将他们的角色转移到彼此的服务器上,而不会失去任何进度。
  • 亦可以用于编辑玩家所持有的帕鲁、参数、持有物品、金钱等等数据。
  • 亦可以移动玩家的公会、删除营地、删除玩家

 

自己写的备份脚本

用途

  • 备份存档
  • 上传云盘

脚本

#!/bin/bash
folder_path="/mnt/c/Program Files (x86)/Steam/steamapps/common/PalServer/Pal/Saved"
save_path="/mnt/d/game/pal_backup"  # 自定义保存路径
current_time=$(date +"%Y-%m%d-%H%M")
archive_name="${save_path}/Saved_${current_time}.tar.gz"
cd "$folder_path" && tar --exclude="Crashes/*" --exclude="Config/CrashReportClient/*" -czvf "$archive_name" .
# WebDAV服务器地址
WEBDAV_URL="https://cloud.duya12345.top/dav/data/pal_bp"
# WebDAV用户名和密码
USERNAME="{USERNAME}"
PASSWORD="{PASSWORD}"
FILE_NAME=$(basename "$archive_name")
# 使用curl命令上传文件
cd "$save_path" && curl -T "$archive_name" -u "$USERNAME:$PASSWORD" "$WEBDAV_URL/$FILE_NAME"
# 删除24小时前的文件
lastday_date=$(date -d @$(($(date +%s) - 86400)) +"%Y-%m%d-%H%M")
delete_name="Saved_${lastday_date}.tar.gz"
curl -X DELETE -u "$USERNAME:$PASSWORD" "$WEBDAV_URL/$delete_name"

palworld-server-tool

用途

  • 服务器远程监控
  • 快速查看玩家基本信息
  • 远程手动管理(t人/关服等)

配置文件

# WebUI Config相关配置
web:
  # WebUI Admin Password 管理模式密码
  password: "{password}"
  # WebUI Port 服务端口
  port: 8212
  # Enable TLS 是否开启 TLS HTTPS
  tls: false
  # TLS Cert 如果开启使用 HTTPS 请输入证书文件路径
  cert_path: ""
  # TLS Key 如果开启使用 HTTPS 请输入证书密钥文件路径
  key_path: ""
  # TLS url for sav_cli to communicate 如果开启填入 TLS 证书绑定的地址如 https://yourdomain.com
  public_url: ""
# RCON Config 相关配置
rcon:
  # RCON Address Port 地址
  address: "127.0.0.1:25575"
  # 服务器设置的 Server AdminPassword
  password: "{password}"
  # 请求 RCON Timeout 超时时间推荐 <= 5
  timeout: 5
  # 定时向 RCON Interval 服务获取玩家在线情况的间隔单位秒
  sync_interval: 60
# sav_cli Config 存档文件解析相关配置
save:
  # Sav File Path 存档文件路径
  path: "C:\\Program Files (x86)\\Steam\\steamapps\\common\\PalServer\\Pal\\Saved"
  # Sav_cli Path 存档解析工具路径一般和 pst 在同一目录
  decode_path: "C:\\Users\\q7009\\Desktop\\GAME\\pst\\sav_cli.exe"
  # Sav Decode Interval 定时从存档获取数据的间隔单位秒推荐 >= 120
  sync_interval: 120
# Automation Config 自动化管理相关
manage:
  # Auto Kick non-whitelisted 玩家不在白名单是否自动踢出
  kick_non_whitelist: false

UID<-->SteamId

用途

  • steamid转换uid
  • 通过uid计算steamid

协同使用

DDNS

用途

  • 动态解析域名

脚本代码

#!/bin/bash
CF_TOKEN='{CF_TOKEN}'
CF_ZONE_ID='0ff9797b75fdb81ced7bd1d73fbb3eaa'
CF_RECORD_ID='cdf944431448f5c4ac0966c2b87fd982'
DNS='@'
DNS_RECORD_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_RECORD_ID}" \
    -H "Authorization: Bearer ${CF_TOKEN}" \
    -H "Content-Type: application/json" | jq -r '.result.content')
INTERNET_IP=`curl -s http://ipv4.icanhazip.com`
if [ "$INTERNET_IP" != "$DNS_RECORD_IP" ]
then
  echo "Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}"
  curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_RECORD_ID}" \
    -H "Authorization: Bearer ${CF_TOKEN}" \
    -H "Content-Type: application/json" \
    --data '{"type":"A","name":"'${DNS}'","content":"'${INTERNET_IP}'","ttl":60,"proxied":false}'
else
  echo "No change: ${INTERNET_IP}"
fi