PalWolrd容器部署及第三方调优(手动操作替代OOS)Ubuntu 22.04

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 如果您是OSS已经部署了,请参考部署后的内容,如果您是打算使用容器部署方案,请看清楚地域选择自己最合适的安装方式,请注意该方案仅仅适用于Ubuntu

优惠购买链接:

/topic/ecs/huanshou?userCode=qhtxv10l

/topic/ecs/huanshou?userCode=qhtxv10l

/topic/ecs/huanshou?userCode=qhtxv10l



容器部署引导

Docker安装(中国大陆外区域用户)

sudo apt update
sudo apt upgrade -y
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt -y install docker.io
sudo systemctl enable docker --now

拉取镜像运行PalServer(中国大陆外区域用户)

sudo docker pull thijsvanloef/palworld-server-docker:latest
# 创建 /palworld 用于在 ECS 上存储服务器配置和存档
sudo groupadd steam && sudo useradd steam|| echo "ignore"
sudo mkdir /PalSaved && sudo chown -R steam:steam /PalSaved
docker run -d \
    --name palworld-server \
    -p 8211:8211/udp \
    -p 27015:27015/udp \
    -v /PalSaved:/palworld/Pal/Saved/ \
    -e PUID=1000 \
    -e PGID=1000 \
    -e PORT=8211 \
    -e PLAYERS=16 \
    -e MULTITHREADING=true \
    -e RCON_ENABLED=true \
    -e RCON_PORT=25575 \
    -e TZ=UTC \
    -e COMMUNITY=false \
    -e SERVER_NAME="World of Pals" \
    -e SERVER_DESCRIPTION="Awesome World of Pal" \
    --restart unless-stopped \
    --stop-timeout 30 \
    thijsvanloef/palworld-server-docker:latest

Docker安装及拉取镜像运行PalServer(中国大陆区域用户)

sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
sudo dnf -y install docker-ce --nobest
sudo systemctl start docker
sudo systemctl enable docker
# 获取 Palworld 服务器 docker 镜像。
REGION=`curl -s 100.100.100.200/latest/meta-data/region-id`
# 某些地域没有镜像仓库,就近获取
if [ "$REGION" = "cn-nanjing" ] || [ "$REGION" = "cn-fuzhou" ]; then REGION=.cn-shanghai; elif [ "$REGION" = "cn-wuhan" ]; then REGION=.cn-chengdu; elif [ "$REGION" = "ap-northeast-2" ]; then REGION=.ap-northeast-1; elif [ "$REGION" = "ap-southeast-6" ] || [ "$REGION" = "ap-southeast-6" ]; then REGION=.ap-southeast-1; else REGION=-vpc.$REGION; fi
DOCKER_IMAGE_URL=registry${REGION}.aliyuncs.com/imbolo/palworld-server:latest
sudo docker pull $DOCKER_IMAGE_URL
# 创建 /PalSaved 用于在 ECS 上存储服务器配置和存档
sudo groupadd -g 1000 steam && sudo useradd -u 1000 -g steam -m steam || echo "ignore"
sudo mkdir /PalSaved && sudo chown -R 1000:1000 /PalSaved
sudo docker run --restart=always --user 1000:1000 -v /PalSaved:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/ --name palworld-server --net host -dit $DOCKER_IMAGE_URL
echo '运行成功'

游戏连接示例

备份及迁移

数据备份

全备份

# 备份到当前用户所在目录
zip -r PalWorld-$(date +"%Y-%m-%d_%H-%M-%S").zip /PalSaved/

仅备份用户数据

zip -r PalWorld-SaveGames-$(date +"%Y-%m-%d_%H-%M-%S").zip /PalSaved/SaveGames/

自动备份

# 全备份+用户备份,如果只需要一个,那么请在另一个命令行前加上 # 
cat > /root/pal-backup.sh << EOF
zip -r /root/PalWorld-\$(date +"%Y-%m-%d_%H-%M-%S").zip /PalSaved/
zip -r /root/PalWorld-SaveGames-\$(date +"%Y-%m-%d_%H-%M-%S").zip /PalSaved/SaveGames/
echo  `date` --- backup successful >> /root/pal-backup.log
EOF
chmod +x /root/pal-backup.sh
# 以每五分钟备份一次
echo "*/5 * * * * /root/pal-backup.sh" >> /var/spool/cron/crontabs/root
# 若是每小时备份一次
# echo "0 * * * * /root/pal-backup.sh" >> /var/spool/cron/crontabs/root

数据恢复

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

注意,导入备份数据千万不能在备份数据时,增加额外的文件层,例如
解压Save其层级为  xxx/Saved/Saved/

一定要是单纯的 Saved目录中的内容

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

全备份恢复(Saved)

sudo cat > /root/pal-restore.sh << EOF
echo "请输入Saved存档的绝对路径(eg: /root/pal-arch.zip): "
read ziploc
unzip -o \${ziploc} -d /PalSaved
LSN=\$(ls -tr /PalSaved/SaveGames/0/|awk 'NR==1{print \$1}')
sed -i "s/^DedicatedServerName=.*/DedicatedServerName=\$LSN/" /PalSaved/Config/LinuxServer/GameUserSettings.ini
sudo groupadd steam && sudo useradd steam|| echo "steam user or group already exists, ignore"
chown -R steam:steam /PalSaved
sudo docker restart palworld-server
docker ps 
EOF
chmod +x /root/pal-restore.sh
sudo bash /root/pal-restore.sh

用户数据恢复(SaveGames)

