Compare commits

..

No commits in common. "4c936245cd529d4bb37ec7ef211cc860bbd132b3" and "6ad1ba513d309a3989a5e8a52a03dbd12c564191" have entirely different histories.

2 changed files with 69 additions and 187 deletions

View File

@ -1,16 +1,15 @@
# 一个基于 Ubuntu2204 制作的 欧卡自动化安装脚本
## 一、快速部署
一键安装脚本-推荐:
## 一、拉取执行脚本
### 1、拉取脚本
```bash
curl -fsSL "https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh" | sudo bash
https://git.a-hxin.cn/ahxin/ets2-server/rss/branch/master/install_server/install_server.sh
```
添加权限
```bash
```
单条执行:
```bash
sudo chown ubuntu:ubuntu install_server.sh
chmod +x install_server.sh
sudo bash install_server.sh
```
执行
## 二、

View File

@ -1,76 +1,38 @@
#!/usr/bin/env bash
# 2026年5月7日
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server.git
# 2026年5月7日04点25分
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh
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"
SERVER_SCRIPT_URL="${RAW_BASE}/server/server.sh"
SERVER_SCRIPT_PATH="${ETS2_BIN_DIR}/server.sh"
ETS2_CMD="/usr/local/bin/ets2_sv"
SCRIPT_REPO="https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/server/server.sh"
TMP_SCRIPT_DIR="${ETS2_BIN_DIR}/server"
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 / Debian"
echo " Branch: ${BRANCH}"
echo " System: Ubuntu"
echo "========================================"
if [ "$(id -u)" -ne 0 ]; then
echo "[ERROR] 请使用 root 权限执行:"
echo "curl -fsSL \"${RAW_BASE}/install_server/install_server.sh\" | sudo bash"
echo "请使用 root 权限执行:"
echo "sudo bash install_ets2_server.sh"
exit 1
fi
echo
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 用户"
echo "一、创建 steam 用户"
if id "${STEAM_USER}" >/dev/null 2>&1; then
echo "[OK] 用户 ${STEAM_USER} 已存在,跳过创建"
echo "用户 ${STEAM_USER} 已存在,跳过创建"
else
adduser \
--system \
@ -81,38 +43,33 @@ else
--home "${STEAM_HOME}" \
"${STEAM_USER}"
echo "[OK] 用户 ${STEAM_USER} 创建完成"
echo "用户 ${STEAM_USER} 创建完成"
fi
echo
echo "、创建工作目录"
echo "、创建工作目录"
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}" "${ETS2_BIN_DIR}"
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}"
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
echo "[OK] 目录创建完成:"
echo "目录创建完成:"
echo "${STEAMCMD_DIR}"
echo "${ETS2_DIR}"
echo "${ETS2_DOC_DIR}"
echo
echo "、安装运行库"
echo "、安装运行库"
dpkg --add-architecture i386 || true
apt-get update
apt update
apt-get install -y \
sudo \
apt install -y \
curl \
ca-certificates \
tar \
gzip \
git \
util-linux \
coreutils \
procps \
iproute2 \
libc6:i386 \
libstdc++6:i386 \
libgcc-s1:i386 \
@ -127,151 +84,85 @@ apt-get install -y \
libbz2-1.0:i386 \
libtinfo6:i386
echo "[OK] 运行库安装完成"
echo
echo "五、下载 / 更新 SteamCMD"
echo "四、下载 SteamCMD"
sudo -u "${STEAM_USER}" bash -lc "
mkdir -p '${STEAMCMD_DIR}'
cd '${STEAMCMD_DIR}'
sudo -u "${STEAM_USER}" bash -c "
cd '${STEAMCMD_DIR}' &&
curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
chmod +x '${STEAMCMD_DIR}/steamcmd.sh'
"
echo "[OK] SteamCMD 准备完成"
chmod +x "${STEAMCMD_DIR}/steamcmd.sh" || true
echo
echo "、安装 / 更新 ETS2 Dedicated Server"
echo "、安装 / 更新 ETS2 Dedicated Server"
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAMCMD_DIR}" "${ETS2_DIR}"
set +e
sudo -u "${STEAM_USER}" bash -lc "
sudo -u "${STEAM_USER}" bash -c "
cd '${STEAMCMD_DIR}' &&
./steamcmd.sh \
+@sSteamCmdForcePlatformType linux \
+login anonymous \
+app_info_update 1 \
'${STEAMCMD_DIR}/steamcmd.sh' \
+force_install_dir '${ETS2_DIR}' \
+login anonymous \
+app_update '${APP_ID}' validate \
+quit
"
INSTALL_RESULT=$?
if [ "${INSTALL_RESULT}" -ne 0 ]; then
echo "[WARN] 第一次安装失败,尝试清理 SteamCMD 缓存后重试..."
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}" 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
"
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 "七、安装 server.sh 管理脚本"
echo "六、安装 server.sh 管理脚本"
mkdir -p "${ETS2_BIN_DIR}"
echo "[INFO] 下载地址:${SERVER_SCRIPT_URL}"
rm -rf "${TMP_SCRIPT_DIR}"
curl -fsSL "${SERVER_SCRIPT_URL}" -o "${SERVER_SCRIPT_PATH}"
sudo -u "${STEAM_USER}" git clone "${SCRIPT_REPO}" "${TMP_SCRIPT_DIR}"
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 链接完成"
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 "[WARN] 未找到 ${ETS2_DIR}/linux64/steamclient.so跳过"
echo "错误:没有找到 server.sh"
exit 1
fi
echo
echo "、创建必要目录并设置权限"
echo "七、创建必要目录并设置权限"
mkdir -p "${ETS2_BIN_DIR}/logs"
mkdir -p "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_BIN_DIR}"
chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_DOC_DIR}"
chmod -R 775 "${ETS2_BIN_DIR}" || true
chmod -R 775 "${ETS2_DOC_DIR}" || true
echo "[OK] 权限设置完成"
chmod -R 775 "${ETS2_BIN_DIR}"
chmod -R 775 "${ETS2_DOC_DIR}"
echo
echo "十、创建快捷命令 ets2_sv"
echo "八、创建快捷命令"
rm -f "${ETS2_CMD}"
ln -sfn "${ETS2_BIN_DIR}/server.sh" /usr/local/bin/ets2_sv
chmod +x /usr/local/bin/ets2_sv
cat > "${ETS2_CMD}" <<EOF
#!/usr/bin/env bash
echo
echo "九、是否立即执行一次 server.sh 初始化?"
SERVER_SCRIPT="${SERVER_SCRIPT_PATH}"
if [ ! -f "\$SERVER_SCRIPT" ]; then
echo "[ERROR] 找不到服务脚本: \$SERVER_SCRIPT"
exit 1
fi
if [ "\$(id -un)" = "${STEAM_USER}" ]; then
exec "\$SERVER_SCRIPT" "\$@"
if [ -t 0 ]; then
read -rp "是否现在执行一次?可能会进入服务器运行状态 [y/N]: " RUN_ONCE
case "${RUN_ONCE}" in
y|Y|yes|YES)
echo "正在以 steam 用户执行 server.sh..."
sudo -u "${STEAM_USER}" bash "${ETS2_BIN_DIR}/server.sh"
;;
*)
echo "已跳过首次执行"
;;
esac
else
exec sudo -u ${STEAM_USER} "\$SERVER_SCRIPT" "\$@"
echo "非交互环境,跳过首次执行"
fi
EOF
chmod +x "${ETS2_CMD}"
echo "[OK] 快捷命令创建完成:${ETS2_CMD}"
echo
echo "========================================"
echo "部署完成"
echo "========================================"
echo
echo "仓库地址:"
echo "${REPO_HOST}.git"
echo
echo "当前分支:"
echo "${BRANCH}"
echo
echo "服务器目录:"
echo "${ETS2_DIR}"
@ -280,22 +171,14 @@ echo "配置目录:"
echo "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
echo
echo "管理脚本:"
echo "${SERVER_SCRIPT_PATH}"
echo "${ETS2_BIN_DIR}/server.sh"
echo
echo "快捷命令:"
echo "ets2_sv"
echo
echo "下一步:"
echo "1. 上传 server_config.sii、server_packages.sii、server_packages.dat 到:"
echo " ${ETS2_DOC_DIR}/Euro Truck Simulator 2"
echo
echo "2. 检查配置:"
echo " ets2_sv check"
echo
echo "3. 前台调试启动:"
echo " ets2_sv debug"
echo
echo "4. 后台启动:"
echo " ets2_sv start"
echo "如需设置 steam 用户密码:"
echo "sudo passwd steam"
echo
echo "如需切换到 steam 用户:"
echo "su - steam"
echo "========================================"