feat: add panel entry script

This commit is contained in:
2026-03-28 12:48:13 +08:00
parent 472a8deb9c
commit b2ebaf9e06
2 changed files with 133 additions and 48 deletions

64
panel-start.sh Executable file
View File

@ -0,0 +1,64 @@
#!/bin/sh
set -eu
# 面板入口脚本:适合“面板固定执行 start.sh但只能上传文件/编辑文件”的环境。
# 用法:
# 1. 下载本文件
# 2. 上传到面板,并按需要重命名为面板要求的固定入口名(通常就是 start.sh
# 3. 修改下面几个变量
# 4. 点击运行
REPO_URL="${REPO_URL:-https://gitea.service.jazzwhom.top/Passthem/pt-minecraft-modpack}"
REPO_REF="${REPO_REF:-main}"
PT_SERVER="${PT_SERVER:-server-01-random-block}"
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}"
log() {
printf '[panel-entry] %s\n' "$*"
}
fail() {
printf '[panel-entry] ERROR: %s\n' "$*" >&2
exit 1
}
need_cmd() {
command -v "$1" >/dev/null 2>&1 || fail "缺少命令: $1"
}
need_cmd sh
need_cmd tar
need_cmd find
rm -rf "$TMP_DIR"
mkdir -p "$TMP_DIR"
log "下载仓库归档: $REPO_URL ($REPO_REF)"
if command -v curl >/dev/null 2>&1; then
curl -fL --retry 3 --retry-delay 2 -o "$ARCHIVE_PATH" "$REPO_URL/archive/$REPO_REF.tar.gz"
elif command -v wget >/dev/null 2>&1; then
wget -O "$ARCHIVE_PATH" "$REPO_URL/archive/$REPO_REF.tar.gz"
else
fail "缺少 curl 或 wget"
fi
log "解压仓库归档"
tar -xzf "$ARCHIVE_PATH" -C "$TMP_DIR"
EXTRACTED_DIR="$(find "$TMP_DIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)"
[ -n "$EXTRACTED_DIR" ] || fail "解压失败"
rm -rf "$INSTALL_DIR"
mv "$EXTRACTED_DIR" "$INSTALL_DIR"
rm -rf "$TMP_DIR" "$ARCHIVE_PATH"
cd "$INSTALL_DIR"
log "调用仓库内 start.sh"
PT_REPO_URL="$REPO_URL" \
PT_REPO_REF="$REPO_REF" \
PT_SERVER="$PT_SERVER" \
PT_JAVA_ARGS="$PT_JAVA_ARGS" \
bash ./start.sh