🛜 自托管
自托管通过 CraftEngine 内置 HTTP 服务提供 ZIP 下载,消耗的是服务器的出口带宽。
配置
在 packs 中声明各个包;所有 self 包共用 self-host 中配置的 HTTP 服务。
resource-pack:
packs:
default:
type: self
default: true
storage_path: ./cache/hosted/default/resource_pack.zip
self-host:
ip: auto
port: auto
protocol: http
deny_non_minecraft_request: true
one_time_token: true
strict_validation: false
rate_limiting:
max_bandwidth_per_second: 5_000_000
min_download_speed_per_player: 50_000
qps_per_ip: 5/60
storage_path 直接指定目标 ZIP 文件,相对于 plugins/CraftEngine,也支持绝对路径;省略时使用 ./cache/hosted/<id>/resource_pack.zip。上传后保存到该文件,重启时直接读取。首次使用需要运行包含 upload 步骤的工作流:
resource-pack:
workflows:
upload_default:
steps:
- type: upload
pack: default
path: ./generated/resource_pack.zip
将此工作流加入同一个 resource-pack 配置块。修改托管设置后执行 /ce reload host;只修改工作流时执行 /ce reload。准备好 ZIP 后,再运行 /ce workflow upload_default。
字段参考
下面的服务器参数都填写在 resource-pack.self-host 下。
| 字段 | 默认 | 说明 |
|---|---|---|
| ip | "auto" | 提供给玩家的下载地址中的 IP;"auto" 通过 Cloudflare trace 检测公网 IP。此项不控制监听地址。 |
| port | "auto" | HTTP 服务器监听端口。"auto" 共享 Minecraft 服务器端口(注入其 Netty 管线)。设具体数字(如 8163)使用独立端口。 |
| url | 自动生成 | 设后覆盖自动生成的下载链接,见下方说明。须以 http:// 或 https:// 开头,末尾 / 自动补。 |
| protocol | "http" | 自动生成 URL 的协议。设 url 后忽略。 |
| deny_non_minecraft_request | true | 拒绝 User-Agent 不以 Minecraft Java/ 开头的请求。 |
| one_time_token | true | 为每位玩家生成一次性 ?token=,有效期 1 分钟。 |
| strict_validation | false | 将 token 绑定到玩家 UUID(通过 X-Minecraft-UUID 头验证)。离线模式服务器切勿启用。 |
| rate_limiting.* | — | 基于 IP 的限流。 |
内外地址不一致时
默认情况下,发给玩家的下载链接由 ip、port、protocol 自动拼接:
http://111.222.333.444:8163/download/default
当内部绑定地址与玩家应使用的地址不同时——反向代理、CDN、VPS 内外 IP 端口不一致——设 url 覆盖:
resource-pack:
self-host:
url: "https://对外实际地址/"
生成 https://对外实际地址/download/default(可选附带 ?token=...)。两种常见场景:
反向代理 —— nginx、Caddy、HAProxy 前置处理 TLS,转发到内部 HTTP 服务器。
VPS NAT / 端口映射 —— 云服务器内外 IP 和端口不一致。
resource-pack:
self-host:
ip: auto
port: 8163
url: "https://对外实际地址/"
deny_non_minecraft_request: false
strict_validation: false
警告
内置服务提供 HTTP。使用 HTTPS 下载地址时,需要由反向代理等前置服务提供 TLS 和有效证书。