From 2861453c78cce2c792725721c7947014cd6f1529 Mon Sep 17 00:00:00 2001 From: pi-agent Date: Sat, 28 Mar 2026 13:02:10 +0800 Subject: [PATCH] fix: support panel bootstrap without github api --- README.md | 6 +++++- panel-start.sh | 14 ++++++++++++++ start.sh | 7 ++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d466f92..df19dda 100644 --- a/README.md +++ b/README.md @@ -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 下载地址 diff --git a/panel-start.sh b/panel-start.sh index d8294ec..fed2bd4 100755 --- a/panel-start.sh +++ b/panel-start.sh @@ -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 diff --git a/start.sh b/start.sh index 9c0d29d..033cd4b 100755 --- a/start.sh +++ b/start.sh @@ -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