fix: support panel bootstrap without github api

This commit is contained in:
2026-03-28 13:02:10 +08:00
parent 907da2cb0d
commit 2861453c78
3 changed files with 25 additions and 2 deletions

View File

@ -117,11 +117,14 @@ PT_SERVER="server-01-random-block"
PT_JAVA_ARGS="-Xms1G -Xmx1G"
```
`panel-start.sh` 默认会额外下载 `packwiz-installer.jar`,并通过本地文件方式交给 bootstrap 使用,适合 GitHub API 受限(例如 403的面板环境。
这个脚本会:
1. 从 Gitea 下载整个仓库归档
2. 解压到当前目录下的 `pt-minecraft-modpack/`
3. 自动调用仓库里的 `start.sh`
3. 额外下载 `packwiz-installer.jar`
4. 自动调用仓库里的 `start.sh`
### 直接下载链接
@ -215,6 +218,7 @@ bash ./start.sh
- `PT_SERVER_JAR`:手动指定启动的服务端 jar 路径
- `PT_RUNTIME_DIR`:缓存下载内容与状态文件的目录,默认 `.pt-panel-runtime/`
- `PT_PACKWIZ_BOOTSTRAP_NO_UPDATE=1`:禁用 bootstrap 自更新
- `PT_PACKWIZ_BOOTSTRAP_MAIN_JAR`:手动指定本地 `packwiz-installer.jar` 路径(适合 GitHub API 受限环境)
- `PT_FABRIC_INSTALLER_VERSION`:手动指定 Fabric installer 版本
- `PT_PACKWIZ_BOOTSTRAP_URL`:手动指定 bootstrap 下载地址

View File

@ -15,6 +15,7 @@ INSTALL_DIR="${INSTALL_DIR:-$(pwd)/pt-minecraft-modpack}"
ARCHIVE_PATH="${ARCHIVE_PATH:-$(pwd)/pt-minecraft-modpack.tar.gz}"
TMP_DIR="${TMP_DIR:-$(pwd)/pt-minecraft-modpack.__tmp}"
PT_JAVA_ARGS="${PT_JAVA_ARGS:--Xms1G -Xmx1G}"
PACKWIZ_INSTALLER_URL="${PACKWIZ_INSTALLER_URL:-https://github.com/packwiz/packwiz-installer/releases/latest/download/packwiz-installer.jar}"
log() {
printf '[panel-entry] %s\n' "$*"
@ -56,9 +57,22 @@ mv "$EXTRACTED_DIR" "$INSTALL_DIR"
rm -rf "$TMP_DIR" "$ARCHIVE_PATH"
cd "$INSTALL_DIR"
mkdir -p .pt-panel-runtime/downloads
log "下载 packwiz-installer"
if command -v curl >/dev/null 2>&1; then
curl -fL --retry 3 --retry-delay 2 -o .pt-panel-runtime/downloads/packwiz-installer.jar "$PACKWIZ_INSTALLER_URL"
elif command -v wget >/dev/null 2>&1; then
wget -O .pt-panel-runtime/downloads/packwiz-installer.jar "$PACKWIZ_INSTALLER_URL"
else
fail "缺少 curl 或 wget"
fi
log "调用仓库内 start.sh"
PT_REPO_URL="$REPO_URL" \
PT_REPO_REF="$REPO_REF" \
PT_SERVER="$PT_SERVER" \
PT_JAVA_ARGS="$PT_JAVA_ARGS" \
PT_PACKWIZ_BOOTSTRAP_NO_UPDATE="${PT_PACKWIZ_BOOTSTRAP_NO_UPDATE:-1}" \
PT_PACKWIZ_BOOTSTRAP_MAIN_JAR="$(pwd)/.pt-panel-runtime/downloads/packwiz-installer.jar" \
bash ./start.sh

View File

@ -18,6 +18,7 @@ AUTO_EULA="${PT_AUTO_EULA:-TRUE}"
PACKWIZ_BOOTSTRAP_NO_UPDATE="${PT_PACKWIZ_BOOTSTRAP_NO_UPDATE:-0}"
FABRIC_INSTALLER_VERSION="${PT_FABRIC_INSTALLER_VERSION:-}"
PACKWIZ_BOOTSTRAP_URL="${PT_PACKWIZ_BOOTSTRAP_URL:-https://github.com/packwiz/packwiz-installer-bootstrap/releases/latest/download/packwiz-installer-bootstrap.jar}"
PACKWIZ_BOOTSTRAP_MAIN_JAR="${PT_PACKWIZ_BOOTSTRAP_MAIN_JAR:-}"
PACK_DIR=""
PACK_URL=""
@ -198,7 +199,11 @@ install_fabric_server() {
run_packwiz_installer() {
local args=( -jar "$BOOTSTRAP_JAR" -g --side server --pack-folder "$INSTALL_ROOT" --meta-file "$PACKWIZ_META_FILE" "$PACK_URL" )
if [ "$PACKWIZ_BOOTSTRAP_NO_UPDATE" = "1" ]; then
if [ -n "$PACKWIZ_BOOTSTRAP_MAIN_JAR" ] && [ "$PACKWIZ_BOOTSTRAP_NO_UPDATE" = "1" ]; then
args=( -jar "$BOOTSTRAP_JAR" --bootstrap-no-update --bootstrap-main-jar "$PACKWIZ_BOOTSTRAP_MAIN_JAR" -g --side server --pack-folder "$INSTALL_ROOT" --meta-file "$PACKWIZ_META_FILE" "$PACK_URL" )
elif [ -n "$PACKWIZ_BOOTSTRAP_MAIN_JAR" ]; then
args=( -jar "$BOOTSTRAP_JAR" --bootstrap-main-jar "$PACKWIZ_BOOTSTRAP_MAIN_JAR" -g --side server --pack-folder "$INSTALL_ROOT" --meta-file "$PACKWIZ_META_FILE" "$PACK_URL" )
elif [ "$PACKWIZ_BOOTSTRAP_NO_UPDATE" = "1" ]; then
args=( -jar "$BOOTSTRAP_JAR" --bootstrap-no-update -g --side server --pack-folder "$INSTALL_ROOT" --meta-file "$PACKWIZ_META_FILE" "$PACK_URL" )
fi