
lexfrei/papermc的问题、故障或支持,请参考上述官方PaperMC资源。
本仓库仅提供:
有关Docker镜像或Helm图表(容器构建、部署、图表配置)的问题,请使用本仓库的问题跟踪器。
本服务器兼容:
-XX:MaxRAMPercentage=80%latest - 指向最新的Minecraft版本<version> - 特定的Minecraft版本(例如1.21.5),指向与其对应的构建标签相同的镜像<version>-<build> - 带有PaperMC构建号的特定Minecraft版本(例如1.21.5-20)标签关系示例:
latest → <最新版本> → <最新版本>-<构建号>(均指向相同镜像)<旧版本> → <旧版本>-<构建号>(均指向相同镜像)要查找最新可用标签,请查看Docker Hub。
此镜像每天自动构建当前主要版本内的最新三个次要版本。例如:
仅维护三个最新的次要版本,而非主要版本范围内的所有版本。随着新次要版本的发布,旧版本将从主动维护中移除。
<version>)始终指向其对应的特定构建标签(如<version>-<build>)建议:测试时使用
latest标签,但生产环境中切换到特定的版本-构建标签(如<version>-<build>)以确保稳定性。
提供了适用于Kubernetes部署的Helm图表,支持各种插件、入口和高级网络选项的轻松安装和配置。
bash# 从GitHub Container Registry安装图表 helm install papermc \ oci://ghcr.io/lexfrei/papermc \ --version 0.0.1 # 使用自定义值安装 helm install papermc \ oci://ghcr.io/lexfrei/papermc \ --version 0.0.1 \ --values values.yaml
有关详细的图表文档和配置示例,请参见图表文档。
| 变量 | 描述 | 默认值 |
|---|---|---|
JAVAFLAGS | 用于优化性能的JVM标志 | Aikar's flags |
PAPERMC_FLAGS | 额外的PaperMC服务器标志 | --nojline |
JAVA_MAX_MEM_RATIO | 容器内存的最大堆百分比 | 80(80%) |
注意:内存通过
-XX:MaxRAMPercentage自动管理。JVM默认将使用容器内存的80%。使用Docker的--memory标志或Kubernetes资源限制设置容器内存限制。
默认情况下,JVM使用容器内存的80%。要自定义:
bash# 更改内存百分比(使用75%而非80%) docker run -d \ -e JAVA_MAX_MEM_RATIO=75 \ --memory 4G \ lexfrei/papermc:latest # 禁用自动内存管理并设置显式堆大小 docker run -d \ -e JAVA_MAX_MEM_RATIO=0 \ -e JAVAFLAGS="-Xms2G -Xmx3G" \ --memory 4G \ lexfrei/papermc:latest
设置显式内存(-Xmx)时,为JVM元空间、本地内存和操作系统开销留出约1GB空间。
PaperMC的内存需求因玩家数量、世界大小和已安装插件而异。以下是一些一般建议:
| 玩家数量 | 推荐内存 | 说明 |
|---|---|---|
| 1-5名玩家 | 2GB | 适用于小型、类原版服务器 |
| 5-15名玩家 | 4GB | 适合中等插件使用 |
| 15-30名玩家 | 6-8GB | 推荐用于带有多个插件的大型服务器 |
| 30名以上玩家 | 10GB+ | 用于有许多插件和大型世界的繁忙服务器 |
这些值是起点,应根据特定服务器性能进行调整。
Kubernetes用户:考虑使用垂直Pod自动扩缩器根据实际使用模式自动调整资源限制。这对于负载变化的Minecraft服务器特别有帮助。
bashdocker run -d \ --name minecraft-server \ -p 25565:25565/tcp \ -p 25565:25565/udp \ --memory 4G \ -v /path/to/data:/data \ lexfrei/papermc:latest
注意:对于生产环境,测试后将
latest替换为特定的版本-构建标签。
yamlversion: '3' services: papermc: image: lexfrei/papermc:latest container_name: minecraft-server ports: - "25565:25565/tcp" - "25565:25565/udp" volumes: - ./data:/data deploy: resources: limits: memory: 4G restart: unless-stopped
注意:对于生产部署,使用特定的版本-构建标签而非
latest。
有关Kubernetes部署示例,请参见examples/kubernetes目录。
在Kubernetes中运行时,考虑使用垂直Pod自动扩缩器(VPA)自动调整CPU和内存请求:
yamlapiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: minecraft-vpa spec: targetRef: apiVersion: "apps/v1" kind: Deployment name: minecraft-server updatePolicy: updateMode: "Auto" resourcePolicy: containerPolicies: - containerName: "*" minAllowed: memory: "1Gi" cpu: "500m" maxAllowed: memory: "8Gi" cpu: "2"
VPA将随时间分析资源使用情况并自动调整资源请求,有助于优化资源分配,同时防止高峰期的OOM终止。
使用此容器在同一主机上运行多个Minecraft服务器非常简单。每个容器需要自己的端口和数据卷:
yamlversion: '3' services: survival: image: lexfrei/papermc:latest container_name: mc-survival ports: - "25565:25565/tcp" - "25565:25565/udp" volumes: - ./survival-data:/data deploy: resources: limits: memory: 4G restart: unless-stopped creative: image: lexfrei/papermc:latest container_name: mc-creative ports: - "25566:25565/tcp" # 注意不同的主机端口 - "25566:25565/udp" volumes: - ./creative-data:/data deploy: resources: limits: memory: 4G restart: unless-stopped
此示例在默认端口25565上运行生存服务器,在端口25566上运行创造服务器。
要安装插件,只需将JAR文件放在/data/plugins目录中。PaperMC将自动从该目录加载插件。
为了更好地组织,还可以使用/data/plugins/update作为目录来存储PaperMC将自动更新的插件。
重要:容器以非root用户(UID 9001)运行。挂载卷时,确保
/data目录具有适当的权限。
bashdocker run -d \ --name minecraft-server \ -p 25565:25565/tcp \ -p 25565:25565/udp \ --memory 4G \ -v /path/to/data:/data \ lexfrei/papermc:latest
通过此设置,可以通过将插件放在/path/to/data/plugins中来添加插件。
以下插件已知与此容器兼容良好:
这些仅是建议 - 所有标准Paper插件都应与此容器兼容。
在数据目录中创建server.properties文件来自定义服务器设置。如果不存在该文件,首次运行时将创建默认文件。
示例配置:
propertiesserver-port=25565 motd=My PaperMC Server max-players=20 view-distance=10 spawn-protection=0
如果需要使用RCON进行服务器管理,有两个选项:
要启用RCON,将以下设置添加到server.properties:
propertiesenable-rcon=true rcon.password=your_secure_password rcon.port=25575
运行容器时暴露RCON端口:
bashdocker run -d \ --name minecraft-server \ -p 25565:25565/tcp \ -p 25565:25565/udp \ -p 25575:25575/tcp \ # 暴露RCON端口 --memory 4G \ -v /path/to/data:/data \ lexfrei/papermc:latest
PaperMC服务器日志存储在/data/logs目录中,可以通过挂载此卷访问。您可以使用以下命令查看:
bash# 查看容器日志 docker logs minecraft-server # 从挂载的卷访问详细日志 cat /path/to/data/logs/latest.log
要自定义日志行为,可以在首次服务器运行后修改/data/log4j2.xml。例如,更改保留策略或日志级别。
如果使用DynMap,请确保暴露8123端口:
bashdocker run -d \ --name minecraft-server \ -p 25565:25565/tcp \ -p 25565:25565/udp \ -p 8123:8123/tcp \ # 暴露DynMap Web界面 --memory 4G \ -v /path/to/data:/data \ lexfrei/papermc:latest
Minecraft服务器需要正确的关闭过程来保存所有世界数据并防止损坏。此容器配置为正确处理Docker停止信号。
停止容器时:
bash# 允许30秒进行干净关闭 docker stop --time=30 minecraft-server
这使服务器有时间在终止前正确保存所有区块和玩家数据。
容器在其健康检查中包含合理的启动周期,以适应PaperMC初始化所需的时间。更大的世界和更多的插件将增加启动时间。
建议定期备份服务器数据。最简单的方法是停止容器并复制数据目录:
bashdocker stop minecraft-server cp -r /path/to/data /path/to/backup docker start minecraft-server
对于自动备份,考虑使用专用备份解决方案,如Duplicati或Restic。
此容器使用位于/data的单个卷,其中包含所有持久数据。以下是此卷中存储的内容:
| 路径 | 描述 |
|---|---|
/data/world/ | 主世界数据 |
/data/world_nether/ | 下界维度 |
/data/world_the_end/ | 末地维度 |
/data/plugins/ | 所有已安装插件 |
/data/config/ | 配置文件 |
/data/logs/ | 服务器日志 |
/data/server.properties | 主服务器配置 |
/data/banned-ips.json | IP封禁列表 |
/data/banned-players.json | 玩家封禁列表 |
/data/ops.json | 服务器操作员列表 |
/data/whitelist.json | 白名单玩家列表 |
挂载卷时,始终确保保留整个/data目录以维护所有服务器状态。
如果容器尝试访问挂载的卷时出现权限错误,可能是因为容器






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务