From 1b6594e7b1412f5f473f88449142a4377b2fc988 Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Wed, 24 Jan 2024 11:25:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E5=87=A0=E4=B8=AA?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=20(#837)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat:添加mcsmanager-daemon * feat:添加mcsmanager-web * feat:添加palworld-server --- mcsmanager-daemon/3.4.0/data.yml | 10 + mcsmanager-daemon/3.4.0/docker-compose.yml | 19 ++ mcsmanager-daemon/README.md | 244 +++++++++++++++++++++ mcsmanager-daemon/data.yml | 20 ++ mcsmanager-daemon/logo.png | Bin 0 -> 2198 bytes mcsmanager-web/9.9.0/data.yml | 10 + mcsmanager-web/9.9.0/docker-compose.yml | 18 ++ mcsmanager-web/README.md | 244 +++++++++++++++++++++ mcsmanager-web/data.yml | 20 ++ mcsmanager-web/logo.png | Bin 0 -> 2198 bytes palworld-server/README.md | 59 +++++ palworld-server/data.yml | 20 ++ palworld-server/latest/data.yml | 100 +++++++++ palworld-server/latest/docker-compose.yml | 34 +++ palworld-server/logo.png | Bin 0 -> 10797 bytes 15 files changed, 798 insertions(+) create mode 100644 mcsmanager-daemon/3.4.0/data.yml create mode 100644 mcsmanager-daemon/3.4.0/docker-compose.yml create mode 100644 mcsmanager-daemon/README.md create mode 100644 mcsmanager-daemon/data.yml create mode 100644 mcsmanager-daemon/logo.png create mode 100644 mcsmanager-web/9.9.0/data.yml create mode 100644 mcsmanager-web/9.9.0/docker-compose.yml create mode 100644 mcsmanager-web/README.md create mode 100644 mcsmanager-web/data.yml create mode 100644 mcsmanager-web/logo.png create mode 100644 palworld-server/README.md create mode 100644 palworld-server/data.yml create mode 100644 palworld-server/latest/data.yml create mode 100644 palworld-server/latest/docker-compose.yml create mode 100644 palworld-server/logo.png diff --git a/mcsmanager-daemon/3.4.0/data.yml b/mcsmanager-daemon/3.4.0/data.yml new file mode 100644 index 000000000..e8284d1d3 --- /dev/null +++ b/mcsmanager-daemon/3.4.0/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40057 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/mcsmanager-daemon/3.4.0/docker-compose.yml b/mcsmanager-daemon/3.4.0/docker-compose.yml new file mode 100644 index 000000000..ab71dde21 --- /dev/null +++ b/mcsmanager-daemon/3.4.0/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + mcsm-daemon: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:24444" + volumes: + - ./data:/opt/mcsmanager/daemon/data + - /var/run/docker.sock:/var/run/docker.sock + image: alisaqaq/mcsmanager-daemon:3.4.0 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/mcsmanager-daemon/README.md b/mcsmanager-daemon/README.md new file mode 100644 index 000000000..6e39d997a --- /dev/null +++ b/mcsmanager-daemon/README.md @@ -0,0 +1,244 @@ +MCSManagerLogo.png + +
+ +[![Status](https://img.shields.io/badge/npm-v6.14.15-blue.svg)](https://www.npmjs.com/) +[![Status](https://img.shields.io/badge/node-v14.17.6-blue.svg)](https://nodejs.org/en/download/) +[![Status](https://img.shields.io/badge/License-Apache%202.0-red.svg)](https://github.com/MCSManager) + +[官方网站](http://mcsmanager.com/) | [使用文档](https://docs.mcsmanager.com/) | [团队主页](https://github.com/MCSManager) | [面板端项目](https://github.com/MCSManager/MCSManager) | [网页前端项目](https://github.com/MCSManager/UI) | [守护进程项目](https://github.com/MCSManager/Daemon) + + +中文 QQ 群:https://jq.qq.com/?_wv=1027&k=Pgl9ScGw + +中文 TG 群:https://t.me/MCSManager_dev + +爱发电赞助:https://afdian.net/a/mcsmanager + +
+ +## 这是什么? + + +MCSManager 面板(简称:MCSM 面板)是一款开源,分布式,轻量级,快速部署,支持大部分游戏服务端和控制台程序的管理面板 + +
+ +## 软件特性 + +软件在 Minecraft 和其他游戏社区内中已有一定的流行程度,它可以帮助你集中管理多个物理服务器,动态在任何主机上创建游戏服务端,并且提供安全可靠的多用户权限系统,可以很轻松的帮助你管理多个服务器,一直在为 Minecraft,Terraria,Steam 游戏服务器管理员,运维人员和个人开发者提供健康的软件支持。 + + +![截图.png](https://public-link.oss-cn-shenzhen.aliyuncs.com/mcsm_picture/MCSM9.png) + +![Screenshot.png](https://mcsmanager.com/main2.png) + +QQ20221207-174328@2x + + +
+ +## 运行环境 + +控制面板可运行在 Windows 与 Linux 平台,无需数据库与任何系统配置,只需安装 node 环境即可快速运行,属于轻量级的 Minecraft 服务端控制面板。 + +必须 `Node 14.17.0` 以上,无需数据库和更改任何系统配置,开箱即可运行。 + +
+ +## 配置/数据文件 + +配置文件: `data/SystemConfig/config.json` + +用户数据文件:`data/User/*.json` + +远程守护进程配置:`data/RemoteServiceConfig/*.json` + +
+ +## 软件文档 + +地址:[https://docs.mcsmanager.com/](https://docs.mcsmanager.com/) + +
+ +## 安装 + +### Windows + +对于 Windows 系统,**已整合成直接运行版本,下载即可运行**(使用管理员权限运行): + +前往:[https://mcsmanager.com/](https://mcsmanager.com/) + +
+ + +### Linux + +**一行命令快速安装** + +```bash +// 国内用户专用 gitee 加速源 +wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash + +// 或原始源(科学上网) +wget -qO- https://raw.githubusercontent.com/mcsmanager/Script/master/setup.sh | bash +``` + +- 脚本仅适用于 AMD64 架构 Ubuntu/Centos/Debian/Archlinux。 +- 执行完成后,使用 `systemctl start mcsm-{web,daemon}` 即可启动面板服务。 +- 面板代码与运行环境自动安装在 `/opt/mcsmanager/` 目录下。 + +
+ +**Linux 手动安装** + +- 若一键安装不起作用,则可以尝试此步骤手动安装。 + +```bash +# 切换到安装目录。如果不存在,请提前用'mkdir /opt/'创建它。 +cd /opt/ +# 下载运行时环境(Node.js)。如果你已经安装了Node.js 14+,请忽略此步骤。 +wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.gz +# 解压档案 +tar -zxvf node-v14.17.6-linux-x64.tar.gz +# 添加程序到系统环境变量 +ln -s /opt/node-v14.17.6-linux-x64/bin/node /usr/bin/node +ln -s /opt/node-v14.17.6-linux-x64/bin/npm /usr/bin/npm + +# 准备好安装目录 +mkdir /opt/mcsmanager/ +cd /opt/mcsmanager/ + +# 下载MCSManager +wget https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz +tar -zxf mcsmanager_linux_release.tar.gz + +# 安装依赖库 +./install-dependency.sh + +# 请打开两个终端或屏幕 + +# 先启动守护程序 +./start-daemon.sh + +# 启动网络服务(在第二个终端) +./start-web.sh + +# 为网络界面访问http://localhost:23333/ +# 一般来说,网络应用会自动扫描并连接到本地守护进程。 +``` + +- 注意,这种安装方式不会自动注册面板到系统服务(Service),所以必须使用 `screen` 软件来管理。 + +
+ +## 更新版本 + +参考: https://github.com/MCSManager/MCSManager/wiki/Update-MCSManager + +> 如果你不是特别需要新版本的功能,或者不是为了修复安全隐患,那就不建议更新。 + +
+ +## 项目体系 + +整个软件运行需要三个项目的互相配合才可运行,您普通安装的代码是编译再整合后的产物。 + +[**控制面板端**](https://github.com/MCSManager/MCSManager) + +- 角色:控制中心 +- 责任:负责提供网页前端的后端接口,提供 API 接口,用户数据管理和对守护进程进行通信和授权。 + +[**网页前端**](https://github.com/MCSManager/UI) + +- 角色:控制中心的用户交互界面 +- 责任:以网页形式展示数据,发送请求,并且拥有与守护进程通信的能力,此项目最终产物是纯静态文件。 + +[**守护进程**](https://github.com/MCSManager/Daemon) + +- 角色:被控端 +- 责任:控制本地主机的所有实例,真实进程的实际管理者,拥有与任何对象的通信能力。 + +
+ +## 搭建开发环境 + +此段落面向开发人员,普通用户无需关注也无需执行。 + +所有项目全部以开发环境运行后,便可以进行开发与预览,请务必遵循开源协议。 + +**控制面板端(MCSManager)** + +```bash +git clone https://github.com/MCSManager/MCSManager.git +cd MCSManager +npm install +npm run start +# 默认将采用 ts-node 直接执行 Typescript 代码 +# 默认运行在 23333 端口 +``` + +**网页前端(UI)** + +```bash +git clone https://github.com/MCSManager/UI.git +cd UI +npm install +npm run serve +# 访问 http://localhost:8080/ 即可预览界面 +# 所有 API 请求将自动转发到 23333 端口 +``` + +**守护进程(Daemon)** + +```bash +git clone https://github.com/MCSManager/Daemon.git +cd Daemon +npm install +npm run start +# 运行后请在控制面板端连接本守护进程 +# 默认运行在 24444 端口 +``` + +
+ +## 浏览器兼容性 + +- 支持 `Chrome` `Firefox` `Safari` `Opera` 等现代主流浏览器。 +- 已放弃支持 `IE` 浏览器。 + +
+ +## 国际化 + +MCSManager 已支持中文,英文两种语言,已经实现国际化全面覆盖。 + +软件国际化由 [Lazy](https://github.com/LazyCreeper),[KevinLu2000](https://github.com/KevinLu2000),[zijiren233](https://github.com/zijiren233) 和 [Unitwk](https://github.com/unitwk) 共同完成 + +
+ +## 贡献 + +如果你在使用过程中发现任何问题,可以 [提交 Issue](https://github.com/MCSManager/MCSManager/issues/new/choose) 或自行 Fork 修改后提交 Pull Request。 + +代码需要保持现有格式,不得格式化多余代码,具体可[参考这里](https://github.com/MCSManager/MCSManager/issues/544)。 + +
+ +## 问题报告 + +欢迎发现的任何问题进行反馈,必当及时修复。 + +若发现严重安全漏洞又不便公开发布,请发送邮件至: mcsmanager-dev@outlook.com。 + +安全问题修复后将在代码中附加漏洞发现者姓名。 + +
+ + +## 源代码协议 + +源代码遵循 Apache-2.0 协议。 + +版权所有 2022 MCSManager 开发团队。 diff --git a/mcsmanager-daemon/data.yml b/mcsmanager-daemon/data.yml new file mode 100644 index 000000000..d06aac4b6 --- /dev/null +++ b/mcsmanager-daemon/data.yml @@ -0,0 +1,20 @@ +name: MCSManager Daemon +tags: + - 休闲游戏 +title: 支持大部分游戏服务端和控制台程序的管理面板(后端) +type: 休闲游戏 +description: 支持大部分游戏服务端和控制台程序的管理面板(后端) +additionalProperties: + key: mcsmanager-daemon + name: MCSManager Daemon + tags: + - Game + shortDescZh: 支持大部分游戏服务端和控制台程序的管理面板(后端) + shortDescEn: Distributed, Docker-supported, Multilingual, and Lightweight control panel for Minecraft server and more (daemon) + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://hub.docker.com/r/alisaqaq/mcsmanager-web + github: https://github.com/MCSManager/MCSManager + document: https://docs.mcsmanager.com/ diff --git a/mcsmanager-daemon/logo.png b/mcsmanager-daemon/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..948029be6c1366cf3c997ceda7cfa6e1f1d274b9 GIT binary patch literal 2198 zcma)-`#%#77snUVW@c&DEVoEW?t9!fLs%$xr9#L;vlQQrJZ41hge7u|WTd_>p(MA+ zY@}Rs$z_DFrx2T5DgLQRvDvD|ooC#NFx2mctlCS>)cL8`n=p6oh zc4l@-@w1UeV9Wk|6vffj2_SE|l)me|_G0&cYyQt&g|gqX004+-Wq#&D$mrtbvEUgc zvApZ$O4BI-dFI~Uyt8~~0xj5m{W;0j>#fiP-lKD8Q$Y+26o@pD`=>Uw*Up}yPVt6$ z!^7(;vddA__8Gx3qh);R8~mI4cNH69IgO&UT|B!7w))CO6p{6=Al0nND_nvf9$pLR z9ww`gb>-B$P0oi_E{x^oR4)IjXKPeWrf&L!u0(v=uKm`y_%@uTftBUe`ZYPmvsXx@ zP!D#lYw2)Cl-ly|6`j+#{IwVCSd!DwHfO_>`8qIZAvQ*ALZBU-4N!&hge72#9|0|!ys6(6G?(7k#s0Y zGETW~tapk9DMa^$E+-q9V5USaNlMvtfM4^5SY=|s*FdSqAZ}a8cLit9Vj-?SM5qEj@(^8$?F@n^dlab+v*(_t*cBjU@DODR|80W><}Dj!!;D9d)C zRzGw9Pqpd`K>_Jr3|P?0^<@h+uX>#EXb|KYCft=@rOdivf*~A=mK&u)L2gIFezd<= zOQZ8+i}?;iO-M{h%fR98RSS1Ww%!IBakF46rH(l=d=R3^;aTS%WJugD1)nSA7zo+5 z6;0eVV89sXF$oWEncC|S=cj0JO{9EFRkm#B^j%G=KvZCGI|N8^ju+CsCNho0MR}Xl z182J%|C}u&pAgjo-NaLH_!Y z=;Sz=+ZJWsKe!bz?swQBWHgemb`+D{0GXqO%u&vL{M=D3^7D02k(gjUWp4+yaZA*K z*Q#j^@`G|CwT`C~psfK|5r+)GyH8XznI|qfT`=?-%$i;}x9W-sP)*7p;59dzgJ*#$ z!ALJk%H|)GEg)Gd|rj>giIugqg{y*L3yx2%*PlpL4&^fRhoP@i4x&ujeX z`bvM@YP7DJl_>lIJ}ptX6d7$Y+LG=MmH26AeVoCTyC01XGxkAP)le6LILJC=Oi7kW z#Z9e`pF}<+U7Xs|ZDVTmm$sn(aLqia*B0g#`b4s^&yRC(t9BBgaiVu&U_n;&gG5Gp zLaY0P!WP7iYOLsmZ`>L>Y63OZ2aWoVj1YdYzThl}N6IG=*puPhi{FO+718k_8J*IH8XVERr%iT|dHEgoS{}4* za5&J^t!=9D@)A0Q6gdi6^-HU$ZGbiXG}ULQS5!gCZsnt`rr@Gj8ueeM+I6O!*~d#@(UY z(0`{1`tXUAt8QM(V>@7@rChltUw(X`4nC7Qj@Q=`RQfu-r0J{w16JTaRXW zZlm3%%DrRC12+vDECNB|V3jdU + +
+ +[![Status](https://img.shields.io/badge/npm-v6.14.15-blue.svg)](https://www.npmjs.com/) +[![Status](https://img.shields.io/badge/node-v14.17.6-blue.svg)](https://nodejs.org/en/download/) +[![Status](https://img.shields.io/badge/License-Apache%202.0-red.svg)](https://github.com/MCSManager) + +[官方网站](http://mcsmanager.com/) | [使用文档](https://docs.mcsmanager.com/) | [团队主页](https://github.com/MCSManager) | [面板端项目](https://github.com/MCSManager/MCSManager) | [网页前端项目](https://github.com/MCSManager/UI) | [守护进程项目](https://github.com/MCSManager/Daemon) + + +中文 QQ 群:https://jq.qq.com/?_wv=1027&k=Pgl9ScGw + +中文 TG 群:https://t.me/MCSManager_dev + +爱发电赞助:https://afdian.net/a/mcsmanager + +
+ +## 这是什么? + + +MCSManager 面板(简称:MCSM 面板)是一款开源,分布式,轻量级,快速部署,支持大部分游戏服务端和控制台程序的管理面板 + +
+ +## 软件特性 + +软件在 Minecraft 和其他游戏社区内中已有一定的流行程度,它可以帮助你集中管理多个物理服务器,动态在任何主机上创建游戏服务端,并且提供安全可靠的多用户权限系统,可以很轻松的帮助你管理多个服务器,一直在为 Minecraft,Terraria,Steam 游戏服务器管理员,运维人员和个人开发者提供健康的软件支持。 + + +![截图.png](https://public-link.oss-cn-shenzhen.aliyuncs.com/mcsm_picture/MCSM9.png) + +![Screenshot.png](https://mcsmanager.com/main2.png) + +QQ20221207-174328@2x + + +
+ +## 运行环境 + +控制面板可运行在 Windows 与 Linux 平台,无需数据库与任何系统配置,只需安装 node 环境即可快速运行,属于轻量级的 Minecraft 服务端控制面板。 + +必须 `Node 14.17.0` 以上,无需数据库和更改任何系统配置,开箱即可运行。 + +
+ +## 配置/数据文件 + +配置文件: `data/SystemConfig/config.json` + +用户数据文件:`data/User/*.json` + +远程守护进程配置:`data/RemoteServiceConfig/*.json` + +
+ +## 软件文档 + +地址:[https://docs.mcsmanager.com/](https://docs.mcsmanager.com/) + +
+ +## 安装 + +### Windows + +对于 Windows 系统,**已整合成直接运行版本,下载即可运行**(使用管理员权限运行): + +前往:[https://mcsmanager.com/](https://mcsmanager.com/) + +
+ + +### Linux + +**一行命令快速安装** + +```bash +// 国内用户专用 gitee 加速源 +wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash + +// 或原始源(科学上网) +wget -qO- https://raw.githubusercontent.com/mcsmanager/Script/master/setup.sh | bash +``` + +- 脚本仅适用于 AMD64 架构 Ubuntu/Centos/Debian/Archlinux。 +- 执行完成后,使用 `systemctl start mcsm-{web,daemon}` 即可启动面板服务。 +- 面板代码与运行环境自动安装在 `/opt/mcsmanager/` 目录下。 + +
+ +**Linux 手动安装** + +- 若一键安装不起作用,则可以尝试此步骤手动安装。 + +```bash +# 切换到安装目录。如果不存在,请提前用'mkdir /opt/'创建它。 +cd /opt/ +# 下载运行时环境(Node.js)。如果你已经安装了Node.js 14+,请忽略此步骤。 +wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.gz +# 解压档案 +tar -zxvf node-v14.17.6-linux-x64.tar.gz +# 添加程序到系统环境变量 +ln -s /opt/node-v14.17.6-linux-x64/bin/node /usr/bin/node +ln -s /opt/node-v14.17.6-linux-x64/bin/npm /usr/bin/npm + +# 准备好安装目录 +mkdir /opt/mcsmanager/ +cd /opt/mcsmanager/ + +# 下载MCSManager +wget https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz +tar -zxf mcsmanager_linux_release.tar.gz + +# 安装依赖库 +./install-dependency.sh + +# 请打开两个终端或屏幕 + +# 先启动守护程序 +./start-daemon.sh + +# 启动网络服务(在第二个终端) +./start-web.sh + +# 为网络界面访问http://localhost:23333/ +# 一般来说,网络应用会自动扫描并连接到本地守护进程。 +``` + +- 注意,这种安装方式不会自动注册面板到系统服务(Service),所以必须使用 `screen` 软件来管理。 + +
+ +## 更新版本 + +参考: https://github.com/MCSManager/MCSManager/wiki/Update-MCSManager + +> 如果你不是特别需要新版本的功能,或者不是为了修复安全隐患,那就不建议更新。 + +
+ +## 项目体系 + +整个软件运行需要三个项目的互相配合才可运行,您普通安装的代码是编译再整合后的产物。 + +[**控制面板端**](https://github.com/MCSManager/MCSManager) + +- 角色:控制中心 +- 责任:负责提供网页前端的后端接口,提供 API 接口,用户数据管理和对守护进程进行通信和授权。 + +[**网页前端**](https://github.com/MCSManager/UI) + +- 角色:控制中心的用户交互界面 +- 责任:以网页形式展示数据,发送请求,并且拥有与守护进程通信的能力,此项目最终产物是纯静态文件。 + +[**守护进程**](https://github.com/MCSManager/Daemon) + +- 角色:被控端 +- 责任:控制本地主机的所有实例,真实进程的实际管理者,拥有与任何对象的通信能力。 + +
+ +## 搭建开发环境 + +此段落面向开发人员,普通用户无需关注也无需执行。 + +所有项目全部以开发环境运行后,便可以进行开发与预览,请务必遵循开源协议。 + +**控制面板端(MCSManager)** + +```bash +git clone https://github.com/MCSManager/MCSManager.git +cd MCSManager +npm install +npm run start +# 默认将采用 ts-node 直接执行 Typescript 代码 +# 默认运行在 23333 端口 +``` + +**网页前端(UI)** + +```bash +git clone https://github.com/MCSManager/UI.git +cd UI +npm install +npm run serve +# 访问 http://localhost:8080/ 即可预览界面 +# 所有 API 请求将自动转发到 23333 端口 +``` + +**守护进程(Daemon)** + +```bash +git clone https://github.com/MCSManager/Daemon.git +cd Daemon +npm install +npm run start +# 运行后请在控制面板端连接本守护进程 +# 默认运行在 24444 端口 +``` + +
+ +## 浏览器兼容性 + +- 支持 `Chrome` `Firefox` `Safari` `Opera` 等现代主流浏览器。 +- 已放弃支持 `IE` 浏览器。 + +
+ +## 国际化 + +MCSManager 已支持中文,英文两种语言,已经实现国际化全面覆盖。 + +软件国际化由 [Lazy](https://github.com/LazyCreeper),[KevinLu2000](https://github.com/KevinLu2000),[zijiren233](https://github.com/zijiren233) 和 [Unitwk](https://github.com/unitwk) 共同完成 + +
+ +## 贡献 + +如果你在使用过程中发现任何问题,可以 [提交 Issue](https://github.com/MCSManager/MCSManager/issues/new/choose) 或自行 Fork 修改后提交 Pull Request。 + +代码需要保持现有格式,不得格式化多余代码,具体可[参考这里](https://github.com/MCSManager/MCSManager/issues/544)。 + +
+ +## 问题报告 + +欢迎发现的任何问题进行反馈,必当及时修复。 + +若发现严重安全漏洞又不便公开发布,请发送邮件至: mcsmanager-dev@outlook.com。 + +安全问题修复后将在代码中附加漏洞发现者姓名。 + +
+ + +## 源代码协议 + +源代码遵循 Apache-2.0 协议。 + +版权所有 2022 MCSManager 开发团队。 diff --git a/mcsmanager-web/data.yml b/mcsmanager-web/data.yml new file mode 100644 index 000000000..ace333f6f --- /dev/null +++ b/mcsmanager-web/data.yml @@ -0,0 +1,20 @@ +name: MCSManager Web +tags: + - 休闲游戏 +title: 支持大部分游戏服务端和控制台程序的管理面板(前端) +type: 休闲游戏 +description: 支持大部分游戏服务端和控制台程序的管理面板(前端) +additionalProperties: + key: mcsmanager-web + name: MCSManager Web + tags: + - Game + shortDescZh: 支持大部分游戏服务端和控制台程序的管理面板(前端) + shortDescEn: Distributed, Docker-supported, Multilingual, and Lightweight control panel for Minecraft server and more (webui) + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://hub.docker.com/r/alisaqaq/mcsmanager-web + github: https://github.com/MCSManager/MCSManager + document: https://docs.mcsmanager.com/ diff --git a/mcsmanager-web/logo.png b/mcsmanager-web/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..948029be6c1366cf3c997ceda7cfa6e1f1d274b9 GIT binary patch literal 2198 zcma)-`#%#77snUVW@c&DEVoEW?t9!fLs%$xr9#L;vlQQrJZ41hge7u|WTd_>p(MA+ zY@}Rs$z_DFrx2T5DgLQRvDvD|ooC#NFx2mctlCS>)cL8`n=p6oh zc4l@-@w1UeV9Wk|6vffj2_SE|l)me|_G0&cYyQt&g|gqX004+-Wq#&D$mrtbvEUgc zvApZ$O4BI-dFI~Uyt8~~0xj5m{W;0j>#fiP-lKD8Q$Y+26o@pD`=>Uw*Up}yPVt6$ z!^7(;vddA__8Gx3qh);R8~mI4cNH69IgO&UT|B!7w))CO6p{6=Al0nND_nvf9$pLR z9ww`gb>-B$P0oi_E{x^oR4)IjXKPeWrf&L!u0(v=uKm`y_%@uTftBUe`ZYPmvsXx@ zP!D#lYw2)Cl-ly|6`j+#{IwVCSd!DwHfO_>`8qIZAvQ*ALZBU-4N!&hge72#9|0|!ys6(6G?(7k#s0Y zGETW~tapk9DMa^$E+-q9V5USaNlMvtfM4^5SY=|s*FdSqAZ}a8cLit9Vj-?SM5qEj@(^8$?F@n^dlab+v*(_t*cBjU@DODR|80W><}Dj!!;D9d)C zRzGw9Pqpd`K>_Jr3|P?0^<@h+uX>#EXb|KYCft=@rOdivf*~A=mK&u)L2gIFezd<= zOQZ8+i}?;iO-M{h%fR98RSS1Ww%!IBakF46rH(l=d=R3^;aTS%WJugD1)nSA7zo+5 z6;0eVV89sXF$oWEncC|S=cj0JO{9EFRkm#B^j%G=KvZCGI|N8^ju+CsCNho0MR}Xl z182J%|C}u&pAgjo-NaLH_!Y z=;Sz=+ZJWsKe!bz?swQBWHgemb`+D{0GXqO%u&vL{M=D3^7D02k(gjUWp4+yaZA*K z*Q#j^@`G|CwT`C~psfK|5r+)GyH8XznI|qfT`=?-%$i;}x9W-sP)*7p;59dzgJ*#$ z!ALJk%H|)GEg)Gd|rj>giIugqg{y*L3yx2%*PlpL4&^fRhoP@i4x&ujeX z`bvM@YP7DJl_>lIJ}ptX6d7$Y+LG=MmH26AeVoCTyC01XGxkAP)le6LILJC=Oi7kW z#Z9e`pF}<+U7Xs|ZDVTmm$sn(aLqia*B0g#`b4s^&yRC(t9BBgaiVu&U_n;&gG5Gp zLaY0P!WP7iYOLsmZ`>L>Y63OZ2aWoVj1YdYzThl}N6IG=*puPhi{FO+718k_8J*IH8XVERr%iT|dHEgoS{}4* za5&J^t!=9D@)A0Q6gdi6^-HU$ZGbiXG}ULQS5!gCZsnt`rr@Gj8ueeM+I6O!*~d#@(UY z(0`{1`tXUAt8QM(V>@7@rChltUw(X`4nC7Qj@Q=`RQfu-r0J{w16JTaRXW zZlm3%%DrRC12+vDECNB|V3jdU and +| Variable | Describe | Default Values | Allowed Values | +|--------------------|-------------------------------------------------------------|----------------|----------------------| +| MAX_PLAYERS | Change the maximum number of participants on the server. | 32 | 1-32 | +| GAME_PORT | Change the port number used to listen to the server. | 8211 | 1024-65535 | +| ENABLE_MULTITHREAD | Improves performance in multi-threaded CPU environments. | true | true/false | +| IS_PUBLIC | Setup server as a community server. | false | true/false | +| PUBLIC_IP | If not specified, it will be detected automatically. | | all vaild ip address | +| PUBLIC_PORT | If not specified, it will be detected automatically. | | 1024-65535 | +| FORCE_UPDATE | Whether the server should be update each time start. | false | true/false | + +The variables in the table below only valid during initialization, if you need to make it valid, please delete `/opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini` and restart the container. +| Variable | Describe | Default Values | Allowed Values | +|--------------------|--------------------------|-------------------------|----------------| +| SERVER_NAME | Server name | Default Palworld Server | string | +| SERVER_DESC | Server description | Default Palworld Server | string | +| ADMIN_PASSWORD | AdminPassword | | string | +| SERVER_PASSWORD | Set the server password. | | string | +| RCON_ENABLED | Enable RCON | false | true/false | +| RCON_PORT | Port number for RCON | 25575 | 1024-65535 | + +For balance changes, please directly modify `/opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini`, please refer to + +## Volumes + +|Path |Describe | +|--------------------------|----------------------| +|`/opt/palworld/Pal/Saved` |Game config and saves.| + +NOTE: If you use bind instead of volume to mount, you need to manually change the volume owner to uid=1000. +In the case of the docker-compose.yml of the example, you need to execute `chown -R 1000:1000 ./data` \ No newline at end of file diff --git a/palworld-server/data.yml b/palworld-server/data.yml new file mode 100644 index 000000000..36fcff2f5 --- /dev/null +++ b/palworld-server/data.yml @@ -0,0 +1,20 @@ +name: Palworld Dedicated Server (幻兽帕鲁) +tags: + - 休闲游戏 +title: 幻兽帕鲁服务端 +type: 休闲游戏 +description: 幻兽帕鲁服务端 +additionalProperties: + key: palworld-server + name: Palworld Dedicated Server (幻兽帕鲁) + tags: + - Game + shortDescZh: 幻兽帕鲁服务端 + shortDescEn: Palworld Dedicated Server (幻兽帕鲁) + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://hub.docker.com/r/kagurazakanyaa/palworld + github: https://github.com/KagurazakaNyaa/palworld-docker + document: https://github.com/KagurazakaNyaa/palworld-docker diff --git a/palworld-server/latest/data.yml b/palworld-server/latest/data.yml new file mode 100644 index 000000000..107efc158 --- /dev/null +++ b/palworld-server/latest/data.yml @@ -0,0 +1,100 @@ +additionalProperties: + formFields: + - default: 8211 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: 25575 + edit: true + envKey: PANEL_APP_PORT_RCON + labelEn: RCON Port + labelZh: RCON 端口 + required: true + rule: paramPort + type: number + - default: 32 + edit: true + envKey: MAX_PLAYERS + labelEn: Maximum number of participants on the server + labelZh: 玩家数量限制 + required: true + rule: paramPort + type: number + - default: 'true' + edit: true + envKey: MULTITHREAD_SWITCH + labelEn: Improves performance in multi-threaded CPU environments (true / false) + labelZh: 是否启用 CPU 多线程优化 (true / false) + required: true + type: text + - default: 'false' + edit: true + envKey: PUBLIC_SWITCH + labelEn: Setup server as a community server (true / false) + labelZh: 是否启将服务器设置为社区服务器 (true / false) + required: true + type: text + - default: '' + edit: true + envKey: PUBLIC_IP + labelEn: PUBLIC IP (If not specified, it will be detected automatically) + labelZh: 服务器 IP (留空自动检测) + required: false + type: text + - default: '' + edit: true + envKey: PUBLIC_PORT + labelEn: PUBLIC PORT (If not specified, it will be detected automatically) + labelZh: 服务器端口 (留空自动检测) + required: false + rule: paramPort + type: text + - default: 'false' + edit: true + envKey: UPDATE_SWITCH + labelEn: Whether the server should be update each time start (true / false) + labelZh: 是否每次启动都更新服务器 (true / false) + required: true + type: text + - default: 'Default Palworld Server' + edit: true + envKey: SERVER_NAME + labelEn: Server name + labelZh: 服务器名 + required: true + type: text + - default: 'Default Palworld Server' + edit: true + envKey: SERVER_DESC + labelEn: Server description + labelZh: 服务器说明 + required: true + type: text + - default: palworld + edit: true + envKey: ADMIN_PASSWORD + labelEn: Admin password + labelZh: 管理员密码 + random: true + required: false + rule: paramComplexity + type: password + - default: '' + edit: true + envKey: SERVER_PASSWORD + labelEn: Server password + labelZh: 服务器密码 + required: false + rule: paramComplexity + type: password + - default: 'false' + edit: true + envKey: RCON_SWITCH + labelEn: Enable RCON (true / false) + labelZh: 是否启用 RCON (true / false) + required: true + type: text diff --git a/palworld-server/latest/docker-compose.yml b/palworld-server/latest/docker-compose.yml new file mode 100644 index 000000000..c7e981dc9 --- /dev/null +++ b/palworld-server/latest/docker-compose.yml @@ -0,0 +1,34 @@ +version: '3.9' +services: + palworld-server: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}/udp + - ${PANEL_APP_PORT_RCON}:${PANEL_APP_PORT_RCON}/tcp + volumes: + - /etc/localtime:/etc/localtime:ro + - ./data:/opt/palworld/Pal/Saved + environment: + - GAME_PORT=${PANEL_APP_PORT_HTTP} + - MAX_PLAYERS=${MAX_PLAYERS} + - ENABLE_MULTITHREAD=${MULTITHREAD_SWITCH} + - IS_PUBLIC=${PUBLIC_SWITCH} + - PUBLIC_IP=${PUBLIC_IP} + - PUBLIC_PORT=${PUBLIC_PORT} + - FORCE_UPDATE=${UPDATE_SWITCH} + - SERVER_NAME=${SERVER_NAME} + - SERVER_DESC=${SERVER_DESC} + - ADMIN_PASSWORD=${ADMIN_PASSWORD} + - SERVER_PASSWORD=${SERVER_PASSWORD} + - RCON_ENABLED=${RCON_SWITCH} + - RCON_PORT=${PANEL_APP_PORT_RCON} + image: kagurazakanyaa/palworld:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/palworld-server/logo.png b/palworld-server/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..966c228fde494c0691ea3e344b183c9f9043aeb6 GIT binary patch literal 10797 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 literal 0 HcmV?d00001