1. 项目概述:一个为游戏服务器管理而生的现代控制面板
如果你运营过游戏服务器,无论是《我的世界》、Valheim还是其他基于SteamCMD的游戏,你大概率经历过这样的痛苦:在Linux命令行里敲打各种晦涩的命令,手动管理服务端文件,处理端口转发,监控资源占用,还要为每个玩家手动分配权限。整个过程繁琐、易错,且对新手极不友好。Jexactyl,正是为了解决这些痛点而生的一个开源、现代化的游戏服务器控制面板。
简单来说,Jexactyl是一个基于Web的图形化管理界面,它允许你通过浏览器,像管理虚拟主机一样轻松地管理你的游戏服务器。你不再需要记忆复杂的命令,只需点点鼠标,就能完成服务器的创建、启动、停止、文件管理、玩家权限设置、资源监控等一系列操作。它的核心价值在于,将原本需要专业运维知识的服务器管理工作,变得平民化和自动化,极大地降低了个人或小型社区运营游戏服务器的门槛。
这个项目脱胎于另一个知名的开源面板Pterodactyl,你可以把它看作是Pterodactyl的一个高度定制化和增强的分支。Jexactyl在继承了Pterodactyl所有核心功能(如Docker容器化部署、资源限制、多用户管理等)的基础上,进行了大量的界面优化、功能新增和体验改进。它拥有更现代、更直观的用户界面(UI),集成了更多实用的功能模块,并且针对游戏服务器的常见需求做了深度适配。无论是个人想和朋友联机开个私服,还是小型游戏社区需要一套稳定的托管平台,Jexactyl都是一个非常值得考虑的解决方案。
2. 核心架构与设计思路拆解
2.1 为什么选择容器化?Docker的核心优势
Jexactyl的底层基石是Docker容器技术。理解这一点,是理解其设计哲学和强大功能的关键。在传统模式下,每个游戏服务器进程直接运行在宿主机的操作系统上。这会导致几个严重问题:环境依赖冲突(不同游戏服务端可能需要不同版本的系统库)、资源隔离困难(一个服务器崩溃可能影响宿主机或其他服务器)、部署复杂(需要为每个游戏手动配置系统环境)。
Docker容器技术完美地解决了这些问题。Jexactyl为每一个游戏服务器实例创建一个独立的Docker容器。你可以把这个容器想象成一个轻量级的、封装好的“软件集装箱”。这个集装箱里包含了运行特定游戏服务端所需的所有东西:操作系统基础文件、运行时库、配置文件,以及游戏服务端程序本身。
这样做带来了几个决定性优势:
- 极致的环境隔离:每个游戏服务器都在自己的“沙箱”里运行,互不干扰。A服务器的Java版本是17,B服务器需要Java 8,它们可以毫无冲突地并存于同一台宿主机上。
- 资源限制与配额:Jexactyl可以精确地为每个容器分配CPU核心、内存大小、磁盘空间和网络带宽。这意味着你可以明确地告诉一个《我的世界》服务器:“你最多只能用4GB内存和50%的一个CPU核心”,从而防止某个服务器过度消耗资源导致整个主机崩溃。
- 秒级部署与一致性:所有服务器的运行环境都通过“Docker镜像”来定义。部署一个新服务器,本质上就是根据预设的镜像启动一个新容器。这个过程是秒级的,并且保证每次创建的环境都完全一致,彻底消除了“在我机器上能跑”的玄学问题。
- 安全性提升:容器提供了额外的安全隔离层。即使游戏服务端软件存在漏洞被攻击者利用,其影响通常也会被限制在容器内部,难以危及宿主机的安全。
注意:虽然Docker提供了隔离,但它并非虚拟化。所有容器共享宿主机的内核。因此,在Linux宿主机上无法运行需要Windows内核的游戏服务端(如部分基于.NET Framework的旧游戏)。Jexactyl主要服务于Linux生态下的游戏服务器。
2.2 控制面板的双重角色:管理员与用户视角
Jexactyl的设计清晰地划分了两个核心角色:面板管理员(Admin)和终端用户(User)。这种设计使得它既能作为个人管理多个服务器的工具,也能作为商业游戏托管平台的基础软件。
从面板管理员的视角来看,Jexactyl是一个强大的运维中控台。管理员通过一个专门的“Admin”界面,可以:
- 管理节点(Nodes):节点就是实际运行Docker容器的物理或虚拟服务器。管理员可以添加多个节点,并将服务器实例分配到不同节点上,实现负载均衡。
- 管理服务器模板(Nests & Eggs):这是Jexactyl/ Pterodactyl体系里非常精妙的设计。“Nest”可以理解为一个游戏大类,比如“Minecraft”。“Egg”则是这个大类下具体的服务端变种或版本,比如“PaperMC 1.20.4”、“Forge 1.19.2”。Egg里定义了使用哪个Docker镜像、默认的启动命令、配置文件结构、安装脚本等。社区维护了大量的Egg,几乎覆盖了所有主流游戏。
- 管理用户与权限:可以创建用户,并为他们分配服务器资源额度(如最多能创建几个服务器,总计能用多少内存和磁盘)。
- 全局配置:设置邮件服务器(用于发送注册、重置密码等邮件)、数据库、备份策略等。
从终端用户的视角来看,他们接触到的界面简洁而功能集中。用户登录后,可以看到自己拥有的游戏服务器列表。点击进入一个服务器,就能看到一个功能丰富的控制台:
- 控制台(Console):实时查看服务器的日志输出,并可以直接输入命令(如游戏的
op命令、say命令)。 - 文件管理器(File Manager):以图形化方式浏览、上传、下载、编辑服务器文件。这是替代FTP和SFTP的绝佳工具,特别是可以直接在线编辑
server.properties、bukkit.yml等配置文件。 - 资源监控(Resource Metrics):实时图表显示服务器的CPU、内存、磁盘IO和网络流量使用情况。
- 日程任务(Schedules):可以设置定时任务,例如每天凌晨4点自动重启服务器,或每周一自动执行一次地图备份。
- 数据库:对于支持的游戏(如部分Minecraft插件),可以直接创建和管理MySQL数据库,无需额外安装phpMyAdmin。
- 备份:手动或自动创建服务器文件的完整备份,并可以一键恢复。
这种双重角色的设计,使得Jexactyl既适合技术爱好者管理自己的游戏集合,也具备了支撑多租户商业运营的潜力。
3. 部署实战:从零搭建你的Jexactyl控制面板
3.1 硬件与系统环境准备
在开始安装之前,你需要准备一台运行Linux的服务器。对于个人或小规模使用,一台拥有1核CPU、2GB内存、20GB SSD的VPS(虚拟专用服务器)就足以运行面板本身和1-2个小型游戏服务器。如果你计划托管更多或更大型的服务器(如模组众多的《我的世界》),则需要更强的配置。
操作系统:官方推荐使用Ubuntu 22.04 LTS或Debian 11/12。这些系统有良好的长期支持,并且社区资源丰富。这里我们以Ubuntu 22.04为例。
首先,通过SSH连接到你的服务器。第一件事是更新系统并安装一些基础工具:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget git nano htop接下来,安装Docker和Docker Compose。这是Jexactyl运行的基础依赖。
# 安装Docker官方GPG密钥和仓库 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 将当前用户加入docker组,避免每次都要用sudo sudo usermod -aG docker $USER # 注意:执行此命令后,你需要退出当前SSH会话并重新登录,用户组更改才会生效。 # 安装Docker Compose插件(新方法,Docker Compose已集成为Docker的一个插件) sudo apt install -y docker-compose-plugin # 验证安装 docker --version docker compose version实操心得:很多新手会忘记执行
usermod命令后重新登录SSH,导致后续的docker命令仍然报权限错误。如果你遇到“Permission denied”错误,第一个要检查的就是这里。直接输入newgrp docker命令有时可以临时生效,但最稳妥的方式还是断开SSH重连。
3.2 核心组件安装与配置:数据库、Redis与面板
Jexactyl依赖几个外部服务:MySQL/MariaDB数据库用于存储所有数据,Redis用于缓存和会话管理以提高性能。我们将使用Docker Compose来一键部署所有这些组件,这是最清晰、最易于管理的方式。
首先,创建一个项目目录并进入:
mkdir -p /opt/jexactyl && cd /opt/jexactyl然后,创建Docker Compose配置文件docker-compose.yml。这个文件定义了面板、数据库、Redis三个服务。
version: '3.8' services: # MySQL数据库 db: image: mariadb:10.11 container_name: jexactyl_db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: your_strong_root_password_here # 务必修改! MYSQL_DATABASE: panel MYSQL_USER: jexactyl MYSQL_PASSWORD: your_strong_db_password_here # 务必修改! volumes: - ./data/mysql:/var/lib/mysql networks: - jexactyl_network # Redis缓存 redis: image: redis:7-alpine container_name: jexactyl_redis restart: unless-stopped command: redis-server --save 60 1 --loglevel warning volumes: - ./data/redis:/data networks: - jexactyl_network # Jexactyl面板核心 panel: image: ghcr.io/jexactyl/panel:latest container_name: jexactyl_panel restart: unless-stopped ports: - "80:80" # HTTP端口,后续配置SSL后可改为 "80:80" 仅用于重定向 - "443:443" # HTTPS端口 environment: APP_URL: https://your-domain.com # 你的域名,务必修改! DB_HOST: db DB_PORT: 3306 DB_DATABASE: panel DB_USERNAME: jexactyl DB_PASSWORD: your_strong_db_password_here # 与上面一致 REDIS_HOST: redis REDIS_PORT: 6379 APP_SERVICE_AUTHOR: jexactyl@example.com # 可选,面板作者信息 volumes: - ./data/panel:/var/www/html/storage # 持久化存储面板数据 depends_on: - db - redis networks: - jexactyl_network networks: jexactyl_network: driver: bridge关键配置解释与修改点:
- 密码:将文件中的
your_strong_root_password_here和your_strong_db_password_here替换为你自己生成的强密码。可以使用openssl rand -base64 24命令快速生成。 - 域名:将
APP_URL中的https://your-domain.com替换为你实际指向此服务器的域名。如果你暂时没有域名,在测试阶段可以先用服务器的公网IP,但某些功能(如邮件发送中的链接)可能不正常。 - 数据持久化:
volumes配置将容器内的数据(数据库文件、Redis数据、面板上传的文件)映射到宿主机的./data目录下。这样即使容器被删除,你的数据也不会丢失。 - 端口:我们暂时将HTTP(80)和HTTPS(443)端口都映射出来。在生产环境,强烈建议配置SSL证书后,将80端口仅用于重定向到443。
保存文件后,启动所有服务:
docker compose up -d-d参数表示在后台运行。使用docker compose logs -f panel可以实时查看面板容器的启动日志,确保没有报错。
3.3 面板初始化与管理员账户创建
当容器启动完成后,打开浏览器,访问你的服务器IP或域名(如http://your-server-ip)。你应该会看到Jexactyl的安装引导页面。
安装过程主要分为几步:
- 环境检查:页面会自动检查PHP扩展、目录权限等是否满足要求。由于我们使用Docker,这些环境通常都已正确配置,应该全部通过。
- 数据库配置:这里填写在
docker-compose.yml中定义的信息。
- 数据库驱动:选择MySQL。
- 数据库主机:填写
db(这是Docker Compose中定义的服务名,在内部网络中可通过此名称访问)。 - 数据库端口:
3306。 - 数据库名、用户名、密码:填写你在环境变量中设置的
panel、jexactyl和对应的密码。
- 管理员账户设置:设置第一个管理员用户的邮箱、用户名和密码。这个账户将拥有面板的最高权限。
- 面板设置:设置面板的名称、语言等。
APP_URL应该已自动从环境变量中读取。 - 完成安装:点击安装,系统会自动执行数据库迁移、生成加密密钥等操作。完成后,你就可以使用刚才创建的管理员账户登录了。
登录后,你首先进入的是用户界面。要进入管理员后台,需要点击页面左下角的你的用户名,在下拉菜单中选择“Administration”。
4. 核心功能深度解析与配置实战
4.1 节点(Node)配置:连接计算资源
面板本身只是一个“大脑”,它需要“手脚”来实际运行游戏服务器,这些“手脚”就是节点(Nodes)。节点是安装了“Wings”守护程序的物理或虚拟服务器。Wings是Pterodactyl/Jexactyl生态中的轻量级守护进程,负责接收面板的指令,管理本机上的Docker容器。
在面板服务器上配置第一个节点(本地节点):
通常,我们会把面板和第一个节点部署在同一台服务器上。这样做简单,但生产环境建议将面板和节点分离,以提高安全性和可扩展性。
- 在面板后台生成节点配置:
- 进入Admin后台,导航到Location -> Nodes。
- 点击“Create New”。
- 填写节点信息:
- Name: 给你的节点起个名字,如“Tokyo-Node-1”。
- Description: 可选描述。
- Location: 选择一个地理位置(可以先在“Locations”里创建一个,如“Asia”)。
- FQDN: 填写此节点的公网IP地址或域名。如果面板和节点在同一台机器,这里填写服务器的公网IP。非常重要:Wings将通过这个地址与面板通信。
- Communication Port: 默认
8080。确保服务器的防火墙开放了这个端口(TCP)。 - Memory Overcommit: 内存超售比例,默认0%。不建议修改,除非你非常清楚自己在做什么。
- Disk Overcommit: 磁盘超售比例,同上。
- 在“Configuration”标签页,你会看到自动生成的
config.yml文件内容。复制并保存好这段YAML配置,稍后需要在节点服务器上使用。
- 在节点服务器上安装Wings: 假设你的节点服务器是一台新的Ubuntu 22.04服务器。
# 1. 安装Docker(步骤同3.1,此处省略) # 2. 创建目录并下载Wings sudo mkdir -p /etc/pterodactyl sudo curl -L -o /usr/local/bin/wings https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64 sudo chmod +x /usr/local/bin/wings # 3. 创建配置文件 sudo nano /etc/pterodactyl/config.yml将刚才从面板复制的YAML配置内容,完整粘贴到这个文件中,保存退出。
- 配置并启动Wings服务:
# 创建系统服务文件 sudo nano /etc/systemd/system/wings.service粘贴以下内容:
[Unit] Description=Pterodactyl Wings Daemon After=docker.service Requires=docker.service PartOf=docker.service [Service] User=root WorkingDirectory=/etc/pterodactyl LimitNOFILE=4096 PIDFile=/var/run/wings/daemon.pid ExecStart=/usr/local/bin/wings Restart=on-failure StartLimitInterval=180 StartLimitBurst=30 RestartSec=5 [Install] WantedBy=multi-user.target保存后,启动Wings:
sudo systemctl enable --now wings sudo systemctl status wings # 检查状态,应为active (running)- 在面板中完成节点配对: 回到面板的节点列表,你应该能看到刚才创建的节点状态变为“Healthy”(健康)。这表示面板和Wings守护进程已成功建立安全连接。
注意事项:如果节点状态一直是“Unhealthy”,请按以下步骤排查:
- 检查节点服务器的防火墙,确保
8080端口对面板服务器的IP地址开放。- 在节点服务器上运行
sudo wings --debug,查看详细的连接日志。- 检查面板服务器上的
APP_URL设置是否正确,Wings会尝试连接这个地址。- 确保面板服务器的时间与节点服务器的时间同步(使用
ntp或chrony)。
4.2 服务器模板(Nest & Egg)管理:游戏生态的核心
Nest和Egg是Jexactyl的灵魂,它们定义了“如何安装和运行一个特定游戏的服务端”。面板自带了一些基础的Nest(如Minecraft、Source Engine),但社区贡献了海量的Egg,覆盖了几乎所有你能想到的游戏。
添加一个社区Egg(以Minecraft PaperMC为例):
- 导入Nest:
- 进入Admin后台,导航到Nests。
- 点击右上角“Import Egg”。
- 在“Import From URL”中,粘贴社区Egg仓库的JSON链接。一个著名的Egg仓库是
https://raw.githubusercontent.com/parkervcp/eggs/master/egg.json。这个仓库包含了数十个高质量的游戏Egg。 - 点击“Import”,面板会自动下载并安装该仓库中的所有Egg。
- 部署一个PaperMC服务器:
- 回到用户界面,点击“Create New Server”。
- 服务器详情:设置服务器名称、描述,选择所属用户(管理员可以为自己或其他用户创建)。
- 服务器构建配置:这是核心步骤。
- Nest: 选择“Minecraft”。
- Egg: 选择“PaperMC”。你会看到Egg的描述,说明了它使用的Docker镜像、Java版本等。
- Docker Image: 通常使用Egg默认的镜像即可,如
ghcr.io/parkervcp/yolks:java_17。 - 启动命令、文件、日志:全部保持默认。
- 资源限制:设置该服务器的CPU、内存、磁盘空间限额。例如,一个10人左右的纯净Paper服务器,分配4GB内存和10GB磁盘空间是合理的起点。
- 服务器部署:
- Node: 选择我们刚才配置好的健康节点。
- Default Allocation: 分配一个端口。面板会自动从节点可用的端口中选择一个(如25565,Minecraft默认端口)。确保节点的防火墙开放了这个端口(TCP+UDP)。
- 点击“Create Server”,面板会开始部署流程:在节点上拉取Docker镜像,创建容器,并执行Egg中定义的安装脚本。
- 服务器安装与启动:
- 创建完成后,进入服务器控制台。你会看到安装脚本正在自动运行,下载PaperMC的构建文件。
- 安装完成后,不要立即启动。先进入“文件管理器”,找到
server.properties和eula.txt文件。 - 编辑
eula.txt,将eula=false改为eula=true,表示你同意Mojang的最终用户许可协议。 - 你可以根据需要修改
server.properties(如游戏模式、难度、最大玩家数等)。 - 回到“控制台”页面,点击“Start”按钮。稍等片刻,你就能在控制台看到熟悉的“Done!”字样,表示服务器启动成功。
4.3 高级功能:备份、日程与数据库
自动化备份: 在服务器管理页面,有一个“Backups”标签。你可以在这里手动创建即时备份,也可以设置自动备份计划。备份文件会存储在面板服务器上(我们配置的/opt/jexactyl/data/panel卷中),你可以随时下载到本地。在服务器文件损坏或误操作时,可以一键从备份恢复,这是运维中最让人安心的功能之一。
日程任务(Schedules): 这是实现服务器自动化运维的关键。例如,你可以创建一个日程:
- 任务类型:
Command。 - 执行时间:每天凌晨4点。
- 命令:
say 服务器将在1分钟后重启进行日常维护。 - 再创建另一个任务,在4:01分执行类型为
Power Action的Restart命令。 这样,服务器就能在玩家最少的时间段自动重启,释放内存,保持长期运行的稳定性。你还可以创建定时备份、定时执行清理脚本等任务。
内置数据库: 对于需要数据库的Minecraft插件(如CoreProtect、LuckPerms等),Jexactyl提供了便捷的数据库创建功能。在服务器管理页面的“Databases”标签,点击“Create New Database”,面板会自动在节点上启动一个独立的MySQL容器,并生成随机的数据库名、用户名和密码。你无需任何命令行操作,就能为服务器配好一个专用的数据库,连接信息会直接显示在面板上,供插件配置使用。
5. 运维、安全与故障排查实录
5.1 日常维护与监控要点
运行一个稳定的游戏服务器面板,日常维护不可或缺。
资源监控:
- 面板层面:在Admin后台的“Nodes”页面,可以查看所有节点的整体CPU、内存、磁盘使用率。
- 服务器层面:在每个游戏服务器的“Metrics”页面,有详细的实时图表。重点关注内存使用情况,如果长期接近分配上限,应考虑增加内存配额或优化服务端(如调整Java GC参数、减少视距等)。
- 宿主机层面:使用
htop、df -h、docker stats等命令在节点服务器上直接查看资源情况。
日志管理:
- 面板日志:
docker compose logs -f panel查看面板容器日志。 - Wings日志:在节点服务器上,
sudo journalctl -u wings -f查看Wings守护进程日志。 - 游戏服务器日志:在面板的服务器控制台查看,或通过文件管理器查看
logs/latest.log。 定期清理旧的日志文件可以节省磁盘空间。可以创建一个日程任务,每周执行一次清理脚本。
更新策略:
- 面板更新:Jexactyl更新相对频繁。更新前,务必在Admin后台创建完整的数据库和文件备份。更新步骤通常是:
- 停止面板容器:
docker compose stop panel - 拉取新镜像:
docker compose pull panel - 启动面板:
docker compose up -d panel - 进入面板容器执行更新命令:
docker compose exec panel php artisan p:upgrade
- 停止面板容器:
- Wings更新:在节点服务器上,重新下载Wings二进制文件并重启服务即可。社区通常会在Discord或GitHub发布公告,提示是否需要更新Wings以兼容新面板。
5.2 安全加固最佳实践
将游戏服务器暴露在公网,安全是重中之重。
- 强制使用SSL/HTTPS:绝不要在公网以HTTP方式运行面板。使用Let‘s Encrypt免费证书或购买商业证书。修改
docker-compose.yml中面板服务的端口映射,将80:80改为80:80仅用于重定向,并确保443:443映射正确。在面板的.env文件或环境变量中设置APP_URL为https://开头,并配置好证书路径。很多教程会使用Nginx反向代理,但对于Docker Compose部署,更简单的方式是使用linuxserver/swag或traefik这类容器化方案自动管理SSL。 - 强化数据库安全:在
docker-compose.yml中为MariaDB设置强密码。不要将数据库的3306端口映射到宿主机(我们的配置中就没有映射),仅让面板容器在内部网络访问。 - 面板访问控制:
- 为管理员账户启用双因素认证(2FA)。
- 定期审查用户列表和API密钥。
- 限制注册功能。如果是私人使用,建议关闭公开注册,仅由管理员手动创建用户。
- 节点(Wings)安全:
- Wings的通信端口(默认8080)绝不能对全网开放。在节点服务器的防火墙(如
ufw)中,只允许面板服务器的IP地址访问该端口。 - 定期更新Wings和Docker到安全版本。
- Wings的通信端口(默认8080)绝不能对全网开放。在节点服务器的防火墙(如
- 游戏服务器隔离:
- 充分利用Docker的天然隔离性。确保每个游戏服务器容器都以非root用户运行(Jexactyl的Egg通常已配置好)。
- 在Egg的Docker镜像配置中,避免使用
privileged: true(特权模式),除非绝对必要。
5.3 常见问题与故障排查速查表
以下是我在长期使用中遇到的一些典型问题及解决方法:
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 面板无法访问(502 Bad Gateway) | PHP-FPM进程崩溃,Nginx配置问题。 | 1.docker compose logs -f panel查看错误日志。2. 重启面板服务: docker compose restart panel。3. 检查存储卷权限: sudo chown -R 1000:1000 /opt/jexactyl/data/panel(1000是容器内www-data用户的UID)。 |
| 节点状态显示“Unhealthy” | 网络不通,SSL证书问题,面板URL配置错误,时间不同步。 | 1. 从节点服务器ping面板的FQDN或IP,检查网络连通性。 2. 在节点运行 sudo wings --debug,查看连接详细日志。3. 检查面板 APP_URL是否与节点配置中的FQDN匹配且可访问。4. 使用 date命令对比面板和节点服务器时间,误差应在几秒内。 |
| 游戏服务器创建失败 | 节点磁盘空间不足,Docker镜像拉取失败,Egg脚本错误。 | 1. 在节点运行df -h检查磁盘空间。2. docker compose logs -f panel查看创建过程中的具体报错。3. 尝试手动在节点上拉取Egg指定的Docker镜像: docker pull [镜像名]。4. 检查Egg的安装脚本是否有语法错误或依赖的下载链接失效。 |
| 服务器启动后秒退 | 内存分配不足,启动命令错误,核心文件缺失(如eula.txt)。 | 1. 查看服务器控制台最后的错误信息。 2. 检查服务器分配的内存是否足够(Java服务器通常需要预留至少1GB给系统)。 3. 检查启动命令,特别是Java版本参数(如 -XX:MaxRAMPercentage)是否正确。4. 对于Minecraft,确认 eula.txt已同意。 |
| 文件管理器无法上传/编辑文件 | 容器内文件权限错误,磁盘空间已满。 | 1. 检查节点服务器磁盘空间。 2. 进入服务器容器内部检查权限: docker exec -it [容器ID] sh,然后ls -la查看文件属主。通常应是pterodactyl用户。 |
| 备份创建失败或缓慢 | 存储卷路径权限问题,服务器文件过大,面板服务器磁盘IO瓶颈。 | 1. 检查面板服务器/opt/jexactyl/data/panel目录的权限和剩余空间。2. 对于大型服务器(如超过10GB),备份过程会很长,这是正常的。考虑在玩家最少的时间段进行备份。 3. 可以尝试将备份存储卷挂载到SSD磁盘上以提高IO速度。 |
最后再分享一个小技巧:对于非常复杂的Minecraft模组服,其启动参数和JVM调优是个大学问。Jexactyl允许你完全自定义服务器的启动命令。不要局限于Egg的默认设置。多去模组社区学习JVM参数优化(如Aikar‘s Flags),将这些参数整合到启动命令中,可以显著提升模组服的性能和稳定性。例如,一个经过优化的PaperMC模组服启动命令可能长达十几行,包含了精心调整的垃圾回收器和内存参数,这与原版服务器的简单启动截然不同。花时间研究这些,是让服务器从“能用”到“好用”的关键一步。