zerone's blog

Zerone
Do everything make yourself happy!
  1. 首页
  2. 私服
  3. 幻兽帕鲁
  4. 正文

幻兽帕鲁私服建设第1话——创建篇

2024年3月15日 376点热度 6人点赞 0条评论

0x00 前言

在前篇——《幻兽帕鲁私服建设第0话——原理篇》已经对幻兽帕鲁的私服搭建项目做了简单的原理性陈述。

现对github中的palworld-deployer仓库完成了最重要的创建功能,可以通过该仓库的脚本直接在服务器上创建完整的幻兽帕鲁私服服务。

本篇中将对该功能会进行完整的介绍。

0x01 操作

0x01.0x00 ssh连接

这个就不写了,应该都会,不会的话google搜关键词——ssh连接服务器

0x01.0x01 安装依赖包

在宿主机中需要三个依赖包,一个是git,用于下载仓库源码,另外两个是docker-ce以及jq,docker-ce提供容器环境,jq作用是在bash shell脚本中对json数据进行解析。

  •  rpm系列

centos安装docker-ce可参考《CentOS 下安装 Docker 极简教程》
yum install epel-release && yum install -y jq git

  •  deb系列

apt install -y jq docker.io git

  •  其他系列

自己去查哈

0x01.0x02 下载仓库

git clone https://github.com/zeronezo01/palworld-deployer.git

0x01.0x03 执行部署

  •  开放默认8211端口作为私服连接入口

cd palworld-deployer; bash deploy.sh create

  •  开放自定义端口,如8323,作为私服连接入口

cd palworld-deployer; bash deploy.sh create -p 8323

0x01.0x04 开放端口

最后一步就是记得将私服端口进行开放,一般云系统中将公网IP直接映射到云服务器,则只需到安全组中将端口对应的udp协议进行开放,这个步骤不同的云厂都大同小异,找对应云厂的安全组配置说明就可以。

如果是自建服务器或者在云系统中使用了NAT功能,就需要做好外网IP确认以及端口映射等操作,就不具体说明了,还是那句话,google一下。

0x02 分析

整个仓库暂时实现还比较简单,整个流程可以理解为仅有
脚本先决判断处理->基于Dockfile创建镜像->脚本建立容器
三个步骤

0x02.0x00 目录结构

├── deploy.sh
├── docker
│   ├── Dockerfile
│   └── palworld-backup
├── LICENSE
└── README.md

主执行脚本为deploy.sh,基于docker目录内的Dockerfile进行docker镜像的创建,palworld-backup为备份脚本

0x02.0x01 详细流程

整个创建的详细流程位于deploy.sh的create函数中,下面简单描述一下即可

  •  初始判断执行脚本的子命令,由于后续还会增加update以及destroy命令,将子命令之后的参数传入create函数中
  • 私服默认对外端口设置为8211,判断传参中是否包含端口参数,存在则将端口参数进行更改
  • 由于创建完成后会启动唯一容器,因此判断是否存在运行中的幻兽帕鲁的私服容器,存在则删除
  • 进入docker目录通过Dockerfile基于ubuntu基础镜像创建自定义镜像
    1. 镜像中需要进行依赖库安装,最终需要完成steamcmd工具的安装,其中最主要的是需要将license说明下选项默认置为I AGREE,在debconf-set-selections体现
    2. steam游戏私服无法通过root用户进行启动,因此在os中需要新建一个steam的用户
    3. 切换到steam用户,下载安装幻兽帕鲁私服相关依赖以及私服安装包,在下载安装后创建出幻兽帕鲁私服的配置文件路径,目的是为之后映射默认配置做准备
    4. 将备份目录暴露给宿主机
    5. 切换回root用户,用于配置cron定时服务,将palworld-backup脚本导入镜像,在容器启动之后每小时进行一次配置文件以及游戏存档的备份,备份文件可以直接看palworld-backup脚本
    6. 启动cron并切换至steam用户执行幻兽帕鲁私服脚本启动私服
  • 通过自定义镜像建立临时容器,将私服默认配置文件拷贝至宿主机/etc/palworld目录下
  • 停止删除临时容器,重新建立正式容器,主要是映射外部定义端口至容器内部8211端口的UDP协议,并且将宿主机配置文件映射至容器内部路径

0x02.0x02 补充

要在宿主机上查看拷贝备份数据,由于功能还未在脚本中实现,备份路径可以通过简单的docker命令进行查找

docker inspect palworld | jq '.[].Mounts'

找到对应Destination为/backup对应的路径,即对应项的Source标签

路径类似于

"Source": "/var/lib/docker/volumes/9b672b357cc5754e7eaae0891fd404490f79ae73d5c5fe52e098ece96fa90430/_data"

则通过路径/var/lib/docker/volumes/9b672b357cc5754e7eaae0891fd404490f79ae73d5c5fe52e098ece96fa90430/_data即可找到备份文件,备份文件是按照日期分目录存放

0x03 结尾

创建脚本流程较为简单,但已经基本完成了该项目的大部分功能流程框架,之后的功能基本都是基于创建流程框架进行开发。

本文就到此结束,等候下一篇分享吧,Bye

标签: Docker ubuntu linux 容器应用 幻兽帕鲁 私服部署
最后更新:2024年4月3日

zerone

执着的做着自己认为自己喜欢做的事 好奇热衷于技术 喜欢赛车,好创业搞产品 没事就泡功夫茶 当然最喜欢的还是篮球 经历过大部分人这辈子都不会经历的事情 发现人还是得做自己喜欢的事 喜欢自己喜欢的人 厌恶自己讨厌的人和事 一切都还是得随心随性

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 0x00 前言
  • 0x01 操作
    • 0x01.0x00 ssh连接
    • 0x01.0x01 安装依赖包
    • 0x01.0x02 下载仓库
    • 0x01.0x03 执行部署
    • 0x01.0x04 开放端口
  • 0x02 分析
    • 0x02.0x00 目录结构
    • 0x02.0x01 详细流程
    • 0x02.0x02 补充
  • 0x03 结尾
最新 热点 随机
最新 热点 随机
记录下n2n的心酸编译路程 幻兽帕鲁私服建设第1话——创建篇 知晓鸟山明去世之后 幻兽帕鲁私服建设第0话——原理篇 论币圈两三事 博客分享新生活——启动!
记录下n2n的心酸编译路程 论币圈两三事 幻兽帕鲁私服建设第0话——原理篇 博客分享新生活——启动! 知晓鸟山明去世之后 幻兽帕鲁私服建设第1话——创建篇

zerone

执着的做着自己认为自己喜欢做的事
好奇热衷于技术
喜欢赛车,好创业搞产品
没事就泡功夫茶
当然最喜欢的还是篮球

经历过大部分人这辈子都不会经历的事情
发现人还是得做自己喜欢的事
喜欢自己喜欢的人
厌恶自己讨厌的人和事
一切都还是得随心随性

COPYRIGHT © 2024 zerone's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang