From 4cceb7717c6b02a709565ad42f3c50c00e2eb7a8 Mon Sep 17 00:00:00 2001 From: ASUS <21531134@qq.com> Date: Thu, 7 May 2026 05:04:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?v1.0.5=20-=20=E4=BF=AE=E6=94=B9=E5=90=AF?= =?UTF-8?q?=E5=81=9C=E8=84=9A=E6=9C=AC=E6=8B=89=E5=8F=96=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++- install_server/install_server.sh | 247 +++++++++++++++++++++++-------- 2 files changed, 191 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 2efb61a..5ac13ab 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ # 一个基于 Ubuntu2204 制作的 欧卡自动化安装脚本 -## 一、拉取执行脚本 -### 1、拉取脚本 +## 一、快速部署 +一键安装脚本-推荐: ```bash -https://git.a-hxin.cn/ahxin/ets2-server/rss/branch/master/install_server/install_server.sh -``` -添加权限 -```bash - +curl -fsSL "https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh" | sudo bash ``` -执行 +单条执行: +```bash +sudo chown ubuntu:ubuntu install_server.sh +chmod +x install_server.sh +sudo bash install_server.sh +``` ## 二、 \ No newline at end of file diff --git a/install_server/install_server.sh b/install_server/install_server.sh index e86abe6..ccb0167 100644 --- a/install_server/install_server.sh +++ b/install_server/install_server.sh @@ -1,38 +1,76 @@ #!/usr/bin/env bash -# 2026年5月7日04点25分 -# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh +# 2026年5月7日-05点04分 +# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server.git set -Eeuo pipefail +export DEBIAN_FRONTEND=noninteractive +export NEEDRESTART_MODE=l + +REPO_HOST="https://git.a-hxin.cn/ahxin/ets2-server" +BRANCH="master" +RAW_BASE="${REPO_HOST}/raw/branch/${BRANCH}" + STEAM_USER="steam" STEAM_HOME="/home/steam" STEAMCMD_DIR="${STEAM_HOME}/steamcmd" ETS2_DIR="${STEAM_HOME}/ets2_sv" ETS2_DOC_DIR="${STEAM_HOME}/ets2_doc" - ETS2_BIN_DIR="${ETS2_DIR}/bin/linux_x64" -SCRIPT_REPO="https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/server/server.sh" -TMP_SCRIPT_DIR="${ETS2_BIN_DIR}/server" + +SERVER_SCRIPT_URL="${RAW_BASE}/server/server.sh" +SERVER_SCRIPT_PATH="${ETS2_BIN_DIR}/server.sh" + +ETS2_CMD="/usr/local/bin/ets2_sv" APP_ID="1948160" +while [ $# -gt 0 ]; do + case "$1" in + --branch) + BRANCH="$2" + RAW_BASE="${REPO_HOST}/raw/branch/${BRANCH}" + SERVER_SCRIPT_URL="${RAW_BASE}/server/server.sh" + shift 2 + ;; + *) + echo "[ERROR] 未知参数: $1" + exit 1 + ;; + esac +done + echo "========================================" echo " ETS2 Dedicated Server 一键部署脚本" -echo " System: Ubuntu" +echo " System: Ubuntu / Debian" +echo " Branch: ${BRANCH}" echo "========================================" if [ "$(id -u)" -ne 0 ]; then - echo "请使用 root 权限执行:" - echo "sudo bash install_ets2_server.sh" + echo "[ERROR] 请使用 root 权限执行:" + echo "curl -fsSL \"${RAW_BASE}/install_server/install_server.sh\" | sudo bash" exit 1 fi echo -echo "一、创建 steam 用户" +echo "一、检查系统环境" + +if [ -f /etc/os-release ]; then + . /etc/os-release + echo "[INFO] 当前系统: ${PRETTY_NAME:-unknown}" +fi + +if ! command -v apt-get >/dev/null 2>&1; then + echo "[ERROR] 当前脚本主要适配 Ubuntu / Debian,未检测到 apt-get" + exit 1 +fi + +echo +echo "二、创建 steam 用户" if id "${STEAM_USER}" >/dev/null 2>&1; then - echo "用户 ${STEAM_USER} 已存在,跳过创建" + echo "[OK] 用户 ${STEAM_USER} 已存在,跳过创建" else adduser \ --system \ @@ -43,33 +81,38 @@ else --home "${STEAM_HOME}" \ "${STEAM_USER}" - echo "用户 ${STEAM_USER} 创建完成" + echo "[OK] 用户 ${STEAM_USER} 创建完成" fi echo -echo "二、创建工作目录" +echo "三、创建工作目录" -mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}" +mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}" "${ETS2_BIN_DIR}" chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}" -echo "目录创建完成:" +echo "[OK] 目录创建完成:" echo "${STEAMCMD_DIR}" echo "${ETS2_DIR}" echo "${ETS2_DOC_DIR}" echo -echo "三、安装运行库" +echo "四、安装运行库" dpkg --add-architecture i386 || true -apt update +apt-get update -apt install -y \ +apt-get install -y \ + sudo \ curl \ ca-certificates \ tar \ gzip \ git \ + util-linux \ + coreutils \ + procps \ + iproute2 \ libc6:i386 \ libstdc++6:i386 \ libgcc-s1:i386 \ @@ -84,85 +127,151 @@ apt install -y \ libbz2-1.0:i386 \ libtinfo6:i386 -echo -echo "四、下载 SteamCMD" +echo "[OK] 运行库安装完成" -sudo -u "${STEAM_USER}" bash -c " - cd '${STEAMCMD_DIR}' && +echo +echo "五、下载 / 更新 SteamCMD" + +sudo -u "${STEAM_USER}" bash -lc " + mkdir -p '${STEAMCMD_DIR}' + cd '${STEAMCMD_DIR}' curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf - + chmod +x '${STEAMCMD_DIR}/steamcmd.sh' " -chmod +x "${STEAMCMD_DIR}/steamcmd.sh" || true +echo "[OK] SteamCMD 准备完成" echo -echo "五、安装 / 更新 ETS2 Dedicated Server" +echo "六、安装 / 更新 ETS2 Dedicated Server" -sudo -u "${STEAM_USER}" bash -c " +chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAMCMD_DIR}" "${ETS2_DIR}" + +set +e + +sudo -u "${STEAM_USER}" bash -lc " cd '${STEAMCMD_DIR}' && - '${STEAMCMD_DIR}/steamcmd.sh' \ - +force_install_dir '${ETS2_DIR}' \ + ./steamcmd.sh \ + +@sSteamCmdForcePlatformType linux \ +login anonymous \ + +app_info_update 1 \ + +force_install_dir '${ETS2_DIR}' \ +app_update '${APP_ID}' validate \ +quit " -echo -echo "六、安装 server.sh 管理脚本" +INSTALL_RESULT=$? -mkdir -p "${ETS2_BIN_DIR}" +if [ "${INSTALL_RESULT}" -ne 0 ]; then + echo "[WARN] 第一次安装失败,尝试清理 SteamCMD 缓存后重试..." -rm -rf "${TMP_SCRIPT_DIR}" + sudo -u "${STEAM_USER}" rm -rf "${STEAMCMD_DIR}/appcache" || true + sudo -u "${STEAM_USER}" rm -rf "${STEAM_HOME}/Steam/appcache" || true + sudo -u "${STEAM_USER}" rm -rf "${STEAM_HOME}/.steam/appcache" || true -sudo -u "${STEAM_USER}" git clone "${SCRIPT_REPO}" "${TMP_SCRIPT_DIR}" + sudo -u "${STEAM_USER}" bash -lc " + cd '${STEAMCMD_DIR}' && + ./steamcmd.sh \ + +@sSteamCmdForcePlatformType linux \ + +login anonymous \ + +app_info_update 1 \ + +force_install_dir '${ETS2_DIR}' \ + +app_update '${APP_ID}' validate \ + +quit + " -if [ -f "${TMP_SCRIPT_DIR}/server.sh" ]; then - mv "${TMP_SCRIPT_DIR}/server.sh" "${ETS2_BIN_DIR}/server.sh" - chmod +x "${ETS2_BIN_DIR}/server.sh" - rm -rf "${TMP_SCRIPT_DIR}" -else - echo "错误:没有找到 server.sh" + INSTALL_RESULT=$? +fi + +set -e + +if [ "${INSTALL_RESULT}" -ne 0 ]; then + echo "[ERROR] ETS2 Dedicated Server 安装失败" + echo + echo "可手动测试:" + echo "sudo -u steam bash -lc 'cd ${STEAMCMD_DIR} && ./steamcmd.sh +login anonymous +app_info_print ${APP_ID} +quit'" exit 1 fi +echo "[OK] ETS2 Dedicated Server 安装完成" + echo -echo "七、创建必要目录并设置权限" +echo "七、安装 server.sh 管理脚本" + +mkdir -p "${ETS2_BIN_DIR}" + +echo "[INFO] 下载地址:${SERVER_SCRIPT_URL}" + +curl -fsSL "${SERVER_SCRIPT_URL}" -o "${SERVER_SCRIPT_PATH}" + +chmod +x "${SERVER_SCRIPT_PATH}" +chown "${STEAM_USER}:${STEAM_USER}" "${SERVER_SCRIPT_PATH}" + +echo "[OK] server.sh 安装完成:${SERVER_SCRIPT_PATH}" + +echo +echo "八、修复 steamclient.so 链接" + +if [ -f "${ETS2_DIR}/linux64/steamclient.so" ]; then + sudo -u "${STEAM_USER}" mkdir -p "${STEAM_HOME}/.steam/sdk64" + + sudo -u "${STEAM_USER}" ln -sfn \ + "${ETS2_DIR}/linux64/steamclient.so" \ + "${STEAM_HOME}/.steam/sdk64/steamclient.so" + + echo "[OK] steamclient.so 链接完成" +else + echo "[WARN] 未找到 ${ETS2_DIR}/linux64/steamclient.so,跳过" +fi + +echo +echo "九、创建必要目录并设置权限" mkdir -p "${ETS2_BIN_DIR}/logs" mkdir -p "${ETS2_DOC_DIR}/Euro Truck Simulator 2" -chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_BIN_DIR}" -chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_DOC_DIR}" +chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}" -chmod -R 775 "${ETS2_BIN_DIR}" -chmod -R 775 "${ETS2_DOC_DIR}" +chmod -R 775 "${ETS2_BIN_DIR}" || true +chmod -R 775 "${ETS2_DOC_DIR}" || true + +echo "[OK] 权限设置完成" echo -echo "八、创建快捷命令" +echo "十、创建快捷命令 ets2_sv" -ln -sfn "${ETS2_BIN_DIR}/server.sh" /usr/local/bin/ets2_sv -chmod +x /usr/local/bin/ets2_sv +rm -f "${ETS2_CMD}" -echo -echo "九、是否立即执行一次 server.sh 初始化?" +cat > "${ETS2_CMD}" < Date: Thu, 7 May 2026 05:05:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?v1.0.5=20-=20=E4=BF=AE=E6=94=B9=E5=90=AF?= =?UTF-8?q?=E5=81=9C=E8=84=9A=E6=9C=AC=E6=8B=89=E5=8F=96=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install_server/install_server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_server/install_server.sh b/install_server/install_server.sh index ccb0167..abbec65 100644 --- a/install_server/install_server.sh +++ b/install_server/install_server.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# 2026年5月7日-05点04分 +# 2026年5月7日 # 项目地址: https://git.a-hxin.cn/ahxin/ets2-server.git set -Eeuo pipefail