sudo cat > /root/pal-restore.sh << EOF
echo "请输入SaveGames存档的绝对路径(eg: /root/pal-arch.zip): "
read ziploc
unzip -o \${ziploc} -d /PalSaved/
LSN=\$(ls -tr /PalSaved/SaveGames/0/|awk 'NR==1{print \$1}')
sed -i "s/^DedicatedServerName=.*/DedicatedServerName=\$LSN/" /PalSaved/Config/LinuxServer/GameUserSettings.ini
sudo groupadd steam && sudo useradd steam|| echo "steam user or group already exists, ignore"
chown -R steam:steam /PalSaved
sudo docker restart palworld-server
docker ps 
EOF
chmod +x /root/pal-restore.sh
sudo bash /root/pal-restore.sh

第三方patch优化(1.3.0版本|中国大陆用户无法使用github)

风险操作,请备份后再操作

# 下载并替换文件
bindir=/palworld/Pal/Binaries/Linux/
docker exec palworld-server mv $bindir/PalServer-Linux-Test $bindir/PalServer-Linux-Test.bak
docker exec palworld-server wget -O $bindir/PalServer-Linux-Test https://github.com/VeroFess/PalWorld-Server-Unoffical-Fix/releases/download/1.3.0-Update-3/PalServer-Linux-Test-Patch-Update-3
docker exec palworld-server chmod 755 $bindir/PalServer-Linux-Test
sudo docker restart palworld-server

自动释放内存

cat > /root/auto-release-mem.sh << EOF
freemem=\$(free -m|awk 'NR==2{print \$7}')
if [ \$freemem -lt 100 ];then 
sudo docker restart palworld-server;
sudo echo \$(date +"%Y-%m-%d_%H-%M-%S")---auto release memory successfully ! >> /root/release-mem.log;
new_mem=\$(free -m|awk 'NR==2{print $7}')
sudo echo \$(date +"%Y-%m-%d_%H-%M-%S")---current free memory is: \${new_mem}MB  >> /root/release-mem.log;
fi
EOF
chmod +x /root/auto-release-mem.sh
echo "*/1 * * * * /root/auto-release-mem.sh" >> /var/spool/cron/crontabs/root

添加Swap内存

不建议操作,此设置有宕机风险,重启后开机过程会变长

# 根据自己的需求调整大小 此处为8G
fallocate -l 8G /swapfile
mkswap /swapfile && swapon /swapfile
echo "/swapfile none swap sw 0 0" >> /etc/fstab
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
运维 监控 Kubernetes
构建高效自动化运维体系:基于容器技术的持续集成与持续部署(CI/CD)实践
【5月更文挑战第15天】 随着云计算和微服务架构的普及,传统的IT运维模式面临转型压力。为提高软件交付效率并降低运维成本,本文探讨了利用容器技术实现自动化运维的有效策略。重点分析了在持续集成(CI)和持续部署(CD)流程中,容器如何发挥作用,以及它们如何帮助组织实现敏捷性和弹性。通过具体案例研究,文章展示了容器化技术在自动化测试、部署及扩展中的应用,并讨论了其对系统稳定性和安全性的影响。
|
1天前
|
运维 监控 安全
构建高效自动化运维系统:基于容器技术的持续集成与持续部署(CI/CD)实践
【5月更文挑战第14天】 随着DevOps文化的深入人心,持续集成与持续部署(CI/CD)已成为现代软件工程不可或缺的组成部分。本文将探讨如何利用容器技术,尤其是Docker和Kubernetes,构建一个高效、可扩展的自动化运维系统。通过深入分析CI/CD流程的关键组件,我们将讨论如何整合这些组件以实现代码从提交到生产环境的快速、无缝过渡。文章还将涉及监控、日志管理以及安全性策略等运维考量,为读者提供一个全面的自动化运维解决方案蓝图。
|
1天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于容器技术的持续集成与部署实践
【5月更文挑战第13天】 在现代软件开发周期中,持续集成(CI)和持续部署(CD)已成为提升开发效率、保障产品质量的关键环节。随着云计算和微服务架构的普及,容器技术如Docker和Kubernetes为运维领域带来了革命性的变革。本文旨在探讨如何利用容器技术构建一个高效、可靠的自动化运维体系,实现从代码提交到产品发布的全过程自动化管理。通过深入分析容器化技术的核心原理,结合实际案例,我们将阐述如何优化持续集成流程、确保自动化测试的覆盖率、以及实现无缝的持续部署。
14 2
|
1天前
|
Ubuntu Apache 数据库
如何在Ubuntu系统部署Z-blog博客结合cpolar实现无公网IP访问本地网站
如何在Ubuntu系统部署Z-blog博客结合cpolar实现无公网IP访问本地网站
24 2
|
1天前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
1天前
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
|
1天前
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
|
1天前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
1天前
|
弹性计算 Shell 数据安全/隐私保护
自动化构建和部署Docker容器
【4月更文挑战第30天】
15 0
|
1天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于容器技术的持续集成与持续部署(CI/CD)实践
【4月更文挑战第29天】 随着云计算和微服务架构的兴起,自动化运维已成为提升企业IT效率、确保系统稳定性的关键因素。本文旨在探讨如何利用容器技术构建一套高效的自动化运维体系,实现软件开发过程中的持续集成(CI)与持续部署(CD)。文章首先分析了传统运维模式面临的挑战,然后详细介绍了基于Docker和Kubernetes等容器技术的CI/CD流程设计与实施策略,并通过一个实际案例来展示该方案在提高部署频率、降低人力成本及提升系统可靠性方面的显著优势。
http://www.vxiaotou.com